Chatbot do Discourse 🤖

:information_source: Resumo O Chatbot de IA Original para Discourse
:hammer_and_wrench: Link do Repositório GitHub - merefield/discourse-chatbot: An AI bot with RAG capability for Topics, Chat & Customer Support in Discourse, currently powered by OpenAI · GitHub
:open_book: Guia de Instalação Como instalar plugins no Discourse
:heart: Patrocínio Considere se tornar um patrocinador contínuo do meu trabalho de código aberto em um nível que atenda aos recursos e necessidades da sua organização ou seus, para garantir que este plugin receba a manutenção que merece e continue funcionando para o seu site no futuro.

Gostando deste plugin? Por favor, dê um :star: no GitHub! :pray:

:information_source: Como este é um plugin contribuído de forma independente, por favor, faça solicitações de suporte, bugs, UX e recursos aqui neste tópico. NB Este plugin não está disponível no hospedagem da Discourse.org. Você pode instalá-lo se estiver auto-hospedado e possivelmente se estiver em hospedagem de terceiros (mas verifique com seu provedor).

O Chatbot de IA Original para Discourse

O Chatbot traz conversas de IA configuráveis para Tópicos, Mensagens Pessoais, canais de Chat e threads de Chat. Dê ao bot um personagem que se adeque à sua comunidade, decida quais grupos podem usá-lo e escolha diferentes modelos e ferramentas para usuários de baixa, média e alta confiança.

Ele pode:

  • responder normalmente a partir da conversa atual;
  • buscar conteúdo selecionado do fórum com busca semântica ou híbrida;
  • buscar na Wikipédia, notícias atuais e na web;
  • rastrear páginas remotas e recuperar dados de mercado de fim de dia;
  • realizar cálculos confiáveis baseados em expressões;
  • ver imagens enviadas e, opcionalmente, ler PDFs;
  • gerar e editar imagens;
  • coletar Campos de Usuário editáveis pendentes em conversas privadas;
  • escalar conversas de Chat privadas para grupos de staff configurados;
  • responder automaticamente a novos Tópicos em Categorias selecionadas; e
  • aceitar ferramentas adicionais fornecidas por outros plugins.

Para um fluxo de trabalho de suporte prático, veja Construindo um chatbot de suporte técnico.

Com a busca local do fórum habilitada, o bot pode fundamentar as respostas no conteúdo da sua comunidade:

Para conversas mais simples, exponha menos ou nenhuma ferramenta para reduzir chamadas, latência e custo:

Suporte a Provedores

Escolha provedores independentemente para respostas, embeddings, visão e geração de imagens. Cada capacidade reutiliza a chave de API pertencente ao provedor selecionado.

Capacidade OpenAI Anthropic Google Gemini xAI
Respostas de LLM e ferramentas :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Embeddings :white_check_mark: :white_check_mark: :white_check_mark:
Visão :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Geração de imagens :white_check_mark: :white_check_mark: :white_check_mark:
Edição de imagens Modelos GPT Image :white_check_mark:
Entrada de conversa via PDF :white_check_mark:

Se nenhuma URL personalizada estiver definida, o Chatbot usa o endpoint oficial embutido para o provedor selecionado. Nomes de modelos e URLs personalizados suportam Azure OpenAI, Ollama, proxies e outros serviços que implementam a forma de API de um provedor suportado.

Os menus suspensos de modelos específicos do provedor são exibidos apenas quando esse provedor está ativo. O modelo de resposta pode variar por nível de confiança, enquanto embeddings, visão e geração de imagens cada um têm seu próprio seletor de provedor e modelo.

Ler o guia completo de provedores e endpoints personalizados.

Acesso, cotas e ferramentas

Ninguém tem acesso até que você atribua grupos às configurações de baixa, média ou alta confiança do Chatbot. Os usuários herdam a cota, o modelo e a lista de permissões de ferramentas do seu nível de confiança do Chatbot mais alto correspondente. As cotas podem ser medidas por consultas ou tokens.

As ferramentas integradas são selecionadas independentemente para cada nível de confiança. Credenciais e configurações de suporte ainda controlam a disponibilidade em tempo de execução, portanto, selecionar uma ferramenta web sem sua chave de API não a expõe.

Leia sobre acesso e cotas e ferramentas por nível de confiança.

Busca local no fórum e privacidade

:biohazard: Por favor, entenda o escopo do embedding antes de habilitar a busca local no fórum.

A estratégia padrão benchmark_user faz o embedding de conteúdo visível para um usuário adequado no nível de confiança configurado. A estratégia categories faz o embedding de conteúdo de Categorias explicitamente selecionadas. A busca semântica é otimizada para velocidade e não repete uma verificação de visibilidade para cada pessoa que pergunta ao bot, portanto, o conteúdo correspondente pode ser compartilhado fora de sua audiência original se o escopo incluir conteúdo restrito.

Mensagens Pessoais nunca são incorporadas (embed). Mantenha o nível de confiança de benchmark baixo, evite Categorias privadas a menos que seu conteúdo possa ser divulgado a todos os usuários do Chatbot e remova local_forum_search dos níveis de confiança que não devem usá-lo.

Os provedores selecionados podem receber conteúdo de conversa, uploads, correspondências de busca incorporadas e resultados de ferramentas. Revise seus termos de retenção e uso de dados e divulgue esse processamento nos termos e na notificação de privacidade do seu fórum.

Ler o guia completo de embeddings, escopo e privacidade.

Início rápido

  1. Instale o plugin usando o procedimento normal de plugin auto-hospedado.
  2. Selecione chatbot_llm_provider, insira a chave de API desse provedor e escolha modelos para cada nível de confiança.
  3. Adicione grupos às configurações de acesso de baixa, média ou alta confiança e configure as cotas.
  4. Escolha as ferramentas integradas disponíveis para cada nível de confiança.
  5. Se você habilitar local_forum_search, configure seu provedor de embedding e revise cuidadosamente seu escopo.
  6. Mencione o bot, responda a ele, use o botão de acesso rápido ou configure um prompt de resposta automática de Categoria.

Exemplo rápido de OpenAI

  1. Crie uma chave de API da OpenAI e certifique-se de que a faturamento de API esteja habilitado.
  2. Defina chatbot_llm_provider para OpenAI e cole a chave em chatbot_open_ai_token.
  3. Deixe a URL personalizada em branco, escolha um modelo da OpenAI para cada nível de confiança que você pretende usar e adicione seu grupo de teste à configuração de acesso do Chatbot correspondente.
  4. Mencione o bot em um Tópico, Mensagem Pessoal ou Chat permitido para testá-lo.

O README do repositório é a fonte de verdade para pré-requisitos, todos os principais grupos de configuração, comportamento específico do provedor, endpoints personalizados, manutenção de embedding, personalização de prompt, depuração, desenvolvimento de extensão e desinstalação:

:books: Abrir o README completo

Funcionalidades de UI selecionadas

Categorias podem dar as boas-vindas a um novo Tópico e pedir ao bot que busque conteúdo relevante da comunidade:

O botão de acesso rápido opcional pode abrir um Chat ou Mensagem Pessoal direta com o bot:

A ferramenta de Campos de Usuário pode coletar campos vazios suportados em particular:

Coleta de Campos de Usuário

Suporte e patrocínio

Por favor, relate solicitações de suporte, bugs, feedback de UX e ideias de recursos neste tópico do Meta. Inclua o provedor, o nome do modelo, as configurações relevantes, o status HTTP e o corpo da resposta do provedor, removendo chaves de API e conteúdo privado.

Este trabalho depende do suporte da comunidade. Se o plugin for valioso para o seu site, por favor patrocine sua manutenção contínuo.

Patrocinadores do projeto

Patrocinador Nível Site
Surety Silver Plus suretyhome.com

Aviso legal

LLMs podem produzir saída convincente, mas incorreta. Teste o plugin de acordo com as necessidades da sua comunidade, entenda as implicações de privacidade e custo e aplique moderação apropriada. Os termos de saída gerada variam por provedor e jurisdição; revise os termos para todos os provedores que você habilitar.

104 curtidas
Building a technical support chatbot
Answer feature
Webhooks on chat messages?
How to check what prevents rake migrate?
Weekly Summary of AI topics
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Interact with discourse from Python?
Sidekiq not working
Locations Plugin :earth_africa:
Lessons from Colossal Caves
Issue after Rebuilding Discourse on Digital Ocean Droplet
Locations Plugin :earth_africa:
I have error when upgrade new version of discourse
I have error when upgrade new version of discourse
Site down after upgrade via SSH - how to fix?
2023: The Year in Review
Character count when writing description
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Is there an option to use Discourse Chat as a customer service type of chat?
Configure AI Chatbot for Trust Level 0 Access
Creating bot on discourse
AI Helper Plugin
Copy custom file in discourse container while build
Voice to text integration
Allow specifiy user different from guardian.user in chat services such as Chat::CreateMessage
How to add a ChatGPT trained AI to discourse?
Cannot get the js in my component to compile SyntaxError: Private field must be used in an enclosing class
Allow ChatBot to read PDFs so it can join in a group discussion
How to create a custom ChatGPT based bot?
Discourse and Coveo
Link for new DM / personal chat message with pre-filled information
UX IPhone issues
How to respond to automatic topics with AI
Comparison between discourse-ai AI Bot and merefield/discourse-chatbot
Allow multiple ‘new topic’ drafts
I have error when upgrade the latest discourse
Two different answers from gpt4o - one right, one wrong.. !?
Is the shortcut to start AI conversation a user setting or not?
Setting Form Templates with a tag
Recommendation: chatbot to support discussion in threads
Photography Mentor Bot
Grouped Site Settings under Headings in Plugins
Update Not Completed and Discourse not opening
Recommendation: chatbot to support discussion in threads
Discourse AI Topic Summary :robot:
Discourse AI Topic Summary :robot:
Hubot Adapter for Discourse
Hubot Adapter for Discourse
Verbose log
Making the case for a hard cap feature on user group AI usage for AI bots and AI Helper
LLMs and the impact on customer support
2024: The Year in Review
How to respond to automatic topics with AI
What User Information is Exposed to LLMs in Discourse AI
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Configure AI Chatbot for Trust Level 0 Access
Auto responder using AI
Locations Plugin :earth_africa:
Discourse AI Topic Summary :robot:
Discourse Chat Bridge (Telegram)
AI personas integration of the chat plugin: It would be great if site users could chat with AI personas
What's the best way to store data with a plugin?
Locations Plugin :earth_africa:
Locations Plugin :earth_africa:
Is there any built-in chatbot or conversational assistant available in Discourse?
ChatGPT Assistant Integration
Create posts with AI
Multisite vs multiple containers
Training a model on a site's posts?
How are we all feeling about ChatGPT and other LLMs and how they'll impact forums?
GPT-4 with vision available
Use AI to request summary and others things from topic
Upgrading from /admin/upgrade takes *very* long
Embed additional explainer text in Form Template
We need prompt chains: Allow custom AI persona tools to access LangChain.js and/or longer execution time
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Configure AI Chatbot for Trust Level 0 Access
Enabling AI Bot in Chat
When I start a conversation with the AI, it gives two answers to my question
Balancing Costs and Functionality in AI-Powered Forums
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)

Adicionei Jina.ai à lista de APIs suportadas que podem ser usadas para pesquisa na web e rastreamento na web. Uma chave serve a ambos os serviços. APIs existentes são usadas se você não remover suas chaves.

Houve duas razões principais:

  • o desempenho do rastreamento parece muito bom
  • eles oferecem um modelo de pagamento conforme o uso em vez de uma taxa mensal, o que me agrada e pode agradar a você.

Link nas configurações.

Obrigado pelo seu interesse no Discourse Chatbot.

Duas coisas podem ser relevantes:

  • O bot responderá a cada postagem se for invocado em um tópico com apenas um usuário até que mais pessoas participem do tópico
  • Por categoria, você pode fazer com que o Chatbot responda a cada novo tópico e pode dar instruções especiais sobre o que fazer, regidas por um prompt específico da categoria que você configurou nas configurações da categoria.

o bot será sempre invocado se você o @ mencionar, então não sei se você também pode utilizar esse recurso.

1 curtida

“Todas” as postagens? Ou apenas aquelas com uma palavra-chave? São dois requisitos diferentes?

Talvez você pudesse mencionar o Chatbot na resposta predefinida e o bot daria continuidade? Isso significaria duas postagens, mas pode funcionar.

Então, se sua resposta predefinida fosse “@Chatbot (ou como quer que você o tenha renomeado) por favor, lide com isso”, o Chatbot daria continuidade. Obviamente, você pode adaptar essa resposta.

Observe que o Chatbot pode responder a sussurros também (se configurado assim), então, se a resposta predefinida fosse em um sussurro, os usuários normais veriam apenas a resposta do Chatbot, o que pode parecer mais organizado.

Estou aberto a expandir a capacidade do Chatbot se você quiser me contratar para fazê-lo, desde que possamos chegar a uma solução suficientemente genérica que seja útil para outros, mas acho que faz sentido aproveitar o que já existe?

Pergunto-me se a melhor ação aqui seria adicionar uma capacidade de Sussurro ao Classificador de Postagens de IA? Você poderia contratar alguém para fazer um PR disso ou levantá-lo como um Contribute > Feature e torcer para que seja priorizado. Isso seria indiscutivelmente útil de forma genérica?

Fiz algumas simplificações no código aproveitando um recurso que foi adicionado à API da Open AI. Me avisem se encontrarem algum problema.

Decidi que era hora de chamar isso de 1.0.0 :champagne: :tada: :partying_face:

4 curtidas

Adicionada a capacidade de adicionar outras funções em plugins separados, para que você não precise manter um fork do repositório do Chatbot.

Exemplo de plugin de função aqui:

mas é claro que você poderia adicionar isso a qualquer plugin …

PR:

4 curtidas

@Festinger você resolveu isso?

\u003e Incorporação de postagem: Houve um problema, mas tentarei novamente até o limite: undefined method `destroy!’ for nil

Após a última atualização, comecei a receber o erro acima. Recebo esse erro especialmente quando se trata de imagens. Minha configuração do modo de visualização é: diretamente. Eu não estava recebendo tal erro antes.

Você se lembra de ter excluído uma Postagem (ou Tópico) logo após criar uma?

Este erro ocorrerá se você criar uma Postagem e depois excluí-la antes que ela tenha a chance de criar um embedding. Assim, quando você a exclui, o Chatbot tenta excluir um embedding inexistente, o que cria uma mensagem de log irritante, mas não causa danos :wink:

Se você conseguir pensar em uma maneira melhor de fazer isso, sinta-se à vontade para enviar um PR.

1 curtida

Ele deu um erro como este no problema enviado pelo usuário. Não foi algo que eu excluí.

Como o usuário viu isso? Isso está apenas nos logs?

Eu vi nos logs. Tenho acompanhado há um dia, especialmente o problema ocorre nas postagens de usuários que são membros há muito tempo. Se um novo membro abre um tópico com uma imagem, geralmente não há problema, nenhum erro é recebido. Quando usuários antigos abrem um tópico com uma imagem, há um problema.

Você pode compartilhar o backtrace?

Então por que o usuário lhe enviou um problema? O que eles lhe disseram? O usuário não deveria estar ciente de nenhum problema, ele apenas aparece nos logs?

Parece que seus “membros antigos” podem estar excluindo seus tópicos ou postagens recentes (pois sabem como fazer isso)?

Você tem alguma automação de qualquer tipo em vigor?

Não há destruição ao postar uma postagem contendo uma imagem, então não tenho certeza de como isso poderia acontecer.

Atualização: Acabei de fazer upload de uma imagem para um site e não consigo reproduzir.

1 curtida

SerpAPI está ok, e suas estatísticas mostram que a solicitação para usar o Google foi feita, mas o Chatbot afirma que não pode usar o Google. Essa situação já dura algum tempo, mas eu não reagi porque, no momento, a DAI também não queria usar o Google.

Nenhuma mensagem de erro.

1 curtida

O que acontece se você disser “pesquisar na web por …”?

O prompt interno é genérico, portanto, não assume o Google …

Deixe-me mostrar uma demonstração muito boa dessa poderosa capacidade:

(embora isso esteja usando a alternativa incluída jina.ai)

Eu tentei isso. O prompt do sistema continha “quando um usuário pede para pesquisar usando o Google, o usuário na verdade quer dizer que você deve usar a função de pesquisa na web à qual você tinha acesso”. Eu deletei essa parte e então tentei a redação de pesquisa na web no meu prompt de usuário — afinal, não está usando a API do Google. Sem sorte e resposta semelhante: Não consigo fazer pesquisa na web…

Isso é tudo que encontrei, mas não abre isso:

{
  "id": "chatcmpl-A1wT9Dp1fCIVSzRsVPhr3NnNCcPjW",
  "object": "chat.completion",
  "created": 1725026447,
  "model": "gpt-4o-2024-05-13",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_MvzexRPsDj6EGuXhuiFcmtrd",
            "type": "function",
            "function": {
              "name": "web_search",
              "arguments": "{\"query\":\"International Dog Day date, reason, and history\"}"
            }
          }
        ],
        "refusal": null
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1203,
    "completion_tokens": 20,
    "total_tokens": 1223
  },
  "system_fingerprint": "fp_157b3831f5"
}
2 curtidas

Posso viver sem isso porque meu objetivo é usar o Chatbot como um bot interno de perguntas e respostas, e o Jina pode resolver o problema de usar meu site principal de conteúdo (via WordPress).

Mas o resultado quando tentei pesquisar do mundo exterior não foi o esperado.

1 curtida

Vou ver se consigo reproduzir

1 curtida

Está funcionando para mim, seja via Serp API ou Jina.ai.

Você pode fornecer os “pensamentos internos” do bot do PM, por favor?

Pensamentos Internos
[
  {
    "role": "assistant",
    "content": "",
    "tool_calls": [
      {
        "id": "call_mKY7pfG54xRduRKCz5xee9E0",
        "type": "function",
        "function": {
          "name": "web_search",
          "arguments": "{\"query\":\"list of English butterflies\"}"
        }
      }
    ]
  },
  {
    "role": "tool",
    "tool_call_id": "call_mKY7pfG54xRduRKCz5xee9E0",
    "content": "A-Z de borboletas · A. Adonis Blue · B Black Hairstreak · Brimstone · Brown Argus · Brown Hairstreak · C Chalk Hill Blue · Chequered Skipper · Clouded Yellow · D."
  }
]
1 curtida

Deveríamos fazer isso usando PM? Estamos apenas poluindo este tópico.

Mas:

[
  {
    "role": "assistant",
    "content": "",
    "tool_calls": [
      {
        "id": "call_4xitHqRBJ8Wc1HI546r3Wj1U",
        "type": "function",
        "function": {
          "name": "web_search",
          "arguments": "{\"query\":\"International Dog Day date and history\"}"
        }
      }
    ]
  },
  {
    "role": "tool",
    "tool_call_id": "call_4xitHqRBJ8Wc1HI546r3Wj1U",
    "content": "Data e história do Dia Internacional do Cão: minha pesquisa sobre isso na internet falhou."
  }
]