Chatbot di Discourse 🤖

:information_source: Sommario Il Chatbot AI originale per Discourse
:hammer_and_wrench: Link al repository GitHub - merefield/discourse-chatbot: An AI bot with RAG capability for Topics, Chat & Customer Support in Discourse, currently powered by OpenAI · GitHub
:open_book: Guida all’installazione Come installare i plugin in Discourse
:heart: Sponsorizzazione Prendi in considerazione di diventare un sponsor ricorrente del mio lavoro open source a un livello adatto alle risorse e alle esigenze tue o della tua organizzazione, per garantire che questo plugin riceva la manutenzione che merita e continui a funzionare sul tuo sito in futuro.

Ti piace questo plugin? Per favore :star: it su GitHub ! :pray:

:information_source: Poiché si tratta di un plugin contribuito in modo indipendente, ti preghiamo di fare richieste di supporto, bug, UX e funzionalità qui in questo topic. NB Questo plugin non è disponibile sull’hosting di Discourse.org. Puoi installarlo se sei self-hosted e potenzialmente se sei su un hosting di terze parti (ma verifica con il tuo provider).

Il chatbot AI originale per Discourse

Chatbot porta conversazioni AI configurabili nei Topic, nei Messaggi Personali, nei canali Chat e nei thread Chat. Dai al bot un carattere adatto alla tua community, decidi quali gruppi possono usarlo e scegli modelli e strumenti diversi per utenti con basso, medio e alto livello di fiducia.

Può:

  • rispondere normalmente dalla conversazione corrente;
  • cercare contenuti selezionati del forum con ricerca semantica o ibrida;
  • cercare su Wikipedia, notizie attuali e sul web;
  • scorrere pagine remote e recuperare dati di mercato di fine giornata;
  • eseguire calcoli affidabili basati su espressioni;
  • visualizzare immagini caricate e leggere opzionalmente PDF;
  • generare e modificare immagini;
  • raccogliere campi utente modificabili non compilati in conversazioni private;
  • escalare conversazioni Chat private a gruppi di staff configurati;
  • rispondere automaticamente a nuovi Topic in categorie selezionate; e
  • accettare strumenti aggiuntivi forniti da altri plugin.

Per un flusso di lavoro di supporto pratico, consulta Costruire un chatbot per il supporto tecnico.

Con la ricerca locale del forum abilitata, il bot può basare le risposte sui contenuti della tua community:

Per conversazioni più semplici, esponi meno strumenti o nessuno per ridurre chiamate, latenza e costi:

Supporto provider

Scegli i provider in modo indipendente per risposte, embedding, visione e generazione di immagini. Ogni capacità riutilizza la chiave API appartenente al provider selezionato.

Capacità OpenAI Anthropic Google Gemini xAI
Risposte LLM e strumenti :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Embedding :white_check_mark: :white_check_mark: :white_check_mark:
Visione :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Generazione di immagini :white_check_mark: :white_check_mark: :white_check_mark:
Modifica di immagini Modelli GPT Image :white_check_mark:
Input conversazione PDF :white_check_mark:

Se non è impostato un URL personalizzato, Chatbot utilizza il suo endpoint ufficiale integrato per il provider selezionato. I nomi dei modelli e gli URL personalizzati supportano Azure OpenAI, Ollama, proxy e altri servizi che implementano la forma API di un provider supportato.

I menu a tendina dei modelli specifici del provider vengono mostrati solo quando quel provider è attivo. Il modello di risposta può variare in base al livello di fiducia, mentre embedding, visione e generazione di immagini hanno ciascuno il proprio selettore di provider e modello.

Leggi la guida completa sui provider e gli endpoint personalizzati.

Accesso, quote e strumenti

Nessuno ha accesso finché non assegni gruppi alle impostazioni di gruppo a bassa, media o alta fiducia di Chatbot. Gli utenti ereditano la quota, il modello e la whitelist di strumenti del loro livello di fiducia Chatbot corrispondente più alto. Le quote possono essere misurate in query o token.

Gli strumenti integrati sono selezionati indipendentemente per ogni livello di fiducia. Le credenziali e le impostazioni di supporto controllano ancora la disponibilità in runtime, quindi selezionare uno strumento web senza la sua chiave API non lo espone.

Leggi su accesso e quote e strumenti per livello di fiducia.

Ricerca locale del forum e privacy

:biohazard: Si prega di comprendere la portata dell’embedding prima di abilitare la ricerca locale del forum.

La strategia predefinita benchmark_user esegue l’embedding dei contenuti visibili a un utente adatto al livello di fiducia configurato. La strategia categories esegue l’embedding dei contenuti da Categorie selezionate esplicitamente. La ricerca semantica è ottimizzata per la velocità e non ripete un controllo di visibilità per ogni persona che fa domande al bot, quindi i contenuti corrispondenti potrebbero essere condivisi al di fuori del loro pubblico originale se la portata include contenuti riservati.

I Messaggi Personali non vengono mai incorporati. Mantieni il livello di fiducia di riferimento basso, evita le Categorie private a meno che i loro contenuti possano essere divulgati a ogni utente di Chatbot e rimuovi local_forum_search dai livelli di fiducia che non dovrebbero usarlo.

I provider selezionati potrebbero ricevere contenuti della conversazione, caricamenti, corrispondenze di ricerca incorporate e risultati degli strumenti. Rivedi i loro termini di conservazione e utilizzo dei dati e divulga questo trattamento nei termini e nell’avviso sulla privacy del tuo forum.

Leggi la guida completa su embedding, portata e privacy.

Avvio rapido

  1. Installa il plugin utilizzando la normale procedura di plugin self-hosted.
  2. Seleziona chatbot_llm_provider, inserisci la chiave API di quel provider e scegli i modelli per ogni livello di fiducia.
  3. Aggiungi gruppi alle impostazioni di accesso a bassa, media o alta fiducia e configura le quote.
  4. Scegli gli strumenti integrati disponibili per ogni livello di fiducia.
  5. Se abiliti local_forum_search, configura il suo provider di embedding e rivedi attentamente la sua portata.
  6. Menziona il bot, rispondigli, usa il pulsante di accesso rapido o configura un prompt di risposta automatica per una Categoria.

Esempio rapido OpenAI

  1. Crea una chiave API OpenAI e assicurati che la fatturazione API sia abilitata.
  2. Imposta chatbot_llm_provider su OpenAI e incolla la chiave in chatbot_open_ai_token.
  3. Lascia vuoto l’URL personalizzato, scegli un modello OpenAI per ogni livello di fiducia che intendi utilizzare e aggiungi il tuo gruppo di test all’impostazione di accesso Chatbot corrispondente.
  4. Menziona il bot in un Topic, Messaggio Personale o Chat consentita per testarlo.

Il README del repository è la fonte di verità per i prerequisiti, ogni gruppo di impostazioni principale, il comportamento specifico del provider, gli endpoint personalizzati, la manutenzione degli embedding, la personalizzazione dei prompt, il debug, lo sviluppo di estensioni e la disinstallazione:

:books: Apri il README completo

Funzionalità UI selezionate

Le Categorie possono accogliere un nuovo Topic e chiedere al bot di cercare contenuti della community rilevanti:

Il pulsante di accesso rapido opzionale può aprire una Chat o un Messaggio Personale diretto con il bot:

Lo strumento Campi Utente può raccogliere campi vuoti supportati in privato:

Raccolta Campi Utente

Supporto e sponsorizzazione

Ti preghiamo di segnalare richieste di supporto, bug, feedback UX e idee di funzionalità in questo topic Meta. Includi il provider, il nome del modello, le impostazioni rilevanti, lo stato HTTP e il corpo della risposta del provider, rimuovendo le chiavi API e i contenuti privati.

Questo lavoro dipende dal supporto della community. Se il plugin è prezioso per il tuo sito, ti preghiamo di sponsorizzarne la manutenzione continua.

Sponsor del progetto

Sponsor Livello Sito web
Surety Silver Plus suretyhome.com

Disclaimer

Gli LLM possono produrre output convincenti ma errati. Testa il plugin in base alle esigenze della tua community, comprendi le implicazioni sulla privacy e sui costi e applica una moderazione appropriata. I termini per gli output generati variano in base al provider e alla giurisdizione; rivedi i termini per ogni provider che abiliti.

104 Mi Piace
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)

Ho aggiunto Jina.ai all’elenco delle API supportate che possono essere utilizzate per la ricerca sul web e il web crawling. Una chiave serve entrambi i servizi. Le API esistenti vengono utilizzate se non si rimuovono le loro chiavi.

Ci sono stati due motivi principali:

  • le prestazioni di crawling sembrano davvero buone
  • offrono un modello pay-as-you-go anziché una tariffa mensile che si adatta a me e potrebbe adattarsi a te.

Link nelle impostazioni.

Grazie per il tuo interesse in Discourse Chatbot.

Due cose potrebbero essere rilevanti:

  • il bot risponderà a ogni post se invocato in un argomento con un solo utente finché non si uniranno più persone all’argomento
  • per categoria, puoi far rispondere Chatbot a ogni nuovo argomento e puoi dargli istruzioni speciali su cosa fare, governate da un prompt specifico della categoria che imposti nelle impostazioni della categoria.

il bot verrà sempre invocato se lo menzioni con @, quindi non so se puoi utilizzare anche quella funzionalità.

1 Mi Piace

«Ogni» post? O solo quelli con una parola chiave? Sono due requisiti diversi?

Forse potresti menzionare Chatbot nella risposta predefinita e il bot risponderà? Significherebbe due post, ma potrebbe funzionare.

Quindi, se la tua risposta predefinita fosse «@Chatbot (o come lo hai rinominato) gestisci questo», allora Chatbot risponderebbe. Ovviamente puoi personalizzare quella risposta.

Tieni presente che Chatbot può rispondere anche ai messaggi privati (se lo configuri così), quindi se la risposta predefinita fosse in un messaggio privato, gli utenti normali vedrebbero solo la risposta di Chatbot, il che potrebbe sembrare più ordinato.

Sono disponibile ad estendere le funzionalità di Chatbot se desideri assumermi per farlo, purché possiamo trovare una soluzione sufficientemente generica che sia utile anche ad altri, ma penso che abbia senso sfruttare ciò che esiste?

Mi chiedo se la migliore soluzione sia aggiungere la funzionalità di messaggio privato al classificatore dei post AI? Potresti assumere qualcuno per implementarlo tramite una PR o proporlo come Contribute > Feature e sperare che venga prioritizzato. Sarebbe indubbiamente utile in modo generico?

Ho apportato alcune semplificazioni al codice sfruttando una funzionalità aggiunta all’API di Open AI. Fatemi sapere se riscontrate problemi.

Ho deciso che era ora di chiamarlo 1.0.0 :champagne: :tada: :partying_face:

4 Mi Piace

Aggiunta la possibilità di aggiungere altre funzioni in plugin separati, in modo da non dover mantenere un fork del repository Chatbot.

Esempio di plugin di funzioni qui:

ma ovviamente potresti aggiungerlo a qualsiasi plugin…

PR:

4 Mi Piace

@Festinger hai risolto questo?

\u003e Incorporamento di post: Si è verificato un problema, ma riproverà fino al limite: undefined method `destroy!’ for nil

Dopo l’ultimo aggiornamento, ho iniziato a ricevere l’errore sopra indicato. Ricevo questo errore in particolare quando si tratta di immagini. La mia impostazione della modalità di visualizzazione è: diretta. Non ricevevo questo errore in precedenza.

Ti ricordi di aver cancellato un Post (o Topic) poco dopo averne creato uno?

Questo errore si verificherà se crei un Post e poi lo cancelli prima che abbia avuto la possibilità di creare un embedding, quindi quando lo cancelli, Chatbot tenta di cancellare un embedding inesistente che crea un messaggio di log fastidioso ma non causa danni :wink:

Se riesci a pensare a un modo migliore per farlo, sentiti libero di inviare una PR.

1 Mi Piace

Ha riscontrato un errore come questo nel problema segnalato dall’utente. Non era qualcosa che ho cancellato.

Come ha visto questo l’utente? È solo nei log?

L’ho visto nei log. Lo seguo da un giorno, in particolare il problema si verifica nei post degli utenti che sono membri da molto tempo. Se un nuovo membro apre un argomento con un’immagine, di solito non ci sono problemi, non viene ricevuto alcun errore. Quando i vecchi utenti aprono un argomento con un’immagine, c’è un problema.

Puoi per favore condividere il backtrace?

Allora perché l’utente ti ha inviato un problema? Cosa ti ha detto? L’utente non dovrebbe essere a conoscenza di alcun problema, appare solo nei log?

Sembra che i tuoi “vecchi membri” potrebbero eliminare il loro argomento o post appena creato (poiché sanno come farlo)?

Hai qualche automazione di qualche tipo in atto?

Non c’è distruzione durante la pubblicazione di un post contenente un’immagine, quindi non sono sicuro di come ciò possa accadere.

Aggiornamento: ho appena caricato un’immagine su un sito e non riesco a riprodurla.

1 Mi Piace

SerpAPI va bene e le loro statistiche mostrano che la richiesta di utilizzare Google è stata eseguita, ma Chatbot afferma di non poter utilizzare Google. Questa situazione va avanti da tempo, ma non ho reagito perché al momento anche DAI non voleva utilizzare Google.

Nessun messaggio di errore.

1 Mi Piace

Cosa succede se dici “cerca sul web per…”?

Il prompt interno è generico, quindi non presuppone Google…

Lascia che ti mostri una demo molto valida di questa potente capacità:

(anche se questo utilizza l’alternativa inclusa jina.ai)

Ci ho provato. Il prompt di sistema conteneva “quando un utente chiede di cercare con Google, l’utente in realtà intende che dovresti usare quella funzione di ricerca web a cui avevi accesso”. Ho eliminato quella parte e poi ho provato la dicitura “ricerca web” nel mio prompt utente — dopotutto, non sta usando l’API di Google. Nessuna fortuna e risposta simile: non posso fare ricerche web…

Questo è l’unico risultato che ho trovato, ma non apre questo:

{
  "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 Mi Piace

Posso farne a meno perché il mio obiettivo è utilizzare Chatbot come bot interno di domande e risposte, e Jina potrebbe risolvere il problema dell’utilizzo del mio sito di contenuti principali (tramite WordPress).

Tuttavia, il risultato quando ho provato a cercare dal mondo esterno non è stato quello previsto.

1 Mi Piace

Cercherò di riprodurlo

1 Mi Piace

Funziona per me sia tramite Serp API che Jina.ai.

Puoi fornire i “pensieri interiori” del bot dal PM per favore?

Pensieri interiori
[
  {
    "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 delle farfalle · A. Adonis Blue · B Black Hairstreak · Brimstone · Brown Argus · Brown Hairstreak · C Chalk Hill Blue · Chequered Skipper · Clouded Yellow · D."
  }
]
1 Mi Piace

Dovremmo farlo tramite PM? Stiamo solo inquinando questo argomento.

Ma:

[
  {
    "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 storia della Giornata Internazionale del Cane: la mia ricerca su Internet è fallita."
  }
]