# Chatbot do Discourse 🤖

**URL:** https://meta.discourse.org/t/discourse-chatbot/256652
**Category:** Plugin
**Tags:** ai
**Created:** [Março 1, 2023, 11:08am UTC](https://meta.discourse.org/t/discourse-chatbot/256652 "2023-03-01T11:08:25Z")
**Posts on this page:** 20
**Page:** 4

<div class="post-metadata">

### Author: ![exlabs](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/exlabs/32/437527_2.png) [@exlabs](https://meta.discourse.org/u/exlabs)
#### Post date: [Outubro 4, 2024, 3:01pm UTC](https://meta.discourse.org/t/discourse-chatbot/256652/965 "2024-10-04T15:01:56Z")

</div>

Olá a todos,

Criei uma conta na OpenAI agora. Devo criar um [“Assistente”](https://platform.openai.com/docs/assistants/overview)? Estou apenas me perguntando se há alguma etapa a seguir para integrar a IA ao plugin?

Atenciosamente,

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [Outubro 4, 2024, 3:10pm UTC](https://meta.discourse.org/t/discourse-chatbot/256652/966 "2024-10-04T15:10:48Z")

</div>

Não, tudo o que você precisa é de um token. Pode ser necessário creditar sua conta na Open AI para ter acesso aos modelos mais avançados e limites de taxa mais altos.

Todo o material da API é tratado pelo plugin.

(Aliás, curiosidade - o Chatbot explicitamente _não_ suporta a API Assistants porque implementa seu próprio sistema de conversação e “pensamento interno” utilizando apenas a API Chat Completions e a API Embeddings. Isso é ótimo porque a API Assistants tem a reputação de ser pródiga com tokens e custar muito dinheiro - o Chatbot é construído para ser econômico!)

---

<div class="post-metadata">

### Author: ![exlabs](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/exlabs/32/437527_2.png) [@exlabs](https://meta.discourse.org/u/exlabs)
#### Post date: [Outubro 4, 2024, 3:24pm UTC](https://meta.discourse.org/t/discourse-chatbot/256652/967 "2024-10-04T15:24:19Z")

</div>

Uau, faz muito mais do que eu imaginava.

Você poderia explicar o que é um token no mundo do ChatGPT? Estou pagando pelo ChatGPT premium no momento, são 20 USD/mês. O que eu estava visando era permitir que nossos usuários do Discourse acessassem a IA que tenho treinado, no [chatgpt.com](http://chatgpt.com)

Espero que isso faça sentido e que o caso de uso esteja claro!

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [Outubro 6, 2024, 7:23am UTC](https://meta.discourse.org/t/discourse-chatbot/256652/968 "2024-10-06T07:23:00Z")

</div>

É como dinheiro. Você pode pensar em tokens como palavras ou partes de palavras. Quando você pergunta algo, isso vale uma quantidade X de tokens. Quando a OpenAI processa sua pergunta, ela usa mais tokens. E, por último, quando sua resposta é criada, isso custa uma quantidade de tokens.

Dependendo do modelo usado e da conversa, você tem que pagar por esse uso de tokens, às vezes mais e às vezes menos.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [Outubro 6, 2024, 7:38am UTC](https://meta.discourse.org/t/discourse-chatbot/256652/969 "2024-10-06T07:38:00Z")

</div>

A capacidade de usar o1 mudou bastante o meu uso de IA (e graças… não a Deus, mas às habilidades de codificação de Robert, posso limitar seu uso apenas para mim). Mas a série o1 não usa um prompt de sistema, então tenho que adicionar essa orientação, como mostrar matemática, etc., no meu prompt.

Seria mais fácil se tivéssemos um texto padrão para adicionar automaticamente após o prompt real, ou seja, um post. O Discourse tem, de certa forma, essa capacidade, mas ou não consigo usá-la ou estou tentando usá-la errado. Deveria aparecer em todas as categorias e mensagens privadas quando o Chatbot for mencionado ou fizer parte de uma mensagem privada. E apenas quando o1 ou o1-mini for usado 🥴

A série o1 ainda não está pronta, então pode mudar em algum momento como ela pode usar ferramentas, etc. Então, nesse sentido, não estou pedindo um novo recurso, mas talvez discutindo opções. E a série o1 nunca será uma solução em massa, é muito especializada (e cara), então a demanda onde um usuário apenas deve se lembrar de adicionar essas regras extras pode ser justificada.

Fora do tópico, mas os modelos GPT aprenderam matemática quando o o1 foi publicado.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [Outubro 6, 2024, 7:42am UTC](https://meta.discourse.org/t/discourse-chatbot/256652/970 "2024-10-06T07:42:08Z")

</div>

Sim, não podemos nos aprofundar muito na personalização para compensar as inconsistências da OpenAI.

Suspeito fortemente que ferramentas e possivelmente até recursos de prompt do sistema virão quando o o1 sair da pré-visualização.

Não estou convencido de que o Chatbot seja o lugar para implementar um sistema de “trechos”, embora eu me lembre de um dos membros da equipe criando isso, deixe-me encontrá-lo e atualizar a postagem…

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [Outubro 6, 2024, 7:44am UTC](https://meta.discourse.org/t/discourse-chatbot/256652/971 "2024-10-06T07:44:50Z")

</div>

Aqui está:

> [@Insertable, centrally maintained text/markdown snippets](https://meta.discourse.org/t/insertable-centrally-maintained-text-markdown-snippets/97246/2?u=merefield):
>
> One possible option is to use a theme component. This goes in header.html \<script type="text/discourse-plugin" version="0.8"\> var disclaimer = settings.Disclaimer\_text, disclaimer\_selector = 'div[data-theme="disclaimer"]'; $.fn.disclaimer = function() { if (!this.length) { return; } else { this.each(function() { $(this).html(disclaimer); }); return this; } }; api.decorateCooked($elem =\> $elem.children(disclaimer\_selector).disclaimer()); // create composer butto…

---

<div class="post-metadata">

### Author: ![exlabs](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/exlabs/32/437527_2.png) [@exlabs](https://meta.discourse.org/u/exlabs)
#### Post date: [Outubro 6, 2024, 10:07pm UTC](https://meta.discourse.org/t/discourse-chatbot/256652/972 "2024-10-06T22:07:41Z")

</div>

Obrigado @Jagster pelas informações muito claras. Acho que eu estava querendo dizer algo diferente, talvez? Estou tentando integrar este plugin com OpenAI usando isto,

 ![image](https://global.discourse-cdn.com/meta/original/4X/c/2/c/c2c06453fe9061be35ff18412aa4c68cc92e378c.png). Estou apenas tentando obter algumas informações básicas sobre como conectar as coisas.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [Outubro 6, 2024, 10:13pm UTC](https://meta.discourse.org/t/discourse-chatbot/256652/973 "2024-10-06T22:13:46Z")

</div>

Essa é apenas uma chave de API que você gerará para obter acesso. Nada mais, sua senha, poderíamos dizer.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [Outubro 7, 2024, 5:52am UTC](https://meta.discourse.org/t/discourse-chatbot/256652/974 "2024-10-07T05:52:32Z")

</div>

Ah, agora entendo a confusão.

Sim, existe um _token_ de API (ou chave, que você precisa obter da OpenAI) e existem _tokens_ de texto que representam partes de palavras. Estes últimos são processados pelo LLM. O primeiro serve para que você seja autenticado pela API.

Aqui está um guia muito bom sobre a terminologia do The Verge:

> **[AI is confusing — here’s your cheat sheet](https://www.theverge.com/24201441/ai-terminology-explained-humans)**
>
> What the words behind generative AI tools actually mean.

---

<div class="post-metadata">

### Author: ![Amicable](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/amicable/32/68902_2.png) [@Amicable](https://meta.discourse.org/u/Amicable)
#### Post date: [Outubro 9, 2024, 10:36am UTC](https://meta.discourse.org/t/discourse-chatbot/256652/975 "2024-10-09T10:36:12Z")

</div>

Estou executando o Llama localmente e estou muito perto de fazer isso funcionar em uma instância local do Discourse. O chatbot está conversando 🕶 mas estou com dificuldades para fazer a incorporação. Tenho meu usuário de benchmark no Nível de Confiança 1. A tarefa rake `rake chatbot:refresh_embeddings[1]` está falhando com um problema de autenticação.

`Faraday::UnauthorizedError: o servidor respondeu com status 401 (Faraday::UnauthorizedError)`

Dentro do campo de token do chatbot open ai, colei a URL que o Llama me deu

 ![A imagem é uma captura de tela de uma interface de chatbot onde um usuário solicitou uma URL personalizada exclusiva. (Legenda da IA)](https://global.discourse-cdn.com/meta/original/4X/5/3/1/5310fee5207ea072fb13f6c21ad827d88e745496.png)

 ![image](https://global.discourse-cdn.com/meta/original/4X/e/4/c/e4c6e4c51d2c40509975b81e2f5cf5b0b9a55443.png)

Você teria alguma sugestão de como devo me autenticar corretamente?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [Outubro 9, 2024, 2:53pm UTC](https://meta.discourse.org/t/discourse-chatbot/256652/976 "2024-10-09T14:53:06Z")

</div>

Ótimo que você tentou!

> [@Amicable](#):
>
> O Chatbot está conversando 🕶 mas estou com dificuldades para fazer o embedding.

Fico feliz que esteja conversando 😄

Não sei se é possível usar o Chatbot com embeddings localmente.

Eu aceitaria um bom PR para adicionar suporte.

Encontrei isto:

> **[Embedding models · Ollama Blog](https://ollama.com/blog/embedding-models)**
>
> Embedding models are available in Ollama, making it easy to generate vector embeddings for use in search and retrieval augmented generation (RAG) applications.

Portanto, pode ser possível com o modelo certo e o código e configurações adicionais relevantes no Chatbot. Você provavelmente precisaria de uma configuração de modelo de embeddings personalizado que ainda não existe.

Já existe isto, no entanto:

`chatbot open ai embeddings model custom url`

que foi implementado principalmente para ajudar a suportar o Azure, mas pode ser reutilizado de forma semelhante a como os Completions de Chat podem apontar para o serviço local do ollama.

Aprecio que isso atualmente limita a utilidade do bot localmente.

> [@Amicable](#):
>
> Você teria alguma sugestão de como devo autenticar corretamente?

Este é o token enviado para o endpoint. É simplesmente um campo de texto. Duvido muito que uma URL aqui funcione. Existem configurações de URL de endpoint de completamento de chat personalizadas mais abaixo:

por exemplo, `chatbot open ai model custom url high trust`

Se você fizer um fork e adicionar as adições relevantes que estão alinhadas com o que já existe, aproveita o que já está disponível, mas adiciona o mínimo necessário para alcançar o suporte de embeddings local com ollama, mantendo o comportamento existente com Open AI e Azure intacto, eu definitivamente revisaria um PR com vista a mesclar.

---

<div class="post-metadata">

### Author: ![Amicable](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/amicable/32/68902_2.png) [@Amicable](https://meta.discourse.org/u/Amicable)
#### Post date: [Outubro 9, 2024, 3:14pm UTC](https://meta.discourse.org/t/discourse-chatbot/256652/977 "2024-10-09T15:14:03Z")

</div>

> [@merefield](#):
>
> Encontrei isto:
> 
> [Embedding models · Ollama Blog](https://ollama.com/blog/embedding-models)
> 
> Portanto, pode ser possível com o modelo certo e código e configurações adicionais relevantes no Chatbot.

> Em breve  
> Mais recursos estão chegando para dar suporte a fluxos de trabalho que envolvem embeddings:  
> …  
> Compatibilidade com a API OpenAI: suporte para o endpoint compatível com a API OpenAI /v1/embeddings

Dado que _em breve_ é geralmente muito em breve neste domínio de rápida evolução, talvez valha a pena esperar por isto para resolver o meu caso de uso?

Nossa instância é uma fonte de informação que remonta a 20 anos, mas a vazamento de informações também é uma grande preocupação, daí o desejo de testes locais.

---

<div class="post-metadata">

### Author: ![Amicable](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/amicable/32/68902_2.png) [@Amicable](https://meta.discourse.org/u/Amicable)
#### Post date: [Outubro 9, 2024, 4:20pm UTC](https://meta.discourse.org/t/discourse-chatbot/256652/978 "2024-10-09T16:20:15Z")

</div>

Eu acho que [encontrei um PR do Ollama que parece resolver a compatibilidade do endpoint da API](https://github.com/ollama/ollama/issues/2416#issuecomment-2256807748). Preciso entender isso melhor, mas estou no caminho certo?

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [Outubro 9, 2024, 4:23pm UTC](https://meta.discourse.org/t/discourse-chatbot/256652/979 "2024-10-09T16:23:28Z")

</div>

no momento não há configuração para modelo de embeddings personalizado, então isso é um impedimento.

ao executar localmente, você pode tentar codificando o modelo para aquele que você baixou para o ollama.

pensando mais sobre isso, o outro problema que você enfrentará é que a definição da tabela de embeddings tem dimensões definidas para o padrão do modelo pequeno da OpenAI, que é ENORME… talvez você possa pensar em como superar isso…

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [Outubro 15, 2024, 11:43am UTC](https://meta.discourse.org/t/discourse-chatbot/256652/980 "2024-10-15T11:43:39Z")

</div>

**Chatbot 1.2**. introduz a coleta de Campos de Usuário com IA como um recurso _experimental_.

Se um Usuário tiver alguns Campos de Usuário Opcionais que estão em branco no momento, habilitar esta configuração fará com que o bot comece a solicitar as informações ao usuário. Ele progredirá pelos Campos de Usuário pendentes até que sejam concluídos e, em seguida, reverterá ao comportamento normal.

![image](https://cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/1/6/8/168a778c187b0183f1eb19475dd3a7422476497d.png)

 ![A interface do usuário de um aplicativo móvel é exibida, com um design limpo e organizado. (Legenda por IA)](https://global.discourse-cdn.com/meta/original/4X/c/3/9/c39fb454363dbaf33c614a15a15a8a078b7fe876.png)

(desculpe pela lentidão da resposta - isto foi gravado em desenvolvimento)

NB Este recurso suporta apenas:

- Texto
- Menus suspensos
- Confirmações

Seleção múltipla ainda não é suportada.

Os campos devem ser _opcionais_

A ordem dos Campos de Usuário determina a prioridade.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [Outubro 22, 2024, 11:56am UTC](https://meta.discourse.org/t/discourse-chatbot/256652/981 "2024-10-22T11:56:40Z")

</div>

**Chatbot 1.3 foi lançado** 🎉

- RECURSO: adicionar opção para gerenciar cotas por token
  - a nova configuração `chatbot_quota_basis` permite que você opte por ela, caso contrário, ela permanecerá por número de consultas
  - a única diferença por padrão é que a cota conta _para baixo_ a partir da cota máxima inicial (que ainda é baseada nas mesmas configurações de nível de confiança).

- RECURSO: incluir custo de chamadas de API como DALL-E no consumo do usuário
  - apenas base de token
  - várias novas configurações para ajustar e influenciar o custo de token dos recursos da API

- RECURSO: adicionar função para permitir que o usuário verifique sua cota restante

> <https://github.com/merefield/discourse-chatbot/pull/124>
>
> \* FEATURE: add option to manage quotas by token
> \* new setting \`chatbot\_quota…\_basis\` allows you to opt in, otherwise it remains by query number
> \* the only difference by default is that the quota counts \_down\_ from the starting max quota (which is still based on same trust level settings).
> \* FEATURE: include cost of API calls like DALL-E in user consumption
> \* token basis only
> \* various new settings to tweak to influence token cost of API features
> \* FEATURE: add function to allow user to check their remaining quota

O Chatbot sempre incluiu a capacidade de impor uma cota de uso.

Hoje, isso se torna mais sofisticado!

O Chatbot agora pode rastrear e impor uma cota de uso por token.

Você pode calcular o custo de chamadas para APIs para desencorajar o uso excessivo, para que você possa se preocupar menos em dar às pessoas acesso à geração de imagens, por exemplo.

O rastreamento de tokens é opcional. Se você mudar para o rastreamento de tokens, certifique-se de aumentar a cota de cada nível de confiança, pois os valores precisarão ser algumas ordens de magnitude maiores. Experimente.

No entanto, o rastreamento por consulta mudou ligeiramente. Agora ele será redefinido para o seu número máximo de consultas permitidas e contará _para baixo_ até zero.

Você pode considerar executar o trabalho de redefinição de cota global _uma vez_ como um evento único para garantir que todos comecem com uma cota completa. Isso é um evento único!

No sidekiq em `/sidekiq/scheduler`:

 ![Esta imagem retrata o painel de um desenvolvedor de software com uma tabela com colunas para dados de worker e um botão vermelho Trigger no canto inferior direito. (Legenda por IA)](https://global.discourse-cdn.com/meta/original/4X/5/4/1/541990702a780b4f803e18c556a5497ce3fad6aa.png)

Clique no botão trigger.

Em ambos os casos, os usuários agora podem perguntar quanta cota lhes resta:

 ![A imagem mostra uma captura de tela de um chat de texto, provavelmente entre um humano e um bot, com fundo cinza escuro e texto branco. (Legenda por IA)](https://global.discourse-cdn.com/meta/original/4X/c/4/9/c49226dd842ac8ff9ce0f92eb7afe56994844503.png)

NB: problema conhecido: se essa pergunta for feita pela primeira vez _antes_ que o trabalho de redefinição tenha sido executado, a resposta pode ser um pouco estranha! Independentemente da execução do trabalho de redefinição, na segunda vez que essa pergunta for feita, ela deverá funcionar bem.

---

<div class="post-metadata">

### Author: ![Epoch](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/epoch/32/455691_2.png) [@Epoch](https://meta.discourse.org/u/Epoch)
#### Post date: [Outubro 29, 2024, 1:41am UTC](https://meta.discourse.org/t/discourse-chatbot/256652/982 "2024-10-29T01:41:43Z")

</div>

Olá Robert,

Agradeço todo o trabalho que você dedicou ao bot, no entanto, estou recebendo o seguinte erro nos logs ao tentar invocá-lo no chat.

![image](https://cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/optimized/4X/e/d/b/edb37a5a255174755fe512ee1fbb5fc5c862fa28_2_690x20.png)

Alguma ideia sem desinstalar/reinstalar?

---

<div class="post-metadata">

### Author: ![willie](https://avatars.discourse-cdn.com/v4/letter/w/838e76/32.png) [@willie](https://meta.discourse.org/u/willie)
#### Post date: [Outubro 29, 2024, 2:29am UTC](https://meta.discourse.org/t/discourse-chatbot/256652/983 "2024-10-29T02:29:27Z")

</div>

Olá Robert, posso colocar este bot como moderador? Tentei, mas nem sequer tenho a opção com o bot.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [Outubro 29, 2024, 5:45am UTC](https://meta.discourse.org/t/discourse-chatbot/256652/984 "2024-10-29T05:45:02Z")

</div>

Esse primeiro erro não tem nada a ver com o Chat (“Post Embedding”). Este é inofensivo e ocorre quando você exclui uma Postagem logo após a criação, antes que o sistema tenha tempo de criar um embedding. O evento de exclusão inicia um trabalho para excluir o embedding correspondente, que, nesses casos, está faltando. Você pode ignorá-lo.

Você pode compartilhar o backtrace do segundo erro, por favor? (da aba de log).

Para invocar o bot do Chat, você deve mencionar o bot com @ ou usar o recurso de Acesso Rápido ativado nas configurações do plugin. Você também deve garantir que o bot esteja ativado para o Chat (também nas configurações do plugin).

Observe que o bot atualmente não suporta Tópicos de Chat… funciona apenas no nível superior do Chat. Você está tentando acessar em um Tópico?

[Página anterior](https://meta.discourse.org/t/discourse-chatbot/256652.md?page=3)

[Próxima página](https://meta.discourse.org/t/discourse-chatbot/256652.md?page=5)
