Bot de IA - Ferramentas personalizadas

:bookmark: Este guia explica como criar, configurar e integrar ferramentas de IA personalizadas no plugin Discourse AI, permitindo que os administradores estendam as capacidades do bot com funções JavaScript definidas pelo usuário.

:person_raising_hand: Nível de usuário necessário: Administrador

Ferramentas são funcionalidades programáveis que podem ser usadas pelo bot de IA para executar tarefas específicas ou recuperar informações além de apenas respostas baseadas em texto. Essas ferramentas são scripts ou integrações que permitem ao bot interagir com APIs externas, manipular dados ou executar funções adicionais para estender suas capacidades.

Resumo

Esta documentação abrange:

  • Criação de uma nova ferramenta de IA personalizada
  • Configuração de parâmetros e scripts de ferramentas
  • APIs disponíveis para scripts de ferramentas
  • Integração de ferramentas personalizadas com personas de IA
  • Teste e solução de problemas de ferramentas personalizadas

Criação de uma nova ferramenta de IA personalizada

Para criar uma nova ferramenta de IA:

  1. Navegue até o Painel de Administração > Plugins > Discourse AI > Ferramentas
  2. Clique em “Nova Ferramenta” (você pode usar predefinições existentes para aprender sobre as opções)
  3. Preencha os seguintes campos:
    • Nome: O nome da ferramenta como apresentado ao LLM
    • Descrição: A descrição da ferramenta como apresentada ao LLM
    • Resumo: Resumo do que a ferramenta faz para ajudar os usuários (exibido nos detalhes)
    • Parâmetros: Defina as entradas que sua ferramenta precisa como apresentadas ao LLM
    • Script: O código JavaScript que alimenta sua ferramenta
  4. Clique em “Salvar”

Configuração de scripts de ferramentas

APIs disponíveis

Seus scripts de ferramentas têm acesso às seguintes APIs:

  1. Requisições HTTP:

    http.get(url, options)
    http.post(url, options)
    

    Use estas para interagir com serviços externos. Você pode usar options para especificar cabeçalhos HTTP:

    http.get(url, { headers: { Auth: "some value" } })
    http.post(url, { headers: { Auth: "some value", body: "some body" } })
    http.patch(url, { headers: { Auth: "some value", body: "some body" } })
    http.delete(url, { headers: ...})
    http.put(url, { headers: ... , body: ...})
    
  2. Integração LLM (Modelo de Linguagem):

    llm.truncate(text, length)
    

    Isso permite que você manipule texto dentro dos limites de tokens do modelo de IA.

  3. Integração de upload personalizado (RAG)

    index.search(query, { filenames: options, limit: max_fragments_optional })
    
  4. Suporte à criação de upload

    upload.create(filename, base_64_content)
    
  5. Controle da cadeia de execução

    chain.setCustomRaw(raw) - define o corpo da postagem na cadeia.
    

Funções necessárias

Seu script deve implementar:

  • invoke(params): A função principal que executa quando a ferramenta é chamada

Opcionalmente, pode implementar:

  • details(): (Opcional) Fornece informações adicionais sobre a execução da ferramenta

Exemplo de script:

function invoke(params) {
  let result = http.get("https://api.example.com/data?query=" + params.query);
  return JSON.parse(result.body);
}

function details() {
  return "Fetched data from Example API";
}

Limitações e segurança

  • Tempo Limite de Execução: As ferramentas têm um tempo limite padrão de 2 segundos
  • Requisições HTTP: Máximo de 20 requisições por execução de ferramenta
  • Ambiente Sandboxed: Sem acesso ao sistema de arquivos do servidor ou bibliotecas Ruby

Testando sua ferramenta

Você deve testar qualquer ferramenta que construir para garantir que os resultados fornecidos ao LLM correspondam às suas expectativas.

Integrando ferramentas com personas de IA

Para adicionar sua ferramenta personalizada a uma Persona de IA:

  1. Vá para Painel de Administração > Plugins > Discourse AI > Personas
  2. Edite uma persona existente ou crie uma nova
  3. Na seção “Ferramentas”, você verá suas ferramentas personalizadas listadas ao lado das ferramentas integradas
  4. Selecione sua ferramenta personalizada para adicioná-la à persona

Ferramentas personalizadas em ação

Depois de fornecer a ferramenta personalizada ao seu LLM, ele pode usá-la para aprimorar a conversa.

Solução de problemas

Se sua ferramenta não estiver funcionando como esperado:

  1. Use a interface de Teste para garantir que ela se comporte como esperado para suas entradas.
  2. Certifique-se de que seu grupo esteja em ai_bot_debugging_allowed_groups. Membros deste grupo têm acesso total às transcrições do bot; você pode ver os logs da IA lá.
  3. Se algo inesperado estiver acontecendo, visite https://NOMEDOSITE/logs para verificar se há erros.

Recursos adicionais

14 curtidas

Estou apenas começando a criar ferramentas para personas de IA no Discourse, em parte para poder me concentrar totalmente nisso; isso parece muito útil, dado o quão muitas APIs úteis e públicas existem!

Por exemplo, estou obtendo resultados como:

Compreendendo a Tomada de Decisão Através de Estratégias de Poker AI

maiki:

Crie um infográfico para Breath of the Wild.

gpt-4o:

Aqui está um cartão de informações para “The Legend of Zelda: Breath of the Wild”:


Título: The Legend of Zelda: Breath of the Wild
Desenvolvedor: Nintendo
Editora: Nintendo
Data de Lançamento: 3 de março de 2017
Plataformas: Nintendo Switch, Wii U
Gênero: Ação-aventura
Modo: Um jogador

Sinopse:
Ambientado em um vasto mundo aberto, os jogadores controlam Link, que desperta de um sono profundo para derrotar Calamity Ganon e salvar o reino de Hyrule. O jogo é elogiado por seu ambiente imersivo, permitindo aos jogadores explorar e interagir livremente com o mundo e seus sistemas.

Prêmios:
O jogo ganhou inúmeros prêmios, incluindo vários prêmios de Jogo do Ano, por seu design inovador, mundo expansivo e jogabilidade encantadora.

Mais informações: Entrada Wikidata


“Breath of the Wild” é renomado por redefinir jogos de mundo aberto e oferecer uma experiência cativante que incentiva a exploração e a descoberta.

maiki:

O mesmo para Animal Crossing: New Horizons.

gpt-4o:

Aqui está um cartão de informações para “Animal Crossing: New Horizons”:


Título: Animal Crossing: New Horizons
Desenvolvedor: Nintendo
Editora: Nintendo
Data de Lançamento: 20 de março de 2020
Plataforma: Nintendo Switch
Gênero: Simulação social
Modo: Um jogador, Multijogador

Sinopse:
Neste charmoso jogo de simulação social, os jogadores assumem o papel de um personagem personalizável que se muda para uma ilha deserta após comprar um pacote de Tom Nook. O jogo permite exploração em tempo real, coleta de recursos, criação e personalização, promovendo uma experiência de jogo comunitária e relaxante.

Prêmios:
O jogo foi aclamado por sua liberdade criativa e momento de lançamento, recebendo prêmios de Jogo do Ano e suas contribuições para jogos sociais durante a pandemia global.

Mais informações: Entrada Wikidata


“Animal Crossing: New Horizons” tornou-se um fenômeno cultural, celebrado por seus recursos sociais envolventes e jogabilidade que alivia o estresse em tempos difíceis.

maiki:

A Long Way from Chicago

gpt-4o:

Aqui está um cartão de informações para o livro “A Long Way from Chicago”:


Título: A Long Way from Chicago
Autor: Richard Peck
Ano de Publicação: 1998
Gênero: Ficção Histórica, Jovem Adulto
ISBN: 978-0141303529

Sinopse:
Este romance vencedor da Newbery Honor é uma série de contos que narram as viagens anuais de verão de Joey e sua irmã Mary Alice de Chicago para uma cidade rural de Illinois para visitar sua avó Dowdel, uma figura maior que a vida, no final dos anos 1920 e 1930. Cada capítulo apresenta um episódio divertido e comovente que transmite lições de vida no contexto da Grande Depressão.

Prêmios:
O livro foi premiado com uma Newbery Honor em 1999 e é celebrado por seu humor, profundidade e retrato da vida rural americana no início do século XX.

Mais informações: Entrada Wikidata


Este livro é apreciado por sua narrativa nostálgica e emocionante, capturando a essência dos laços familiares e tempos mais simples.

maiki:

Thinking in Bets

gpt-4o:

Anteriormente, encontrei a entrada Wikidata para “Thinking in Bets”, mas no momento não consigo recuperar mais detalhes específicos diretamente do Wikidata. No entanto, aqui está um breve cartão baseado nas informações disponíveis:


Título: Thinking in Bets: Making Smarter Decisions When You Don’t Have All the Facts
Autor: Annie Duke
Ano de Publicação: 2018
Gênero: Não ficção, Tomada de Decisão, Psicologia
ISBN: 978-0735216358

Sinopse:
O livro utiliza insights do pôquer para ajudar os leitores a entender a tomada de decisões sob incerteza. Annie Duke, combinando suas experiências como jogadora profissional de pôquer e psicóloga cognitiva, oferece um quadro para tomar decisões mais inteligentes, avaliar resultados e adotar uma mentalidade probabilística.

Mais informações: Entrada Wikidata


Para insights detalhados, você pode considerar verificar recursos adicionais ou bancos de dados relacionados a publicações de livros.


Ok, isso está bom, mas notei esta descrição…

…e me pergunto: devo construir meus prompts referindo-me diretamente a essas ferramentas, para uso eficiente?

Minha abordagem geral para a escrita de prompts é refinar ao longo do tempo e, em seguida, fixar um padrão de comportamento que desejo que a ferramenta de IA adote. No entanto, se eu pudesse adicionar instruções específicas sobre, por exemplo, quando procurar uma entidade Wikidata e quando listar todas as reivindicações de uma entidade específica (duas APIs diferentes), então sinto que poderia refinar todo o fluxo de trabalho para fluir como pretendo… :star_struck:

3 curtidas

De fato, explicar claramente a ferramenta e fornecer exemplos no prompt do sistema é benéfico.

2 curtidas

É possível inserir a chave de API e o projeto OpenAI das configurações do administrador em uma ferramenta personalizada?

1 curtida

Você pode fazer chamadas REST de uma ferramenta personalizada e especificar todos os cabeçalhos

2 curtidas

acabei de perceber kkkk… desculpe pela gafe

1 curtida

Fiz o upload de alguns documentos para uma persona, ela gerou os embeddings e agora pode fazer busca semântica sobre eles. Mas em alguns casos, a busca semântica não é ideal, então gostaria de aprimorá-la e ter busca híbrida, por exemplo, manter o que já existe e adicionar busca por palavra-chave. No momento, se eu quiser fazer isso, terei que escrever uma ferramenta personalizada, certo?
Sei que poderia simplesmente publicar os documentos como tópicos e então funcionaria nativamente com a busca do Discourse, mas isso não é uma opção no momento.