Discourse Chatbot đŸ€–

:information_source: Résumé Le premier Chatbot IA pour Discourse
:hammer_and_wrench: Lien du dépÎt GitHub - merefield/discourse-chatbot: An AI bot with RAG capability for Topics, Chat & Customer Support in Discourse, currently powered by OpenAI · GitHub
:open_book: Guide d’installation Comment installer des plugins dans Discourse
:heart: Sponsoring Veuillez envisager de devenir un sponsor de mon travail open source de maniĂšre rĂ©guliĂšre, Ă  un niveau adaptĂ© aux ressources et besoins de votre organisation, afin de garantir que ce plugin reçoive la maintenance qu’il mĂ©rite et continue de fonctionner pour votre site Ă  l’avenir.

Vous aimez ce plugin ? Veuillez :star: le sur GitHub ! :pray:

:information_source: Comme il s’agit d’un plugin contribuĂ© de maniĂšre indĂ©pendante, veuillez soumettre vos demandes de support, de bugs, d’UX et de fonctionnalitĂ©s ici dans ce sujet. NB Ce plugin n’est pas disponible sur l’hĂ©bergement Discourse.org. Vous pouvez l’installer si vous ĂȘtes auto-hĂ©bergĂ© et possiblement si vous ĂȘtes sur un hĂ©bergement tiers (mais vĂ©rifiez avec votre fournisseur).

Qu’est-ce que c’est ?

  • Le premier Chatbot IA de Discourse !
  • Vous pouvez utiliser ce bot pour certaines tĂąches d’information de support client (voir ce guide Building a technical support chatbot)
  • Discutez avec le bot dans n’importe quel Sujet ou Canal de Chat, en un Ă  un ou avec d’autres ! Prend en charge les Threads.
  • Personnalisez le caractĂšre de votre bot pour qu’il corresponde Ă  votre forum !
    • voulez-vous qu’il parle comme William Shakespeare ou Winston Churchill ? C’est possible !
  • Le bot en “Mode RAG” peut :
    • Rechercher dans votre forum ** des rĂ©ponses pour que le bot soit un expert sur le sujet de votre forum.
      • Reclasse les recherches pour favoriser certains groupes d’auteurs ou balises de Sujets
      • ne se contente pas d’ĂȘtre conscient des informations du Sujet ou du Canal actuel.
    • Demander Ă  vos utilisateurs en privĂ© leurs champs utilisateur inachevĂ©s.
    • Rendre et Ă©diter des images IA
    • Rechercher sur WikipĂ©dia
    • Rechercher l’actualitĂ©*
    • Rechercher sur Google*
    • Explorer des sites distants*
    • Retourner les donnĂ©es de marchĂ© de fin de journĂ©e pour les actions.*
    • Effectuer des mathĂ©matiques “complexes” avec prĂ©cision (sans rĂ©ponses inventĂ©es ou “hallucinations” !)
    • Ces “outils” peuvent ĂȘtre Ă©tendus via un plugin, voir ci-dessous.
  • Support de la vision - le bot peut voir vos images et rĂ©pondre Ă  des questions Ă  leur sujet !
  • RĂ©pond automatiquement aux nouveaux Sujets dans des CatĂ©gories spĂ©cifiques
  • Utilise l’API Open AI de pointe et les capacitĂ©s de fonctions de leurs excellents grands modĂšles de langage (LLM) leaders de l’industrie.
  • Inclut un systĂšme de quota spĂ©cial pour gĂ©rer l’accĂšs au bot : les membres plus fiables et/ou payants peuvent avoir un accĂšs plus important au bot !
    • Mesure l’utilisation par requĂȘte ou par jetons.
  • Supporte Ă©galement les connexions Azure et serveur proxy.
    • Utilisez des processus proxy tiers pour traduire les appels afin de supporter d’autres LLM comme Gemini par ex. celui-ci

*inscription aux services API externes (non affiliés) requise. Liens dans les paramÚtres.

Le mode RAG est trÚs intelligent et connaßt les faits publiés sur votre forum :

Le mode bot de base peut parfois faire des erreurs, mais est moins coĂ»teux Ă  faire fonctionner car il effectue moins d’appels au grand modĂšle de langage :


(Désolé la Chine ! :wink: )

:biohazard: **La “vision” du bot - ce qu’il peut voir (potentiellement partager) et confidentialitĂ© :biohazard:

Ce bot peut ĂȘtre utilisĂ© dans des espaces publics de votre forum. Pour rendre le bot particuliĂšrement utile, il existe le mode RAG (un paramĂštre par niveau de confiance du bot). Cela n’est pas activĂ© par dĂ©faut.

Dans ce mode, le bot a, par dĂ©faut, accĂšs Ă  tout le contenu qu’un utilisateur de Niveau de Confiance 1 verrait, en se basant sur ce paramĂštre :

Ainsi, s’il interagit dans un Sujet public, il y a une possibilitĂ© que le bot “fuite” d’informations si vous avez tendance Ă  restreindre le contenu aux niveaux de confiance 0 ou 1 via les permissions de CatĂ©gorie. Ce niveau a Ă©tĂ© choisi car, par expĂ©rience, la plupart des sites ne restreignent pas le contenu sensible aux niveaux de confiance bas, mais cela dĂ©pend de vos besoins spĂ©cifiques.

Pour ce mode, assurez-vous d’avoir au moins un utilisateur avec Niveau de Confiance 1 et aucune autre appartenance Ă  un groupe au-delĂ  des groupes automatisĂ©s. (gardez Ă  l’esprit que le bot saura alors tout ce qu’un utilisateur TL1 saurait et pourrait le partager). Vous pouvez choisir de baisser chatbot embeddings benchmark user trust level si vous avez un utilisateur de Niveau de Confiance 0 sans autre appartenance Ă  un groupe au-delĂ  des groupes automatisĂ©s.

Alternativement :

  • Passez chatbot embeddings strategy Ă  category et remplissez chatbot embeddings categories avec les CatĂ©gories dont vous souhaitez que le bot ait connaissance. (Sachez que si vous ajoutez des CatĂ©gories privĂ©es, il en aura connaissance et tout ce que le bot dit en public, n’importe oĂč, pourrait fuiter vers des utilisateurs moins privilĂ©giĂ©s, donc soyez prudent sur ce que vous ajoutez).
  • utilisez le bot uniquement en mode normal (mais le bot ne verra alors aucun message)
  • attĂ©nuez avec la modĂ©ration

De plus, notez que tout ce qu’il peut “voir” est partagĂ© avec Open AI.

Vous pouvez voir que cette configuration est un compromis. Pour rendre le bot utile, il doit ĂȘtre informĂ© du contenu de votre site. Actuellement, il n’est pas possible pour le bot de lire sĂ©lectivement le contenu rĂ©servĂ© aux membres et de le partager uniquement avec les membres, ce que certains administrateurs pourraient trouver limitant, mais il n’y a pas de moyen facile de rĂ©soudre cela tant que le bot peut parler en public. Contactez-moi si vous avez des besoins spĂ©cifiques et souhaitez sponsoriser du travail dans ce domaine. La gestion des permissions du bot avec la recherche sĂ©mantique est un problĂšme non trivial. Le systĂšme est actuellement optimisĂ© pour la vitesse. NB Les messages privĂ©s ne sont jamais lus par le bot.

Informations utiles

  • Peut ne pas fonctionner sur les installations multi-sites (non testĂ© explicitement), mais les PR sont les bienvenues pour amĂ©liorer le support :+1:
  • La rĂ©ponse de l’API Open AI peut ĂȘtre lente par moments sur les modĂšles plus avancĂ©s en raison de la forte demande. Cependant, le Chatbot supporte aussi GPT 3.5 qui est rapide et rĂ©actif et tout Ă  fait capable.
  • Est extensible et le support d’autres bots cloud est prĂ©vu (d’oĂč le nom gĂ©nĂ©rique du plugin), mais supporte actuellement ‘uniquement’ l’interaction avec les grands modĂšles de langage (LLM) Open AI tels que GPT-4 nativement. Veuillez me contacter si vous souhaitez ajouter d’autres types de bots ou me soutenir pour en ajouter d’autres. PR les bienvenues. Peut dĂ©jĂ  utiliser des serveurs proxy pour accĂ©der Ă  d’autres services sans modifications de code !
  • Est extensible pour supporter la recherche d’autres contenus au-delĂ  de l’ensemble actuel fourni.

Configuration

Prérequis

En plus des changements normaux dans app.yml, vous devez ĂȘtre conscient des points suivants :

Pour compiler avec Chatbot ou AI Topic Summary, vous avez besoin d’au moins la version 0.5.1 de l’extension postgres pgvector.

La plupart des gens ont dĂ©jĂ  au moins cette version. Cependant, occasionnellement, certaines installations ont une version plus ancienne. Cela empĂȘchera la compilation avec une erreur similaire Ă  : PG::UndefinedObject: ERROR: access method "hnsw" does not exist

Assurez-vous d’abord que votre conteneur est en cours d’exĂ©cution :

./launcher restart app

puis entrez dans votre conteneur

./launcher enter app

puis accédez à la base de données et mettez à jour la version de pgvector :

:/var/www/discourse# su postgres -c 'psql discourse'
\dx
ALTER EXTENSION vector UPDATE;
\dx
exit

quittez maintenant le conteneur avec exit

Vous devriez maintenant pouvoir reconstruire.

Création des Embeddings

Si vous souhaitez que Chatbot connaisse le contenu de votre site, activez ce paramĂštre :

chatbot_embeddings_enabled

NĂ©cessaire uniquement si vous souhaitez utiliser le bot de type RAG et vous assurer qu’il est conscient du contenu de votre forum, et pas seulement du Sujet actuel.

Initialement, nous devons crĂ©er les embeddings pour tous les messages concernĂ©s, afin que le bot puisse trouver des informations sur le forum. Cela se fait dĂ©sormais en arriĂšre-plan une fois ce paramĂštre activĂ© et vous n’avez rien Ă  faire.

Cette tĂąche de remplissage initial peut prendre plusieurs jours pour les trĂšs grands sites.

Portée des Embeddings

Cela est déterminé par plusieurs paramÚtres :

  • chatbot_embeddings_strategy qui peut ĂȘtre soit “benchmark_user” soit “category”
  • chatbot_embeddings_benchmark_user_trust_level dĂ©finit le niveau de confiance pertinent pour le premier
  • chatbot_embeddings_categories si la stratĂ©gie category est dĂ©finie, donne au bot l’accĂšs pour considĂ©rer tous les messages de la CatĂ©gorie spĂ©cifiĂ©e.

Si vous changez ces paramĂštres, au fil du temps, la population des Embeddings se transformera.

Pour accélérer le remplissage

Entrez dans le conteneur :

./launcher enter app

et exécutez la commande rake suivante :

rake chatbot:refresh_embeddings[1]

qui actuellement s’exĂ©cutera deux fois pour une raison inconnue (dĂ©solĂ© ! n’hĂ©sitez pas Ă  faire une PR) mais le [1] assure que la deuxiĂšme fois, il n’ajoutera que les embeddings manquants (c’est-Ă -dire aucun immĂ©diatement aprĂšs la premiĂšre exĂ©cution) donc c’est quelque peu inutile.

Dans le cas improbable oĂč vous seriez limitĂ© par OpenAI (peu probable !), vous pouvez complĂ©ter les embeddings en faisant ceci :

rake chatbot:refresh_embeddings[1,1]

qui remplira les manquants (donc rien n’est perdu suite Ă  l’erreur) mais continuera plus prudemment en mettant un dĂ©lai d’une seconde entre chaque appel Ă  Open AI.

ComparĂ© aux interactions du bot, les embeddings ne sont pas chers Ă  crĂ©er, mais surveillez tout de mĂȘme votre utilisation sur votre tableau de bord Open AI.

NB Les embeddings ne sont créés que pour les Messages et uniquement pour ceux auxquels un utilisateur de Niveau de Confiance Un aurait accĂšs. Cela semblait ĂȘtre un compromis raisonnable. Cela ne crĂ©era pas d’embeddings pour les messages accessibles uniquement aux contenus de Niveau de Confiance 2+.

RequĂȘte Data Explorer utile pour surveiller la population des embeddings

@37Rb Ă©crit : “Voici une requĂȘte SQL que j’utilise avec le plugin Data Explorer pour surveiller et vĂ©rifier les embeddings
 au cas oĂč cela aiderait quelqu’un d’autre.”

SELECT e.id, e.post_id AS post, p.topic_id AS topic, p.post_number,
       p.topic_id, e.created_at, e.updated_at, p.deleted_at AS post_deleted
FROM chatbot_post_embeddings e LEFT JOIN posts p ON e.post_id = p.id

Erreur lorsque vous essayez d’obtenir un embedding pour trop de caractùres.

Vous pourriez obtenir une erreur comme celle-ci :

OpenAI HTTP Error (spotted in ruby-openai 6.3.1): {"error"=>{"message"=>"This model's maximum context length is 8192 tokens, however you requested 8528 tokens (8528 in your prompt; 0 for the completion). Please reduce your prompt; or completion length.", "type"=>"invalid_request_error", "param"=>nil, "code"=>nil}}

Voici comment la résoudre 


Comme indiquĂ© dans votre message d’erreur, le modĂšle d’embedding a une limite de :

8192 jetons

cependant vous en avez demandé 8528

Vous devez baisser la valeur actuelle de ce paramĂštre :

chatbot_open_ai_embeddings_char_limit:

d’environ 4 fois la diffĂ©rence et voir si cela fonctionne (un jeton est environ 4 caractĂšres).

Donc, dans cet exemple, 4 x (8528 - 8192) = 1344

Donc baissez la valeur actuelle de chatbot_open_ai_embeddings_char_limit de 1500 pour ĂȘtre prudent. Cependant, la valeur par dĂ©faut a Ă©tĂ© dĂ©finie selon de nombreux tests pour les messages en anglais, mais pour d’autres langues, elle peut nĂ©cessiter une baisse.

Cela coupera alors plus de texte et demandera des jetons et espĂ©rons que l’embedding passera. Sinon, vous devrez confirmer la diffĂ©rence et la rĂ©duire davantage en consĂ©quence. Finalement, elle sera assez basse pour que vous n’ayez plus Ă  y penser.

Comment changer le modùle d’Embeddings

Vous n’avez besoin de rien faire d’autre que changer le paramùtre : le job en arriùre-plan s’occupera des choses, si progressivement.

Si vous voulez vraiment accélérer le processus, faites :

  • Changez le paramĂštre chatbot_open_ai_embeddings_model vers votre nouveau modĂšle prĂ©fĂ©rĂ©
  • Il est prĂ©fĂ©rable de d’abord supprimer tous vos embeddings actuels :
    • entrez dans le conteneur ./launcher enter app
    • entrez dans la console rails rails c
    • exĂ©cutez ::DiscourseChatbot::PostEmbedding.delete_all
    • exit (pour revenir Ă  root dans le conteneur)
  • exĂ©cutez rake chatbot:refresh_embeddings[1]
  • si pour une raison quelconque cĂŽtĂ© Open AI cela Ă©choue en cours de route, exĂ©cutez-le Ă  nouveau jusqu’à ce que vous atteigniez 100%
  • le nouveau modĂšle est connu pour ĂȘtre plus prĂ©cis, donc vous devrez peut-ĂȘtre baisser chatbot_forum_search_function_similarity_threshold ou vous n’obtiendrez aucun rĂ©sultat :). J’ai baissĂ© ma valeur par dĂ©faut de 0.8 Ă  0.6, mais vos rĂ©sultats peuvent varier.

Type de Bot

Prenez un moment pour lire l’ensemble des paramĂštres du Plugin. Le paramĂštre chatbot bot type est clĂ©, et il y en a un pour chaque “Niveau de Confiance” du chatbot :

Le mode RAG est supĂ©rieur mais effectuera plus d’appels Ă  l’API, augmentant potentiellement le coĂ»t. Cela dit, la rĂ©duction de sa propension Ă  produire finalement des ‘hallucinations’ peut vous permettre de passer de GPT-4 Ă  GPT-3.5 et vous finirez peut-ĂȘtre par dĂ©penser moins malgrĂ© l’augmentation significative de l’utilitĂ© et de la fiabilitĂ© de la sortie. GPT 3.5 est Ă©galement un meilleur ajustement pour le type Agent basĂ© sur les temps de rĂ©ponse. Un potentiel gagnant-gagnant ! ExpĂ©rimentez !

Pour que Chatbot fonctionne dans le Chat, vous devez avoir le Chat activé.

Comment faire répondre le bot

RĂšgles de base

  • Si autorisĂ© dans les paramĂštres du plugin, le bot RĂ©pondra Ă  chaque Message ou Message si invoquĂ© dans un Sujet ou Canal de Chat avec un seul Utilisateur jusqu’à ce que d’autres personnes rejoignent.
  • le bot sera toujours invoquĂ© si vous le mentionnez avec @

Auto-répondeur spécial par Catégorie

  • Par CatĂ©gorie, vous pouvez faire en sorte que Chatbot RĂ©ponde Ă  chaque nouveau Sujet et vous pouvez lui donner des instructions spĂ©ciales sur ce qu’il doit faire, rĂ©gies par un prompt spĂ©cifique Ă  la CatĂ©gorie que vous configurez dans les paramĂštres de la CatĂ©gorie.

Devrait commencer quelque chose comme :

“Bienvenue-moi en disant bonjour et prĂ©sentez-vous. Partagez avec moi 5 messages du forum en utilisant la recherche locale du forum pertinents Ă  mon premier message, incluez des liens”

c’est-Ă -dire que vous devez l’écrire Ă  la premiĂšre personne comme si l’utilisateur demandait de l’aide. Ce n’est pas un prompt systĂšme. Il ne dĂ©crit pas comment le bot devrait se comporter (c’est pour le prompt systĂšme qui est toujours envoyĂ©). C’est un utilisateur demandant de l’aide spĂ©cifique (bien que cachĂ©). Fondamentalement, vous l’écrivez comme si c’était un message d’utilisateur sans avoir Ă  mentionner le bot.

Vitesse de réponse du Bot

Cela est rĂ©gi principalement par un paramĂštre : ‎chatbot_reply_job_time_delay‎ sur lequel vous avez discrĂ©tion.

L’intention d’avoir ce paramùtre est de :

  • vous protĂ©ger contre l’atteinte des limites de taux d’Open AI
  • protĂ©ger votre site contre les utilisateurs qui voudraient spammer le bot et vous coĂ»ter de l’argent.
  • permettre Ă  Discourse assez de temps pour tĂ©lĂ©charger les images liĂ©es afin que le bot puisse les voir.

C’est maintenant par dĂ©faut ‘2’ secondes et peut maintenant ĂȘtre rĂ©duit Ă  zĂ©ro :racing_car: , mais soyez conscient des risques ci-dessus. La vision du bot (si vous l’utilisez) est particuliĂšrement sensible Ă  ce paramĂštre. Si vous trouvez que le bot ne voit pas vos images, essayez d’augmenter cette valeur.

Mettre cela Ă  zĂ©ro et le bot, mĂȘme en mode ‘agent’, devient beaucoup plus ‘rĂ©actif’.

Évidemment, cela peut ĂȘtre un peu artificiel et aucune personne rĂ©elle ne taperait aussi vite 
 mais rĂ©glez-le selon vos goĂ»ts et la taille de votre portefeuille.

NB Je ne peux pas contrĂŽler directement la vitesse de rĂ©ponse de l’API d’Open AI - et la rĂšgle gĂ©nĂ©rale Ă©tait que plus le modĂšle que vous dĂ©finissez est sophistiquĂ©, plus cette rĂ©ponse sera lente. Ce qui est plus gĂ©nĂ©ralement le cas maintenant est que les modĂšles ‘mini’ ont tendance Ă  ĂȘtre plus rapides.

Collecte de Champs Utilisateur alimentĂ©e par l’IA (expĂ©rimental)

Si un Utilisateur a certains Champs Utilisateur Facultatifs qui sont actuellement vides, l’activation de ce paramĂštre fera en sorte que le bot commence Ă  demander ces informations Ă  l’utilisateur. Il progressera Ă  travers les Champs Utilisateur en attente jusqu’à ce qu’ils soient complĂ©tĂ©s puis reviendra au comportement normal.

image

(désolé pour la lenteur de la réponse - cela a été enregistré en dev)

NB Cette fonctionnalité ne supporte que :

  • Texte
  • Menus dĂ©roulants
  • Confirmations

La sĂ©lection multiple n’est pas encore supportĂ©e.

Les champs doivent ĂȘtre facultatifs

L’ordre des Champs Utilisateur dĂ©termine la prioritĂ©.

Support Ollama & llama3

Le support Ollama pour (le complùtement GÉNIAL !) llama3 est maintenant disponible :

C’est pour lorsque le bot est exĂ©cutĂ© localement en dev ou dans le cloud avec un serveur ollama 
 et en mode Basic :

  • assurez-vous que le modĂšle est llama3 :

  • l’URL personnalisĂ©e doit ĂȘtre dĂ©finie sur http://localhost:11434 :

image

Si vous avez un serveur assez puissant, vous pourriez servir ollama dans le cloud lĂ -bas.

Hype DeepSeek :sweat_smile:

Rejoignez l’action avec Chatbot :rocket:

Vous pouvez utiliser le bot au moins en mode Basic au moins pour accéder à V3 et R1

J’ai utilisĂ© :

(pas d’affiliation)

qui héberge leurs modÚles.

Configurez comme suit :

Assurez-vous de définir le mode bot Basic et de substituer votre clé.

Mais vous pourriez ĂȘtre en mesure d’utiliser DeepSeek AI directement si vous pouvez accĂ©der Ă  leur site web pour vous inscrire :sweat_smile:

L’URL de base serait “https://api.deepseek.com”.

OpenAI

Vous devez obtenir un jeton depuis https://platform.openai.com/ pour utiliser le bot actuel. Un modĂšle de langage par dĂ©faut est dĂ©fini (l’un des plus sophistiquĂ©s), mais vous pouvez essayer une alternative moins chĂšre, la liste est ici

Il y a une partie automatisĂ©e de la configuration : lors de l’ajout Ă  un Discourse, le plugin configure actuellement un utilisateur bot IA avec les attributs suivants

  • Nom : ‘Chatbot’
  • Id Utilisateur : -4
  • Bio : “Salut, je ne suis pas une vraie personne. Je suis un bot qui peut discuter avec vous. Ne me prenez pas trop au sĂ©rieux. Parfois, j’ai mĂȘme raison sur des choses !”
  • Nom du Groupe : “ai_bot_group”
  • Nom Complet du Groupe : “AI Bots”

Vous pouvez Ă©diter le nom, l’avatar et la bio (voir la chaĂźne locale dans admin → customize → text) comme vous le souhaitez mais rendez-le facile Ă  mentionner.

Ce n’est pas gratuit, donc il y a un systùme de quota, et vous devez le configurer

Initialement, personne n’aura accĂšs au bot, mĂȘme pas le personnel.

Appeler l’API Open AI n’est pas gratuit aprĂšs l’expiration d’une allocation initiale gratuite ! Donc, j’ai implĂ©mentĂ© un systĂšme de quota pour garder cela sous contrĂŽle, rĂ©duire les coĂ»ts et prĂ©venir les abus. Le coĂ»t n’est pas fou avec ces petites interactions, mais cela peut s’additionner si cela devient populaire. Vous pouvez en lire plus sur la tarification OpenAI sur leur page de tarification.

Pour interagir avec le bot, vous devez appartenir Ă  un groupe qui a Ă©tĂ© ajoutĂ© Ă  l’un des trois niveaux de ensembles de groupes de confiance, faible, moyen et Ă©levĂ©. Vous pouvez modifier chacun du nombre d’interactions autorisĂ©es par semaine par ensembles de groupes de confiance dans les paramĂštres correspondants.

Vous devez Ă©galement remplir les groupes. Cette configuration vous appartient entiĂšrement. Ils commencent vides donc initialement personne n’aura accĂšs au bot :

Dans cet exemple, j’ai donnĂ© Ă  staff un accĂšs haute confiance, tandis que trust_level_0 a une faible confiance. Ils obtiennent les quotas correspondants dans trois paramĂštres supplĂ©mentaires.

Notez que l’utilisateur obtient le quota basĂ© sur le groupe de confiance le plus Ă©levĂ© auquel il appartient.

“IngĂ©nierie des Prompts”

Il y a plusieurs paramÚtres de texte local qui influencent ce que le bot reçoit et comment le bot répond.

Le plus important que vous devriez envisager de changer est le prompt system du bot. Il est envoyé chaque fois que vous parlez au bot.

Pour le bot de base, vous pouvez essayer un prompt systĂšme comme :

‘Vous ĂȘtes un fan extrĂȘme de Formule 1, vous aimez tout ce qui touche au sport automobile et ses niveaux d’excitation Ă  l’octane Ă©levé’ au lieu du dĂ©faut.

(Pour le bot rag, vous devez garder tout ce qui suit “Vous ĂȘtes un assistant utile.” ou vous pourriez briser le comportement de l’agent. RĂ©initialisez-le si vous rencontrez des problĂšmes. Encore une fois, expĂ©rimentez !)

Essayez-en un qui est le plus approprié pour le sujet de votre forum. Soyez créatif !

Notez qu’il y a maintenant deux prompts systĂšme pour chaque type de bot. L’un .open est utilisĂ© lors de la discussion avec le bot en “public”. L’autre .private est appliquĂ© lors de la discussion avec le bot dans des Messages Personnels ou Chat de Message Direct. C’est pour que vous puissiez personnaliser le comportement privĂ© pour par ex. un bot de support.

Changer ces chaĂźnes locales peut faire se comporter le bot trĂšs diffĂ©remment mais ne peut pas ĂȘtre modifiĂ© Ă  la volĂ©e. Je recommande de changer uniquement le prompt systĂšme car les autres jouent un rĂŽle important dans le comportement de l’agent ou fournissent des informations sur qui a dit quoi au bot.

NB Dans les Sujets, le premier Message et le Titre du Sujet sont envoyĂ©s en plus de la fenĂȘtre de Messages (dĂ©terminĂ©e par le paramĂštre de lookback) pour donner plus de contexte au bot.

Vous pouvez Ă©diter ces chaĂźnes dans Admin → Customize → Text sous chatbot.prompt., les plus importants Ă©tant les prompts systĂšme qui sont dans : chatbot.prompt.system.

Supporte Ă  la fois les Messages & Messages de Chat !

Le bot supporte les Messages de Chat et les Messages de Sujet, y compris les Messages Privés (si configurés).

Vous pouvez inciter le bot Ă  rĂ©pondre en lui rĂ©pondant, ou en le mentionnant avec @. Vous pouvez dĂ©finir jusqu’oĂč le bot regarde en arriĂšre pour obtenir du contexte pour une rĂ©ponse. Plus la valeur est grande, plus chaque appel sera coĂ»teux.

Il y a un bouton de chat rapide flottant qui vous connecte immĂ©diatement au bot. Son style est un peu expĂ©rimental (modifiant certaines valeurs z-index de votre forum de base sur mobile) et il peut entrer en conflit sur certaines pages. Cela peut ĂȘtre dĂ©sactivĂ© dans les paramĂštres. Vous pouvez choisir si vous voulez charger le bot dans un chat 1 Ă  1 ou un Message Personnel.

Maintenant, vous pouvez choisir votre icĂŽne prĂ©fĂ©rĂ©e (dĂ©faut :robot: ) ou si le paramĂštre est laissĂ© vide, il prendra l’avatar de l’utilisateur bot ! :sunglasses:

avatar :

OU icĂŽne :

Et rappelez-vous, vous pouvez Ă©galement personnaliser le texte qui apparaĂźt lorsqu’il est dĂ©veloppĂ© :

image


 en utilisant Admin → Customize → Text

(bien que vous deviez peut-ĂȘtre personnaliser un peu le CSS pour accommoder les couleurs et la taille que vous voulez).

Un peu d’aide au dĂ©bogage

  • assurez-vous que le paramĂštre chatbot include inner thoughts in private messages est ACTIVÉ
  • assurez-vous que le paramĂštre chatbot enable verbose rails logging est ACTIVÉ
  • ssh sur votre serveur
  • cd /var/discourse/shared/standalone/log/rails
  • en parallĂšle, demandez quelque chose au bot dans le MP
  • retournez immĂ©diatement Ă  la console
  • cherchez ce genre de messages :
    • chat gĂ©nĂ©ral = tail -n 2000 production.log | grep {\"model\":\"
    • appels vision = tail -n 2000 production.log | grep {\"type\":\"image_url\"
  • vĂ©rifiez les “pensĂ©es intĂ©rieures” dans le MP

Extension de la boĂźte Ă  outils du Chatbot avec des plugins

Le plugin Chatbot a la capacitĂ© d’ajouter d’autres fonctions dans des plugins sĂ©parĂ©s, donc vous n’avez pas Ă  maintenir une fourche du dĂ©pĂŽt Chatbot.

Exemple de plugin de fonction ici :

mais bien sĂ»r, vous pourriez ajouter cela Ă  n’importe quel plugin 


Cette fonctionnalité a été ajoutée dans cette PR

Si vous avez besoin d’aide pour Ă©tendre Chatbot, vous pouvez m’embaucher pour vous aider.

Désinstallation du plugin - Important !

En raison des efforts récents pour simplifier le plugin, les seules étapes nécessaires pour désinstaller le plugin sont maintenant de supprimer la déclaration de clone.

Merci pour votre intĂ©rĂȘt pour le plugin !

Avertissement : Je ne suis pas responsable de ce que le bot rĂ©pond. ConsidĂ©rez le plugin comme Ă©tant au stade Beta et des choses peuvent mal tourner. Il s’amĂ©liorera avec les retours. Mais pas nĂ©cessairement la rĂ©ponse du bot :rofl: Veuillez comprendre les avantages et inconvĂ©nients d’un LLM et ce qu’ils sont et ne sont pas capables de faire et leurs limitations. Ils sont trĂšs bons pour crĂ©er du texte convaincant mais peuvent souvent ĂȘtre factuellement faux.

Note de ConfidentialitĂ© Importante : tout ce que vous Ă©crivez sur votre forum peut ĂȘtre transfĂ©rĂ© Ă  Open AI dans le cadre de la scan du bot des derniers messages une fois qu’il est incitĂ© Ă  rĂ©pondre (Ă©videmment, cela est limitĂ© au Sujet ou Canal de Chat actuel). Bien qu’il soit presque certain qu’il ne sera pas incorporĂ© dans leurs modĂšles prĂ©-entraĂźnĂ©s, ils utiliseront les donnĂ©es dans leurs analyses et journaux. Assurez-vous d’ajouter ce fait dans les CGU et dĂ©clarations de confidentialitĂ© de votre forum. Liens connexes : https://openai.com/policies/terms-of-use, https://openai.com/policies/privacy-policy, https://platform.openai.com/docs/data-usage-policies

Droits d’auteur : Open AI a fait une dĂ©claration sur les Droits d’auteur ici : https://help.openai.com/en/articles/5008634-will-openai-claim-copyright-over-what-outputs-i-generate-with-the-api

TODO/ÉlĂ©ments de la Feuille de Route

  • Ajouter des tests front-end et back-end :construction:
  • Ajouter un indicateur “bot en train de taper” et “diffusion de la rĂ©ponse” (@Aizada_M, @MarcP) :construction:
  • oubliĂ© de mentionner le bot ? Faire en sorte que le bot rĂ©ponde aux Ă©ditions qui ajoutent sa mention @ (@frold )
  • Ajouter un badge ? Vous avez mentionnĂ© @botname (@frold )
  • Ajouter un paramĂštre pour inclure le prompt de CatĂ©gorie et Messages ÉpinglĂ©s ? (@Ed_S)
  • Idem Bios Ă  chaque prompt d’historique de message ? (@Ed_S , @codergautam). Est-ce que cela fonctionnera mĂȘme. Obtenez des preuves.
  • Mettre Ă  jour Discourse Frotz avec cette meilleure base de code ?
  • Passer Ă  utiliser pgvector en faveur de pgembedding pour la recherche vectorielle maintenant que le premier supporte la recherche HNSW rapide. :white_check_mark:
  • Ajouter la recherche sĂ©mantique pour que le bot puisse lire vos Messages de forum et devenir un “expert” :wink: :white_check_mark:
  • Ajouter un comportement agent pour rĂ©duire les hallucinations et tirer parti d’informations fiables et factuelles. :white_check_mark:
  • Ajouter une logique supplĂ©mentaire pour convertir les noms d’utilisateur suspects en mentions @ (@frold ) :white_check_mark:
  • Ajouter le support GPT-4 (quand Open AI me jugera assez digne d’accĂšs ! :sweat_smile: ) :white_check_mark:
  • Ajouter le support du nom de modĂšle personnalisĂ©. :white_check_mark:
  • Ajouter une option pour supprimer les citations des Messages avant de passer le texte Ă  l’API. :white_check_mark:
  • AmĂ©liorer la transparence et la gestion des erreurs quand Open AI retourne un Ă©tat d’erreur :white_check_mark:
  • Ajouter la capacitĂ© de rĂ©essayer pour les requĂȘtes API expirĂ©es :white_check_mark:
  • Ajouter le support pour ChatGPT :white_check_mark:
  • Linter le plugin aux standards du cƓur Discourse :white_check_mark:
  • Ajouter des workflows CI :white_check_mark:
  • Ajouter des paramĂštres pour influencer la nature de la rĂ©ponse du bot (ex. Ă  quel point il est fou). :white_check_mark:
  • inclure le Titre du Sujet & premiers Messages au prompt :white_check_mark:
  • Ajouter un paramĂštre pour passer des donnĂ©es brutes Message/Message Ă  cuit pour potentiellement tirer meilleur parti des donnĂ©es d’entraĂźnement web (suggestion par @MarcP). NB Peut coĂ»ter plus cher et limiter ce qui est retournĂ© car les jetons d’entrĂ©e sont comptĂ©s et cuit est beaucoup plus gros. pensons que nous avons abandonnĂ© cette idĂ©e

Crédits :

*Il utilise toujours le moteur chat GPT d’OpenAI, mais peut maintenant tirer parti de fonctions locales et de donnĂ©es d’appels API pour limiter les hallucinations.

104 « J'aime »
Building a technical support chatbot
Answer feature
Webhooks on chat messages?
How to check what prevents rake migrate?
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
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?
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)
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

J’ai ajoutĂ© Jina.ai Ă  la liste des API prises en charge qui peuvent ĂȘtre utilisĂ©es pour la recherche sur le Web et le parcours du Web. Une clĂ© sert aux deux services. Les API existantes sont utilisĂ©es si vous ne supprimez pas leurs clĂ©s.

Il y avait deux raisons principales :

  • les performances du parcours semblent vraiment bonnes
  • ils proposent un modĂšle de paiement Ă  l’utilisation plutĂŽt qu’un abonnement mensuel, ce qui me convient et pourrait vous convenir.

Lien dans les paramĂštres.

Merci de votre intĂ©rĂȘt pour Discourse Chatbot.

Deux choses peuvent ĂȘtre pertinentes :

  • Le bot rĂ©pondra Ă  chaque publication s’il est invoquĂ© dans un sujet avec un seul utilisateur jusqu’à ce que d’autres personnes rejoignent le sujet.
  • Par catĂ©gorie, vous pouvez faire en sorte que Chatbot rĂ©ponde Ă  chaque nouveau sujet et vous pouvez lui donner des instructions spĂ©ciales sur ce qu’il doit faire, rĂ©gies par une invite spĂ©cifique Ă  la catĂ©gorie que vous configurez dans les paramĂštres de la catĂ©gorie.

Le bot sera toujours invoqué si vous le mentionnez avec @, donc je ne sais pas si vous pouvez également utiliser cette fonctionnalité.

1 « J'aime »

« Chaque » publication ? Ou seulement celles contenant un mot-clĂ© ? S’agit-il de deux exigences diffĂ©rentes ?

Peut-ĂȘtre pourriez-vous mentionner Chatbot dans la rĂ©ponse prĂ©dĂ©finie et le bot rĂ©pondra ensuite ? Cela signifierait deux publications, mais cela pourrait fonctionner.

Donc, si votre rĂ©ponse prĂ©dĂ©finie Ă©tait « @Chatbot (ou comme vous l’avez renommĂ©) veuillez traiter ceci », alors Chatbot rĂ©pondrait. Bien sĂ»r, vous pouvez adapter cette rĂ©ponse.

Notez que Chatbot peut également répondre aux messages privés (si vous le configurez ainsi), donc si la réponse prédéfinie était dans un message privé, seuls les utilisateurs normaux verraient la réponse de Chatbot, ce qui pourrait sembler plus élégant.

Je suis ouvert Ă  Ă©tendre les capacitĂ©s de Chatbot si vous souhaitez m’embaucher pour le faire, tant que nous pouvons trouver une solution suffisamment gĂ©nĂ©rique qui serait utile Ă  d’autres, mais il me semble logique d’exploiter ce qui existe dĂ©jĂ  ?

Je me demande si la meilleure action ici serait d’ajouter une fonctionnalitĂ© de message privĂ© au classificateur de publications IA ? Vous pourriez embaucher quelqu’un pour crĂ©er une PR Ă  ce sujet ou le proposer comme Contribute > Feature et espĂ©rer qu’il soit priorisĂ©. Cela serait indubitablement utile de maniĂšre gĂ©nĂ©rique ?

J’ai simplifiĂ© le code en utilisant une fonctionnalitĂ© qui a Ă©tĂ© ajoutĂ©e Ă  l’API Open AI. Faites-moi savoir si vous rencontrez des problĂšmes.

J’ai dĂ©cidĂ© qu’il Ă©tait temps de l’appeler 1.0.0 :champagne: :tada: :partying_face:

4 « J'aime »

Ajout de la possibilitĂ© d’ajouter d’autres fonctions dans des plugins sĂ©parĂ©s, vous n’avez donc pas Ă  maintenir une copie du dĂ©pĂŽt Chatbot.

Exemple de plugin de fonction ici :

mais bien sĂ»r, vous pourriez l’ajouter Ă  n’importe quel plugin


PR :

4 « J'aime »

@Festinger avez-vous résolu ce problÚme ?

IntĂ©gration de publication : Il y a eu un problĂšme, mais nous rĂ©essayerons jusqu’à la limite : undefined method `destroy!’ for nil

AprĂšs la derniĂšre mise Ă  jour, j’ai commencĂ© Ă  recevoir l’erreur ci-dessus. Je reçois cette erreur surtout lorsqu’il s’agit d’images. Mon paramĂštre de mode de visualisation est : directement. Je n’avais pas d’erreur de ce type auparavant.

Vous souvenez-vous d’avoir supprimĂ© un message (ou un sujet) peu aprĂšs en avoir créé un ?

Cette erreur se produira si vous crĂ©ez un message, puis le supprimez avant qu’il n’ait eu le temps de crĂ©er un embedding. Ainsi, lorsque vous le supprimez, Chatbot essaie de supprimer un embedding inexistant, ce qui crĂ©e un message de journal ennuyeux mais sans danger :wink:

Si vous pensez Ă  une meilleure façon de faire cela, n’hĂ©sitez pas Ă  soumettre une PR.

1 « J'aime »

Il a donnĂ© une erreur comme celle-ci dans le problĂšme envoyĂ© par l’utilisateur. Ce n’était pas quelque chose que j’ai supprimĂ©.

Comment l’utilisateur a-t-il vu cela ? Est-ce uniquement dans les journaux ?

Je l’ai vu dans les journaux. Je le suis depuis un jour, en particulier le problĂšme survient dans les publications des utilisateurs qui sont membres depuis longtemps. Si un nouveau membre ouvre un sujet avec une image, il n’y a gĂ©nĂ©ralement pas de problĂšme, aucune erreur n’est reçue. Lorsque les anciens utilisateurs ouvrent un sujet avec une image, il y a un problĂšme.

Pouvez-vous s’il vous plaĂźt partager la trace de la pile ?

Alors pourquoi l’utilisateur vous a-t-il envoyĂ© un problĂšme ? Que vous a-t-il dit ? L’utilisateur ne devrait pas ĂȘtre au courant d’un problĂšme, il apparaĂźt simplement dans les journaux ?

On dirait que vos « anciens membres Â» pourraient supprimer leur nouveau sujet ou message rĂ©cent (car ils savent comment faire) ?

Avez-vous une automatisation d’une sorte ?

Il n’y a pas de destruction lors de la publication d’un message contenant une image, donc je ne suis pas sĂ»r de la façon dont cela pourrait se produire.

Mise Ă  jour : Je viens de tĂ©lĂ©charger une image sur un site et je ne peux pas la reproduire.

1 « J'aime »

SerpAPI est correct, et leurs statistiques montrent que la requĂȘte pour utiliser Google est effectuĂ©e, mais le Chatbot prĂ©tend ne pas pouvoir utiliser Google. Cette situation dure depuis un certain temps, mais je n’ai pas rĂ©agi car Ă  l’époque, DAI ne voulait pas non plus utiliser Google.

Aucun message d’erreur.

1 « J'aime »

Que se passe-t-il si vous dites « rechercher sur le Web
 Â» ?

L’invite interne est gĂ©nĂ©rique et ne suppose pas Google


Laissez-moi vous montrer une trĂšs bonne dĂ©monstration de cette puissante capacitĂ© :

(bien que cela utilise l’alternative groupĂ©e jina.ai)

J’ai essayĂ© cela. L’invite systĂšme contenait « lorsqu’un utilisateur demande une recherche sur Google, l’utilisateur signifie en fait que vous devriez utiliser la fonction de recherche sur le Web Ă  laquelle vous aviez accĂšs ». J’ai supprimĂ© cette partie, puis j’ai essayĂ© le libellĂ© de recherche sur le Web dans mon invite utilisateur — aprĂšs tout, il n’utilise pas l’API de Google. Pas de chance et rĂ©ponse similaire : je ne peux pas faire de recherche sur le Web


C’est seulement ce que j’ai trouvĂ©, mais cela ne l’ouvre pas :

{
  "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 « J'aime »

Je peux vivre sans cela car mon objectif est d’utiliser Chatbot comme un bot interne de questions/rĂ©ponses, et Jina peut rĂ©soudre le problĂšme de l’utilisation de mon site de contenu principal (via WordPress).

Mais le rĂ©sultat lorsque j’ai essayĂ© de rechercher depuis le monde extĂ©rieur n’a pas Ă©tĂ© celui attendu.

1 « J'aime »

Je vais voir si je peux reproduire.

1 « J'aime »

Ça fonctionne pour moi, que ce soit via Serp API ou Jina.ai.

Pouvez-vous fournir les « pensĂ©es intĂ©rieures » des bots du chef de produit, s’il vous plaĂźt ?

Pensées intérieures
[
  {
    "role": "assistant",
    "content": "",
    "tool_calls": [
      {
        "id": "call_mKY7pfG54xRduRKCz5xee9E0",
        "type": "function",
        "function": {
          "name": "web_search",
          "arguments": "{\"query\":\"liste de papillons anglais\"}"
        }
      }
    ]
  },
  {
    "role": "tool",
    "tool_call_id": "call_mKY7pfG54xRduRKCz5xee9E0",
    "content": "A-Z des papillons · A. Adonis Blue · B Black Hairstreak · Brimstone · Brown Argus · Brown Hairstreak · C Chalk Hill Blue · Chequered Skipper · Clouded Yellow · D."
  }
]
1 « J'aime »

Devrions-nous faire cela en MP ? Nous polluons ce sujet.

Mais :

[
  {
    "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": "Date et histoire de la Journée Internationale du Chien : ma recherche sur Internet a échoué."
  }
]