Bots de Messagerie Multi-Canaux Panacea¶
Cette recette explique les intégrations de style chat-ops de Panacea : des bots autonomes pour Slack, SMS et WhatsApp qui permettent aux utilisateurs de poser des questions de codage depuis les applications de messagerie qu'ils utilisent déjà.
Ce que vous allez apprendre¶
- Le modèle de conception partagé entre les trois bots : recevoir → appeler un LLM → réduire à la limite de caractères du canal → répondre
- Comment le bot Slack gère le fil de discussion et édite un message de remplacement "en train de réfléchir…"
- Comment les bots SMS/WhatsApp répondent de manière synchrone en utilisant Twilio's TwiML
- Un écart architectural actuel qu'il vaut la peine de connaître avant d'étendre ces bots
Pourquoi cela importe¶
Tous les utilisateurs ne souhaitent pas ouvrir une interface web ou un IDE pour poser une question — les intégrations de style chat-ops rencontrent les gens là où ils se trouvent déjà. Chaque bot est un petit service Flask déployable indépendamment, donc une équipe peut faire fonctionner uniquement les canaux dont elle a besoin (par exemple, uniquement Slack) sans déployer le reste de la pile de Panacea.
Fichiers clés de Panacea¶
| Fichier | Pourquoi cela importe |
|---|---|
Panacea/packages/bots/slack/app.py |
Application Slack Bolt ; prend en charge le mode Socket ou le webhook HTTP ; message de remplacement "en train de réfléchir…" mis à jour sur place |
Panacea/packages/bots/sms/app.py |
Gestionnaire de webhook SMS Twilio (MessagingResponse/TwiML) |
Panacea/packages/bots/whatsapp/app.py |
Gestionnaire de webhook WhatsApp sandbox de Twilio |
Panacea/packages/bots/{slack,sms,whatsapp}/.env.example |
Identifiants requis par canal |
Comment cela fonctionne¶
- Slack (
slack/app.py) : écoute les événementsapp_mention.extract_query()extrait la mention<@BOT_ID>du texte du message. Il poste immédiatement un message de remplacement_Anote est en train de réfléchir…_, puis exécute l'appel LLM dans un thread en arrière-plan et édite soit ce message de remplacement sur place viaclient.chat_update(...), soit, si la publication du message de remplacement a échoué, envoie une nouvelle réponse en fil de discussion. - SMS (
sms/app.py) : Twilio envoie chaque texte entrant à/smsen tant que données de formulaire (Body,From). Le gestionnaire appelle le LLM de manière synchrone et renvoie unMessagingResponse(TwiML) avec la réponse — Twilio le livre en tant que texte de suivi. - WhatsApp (
whatsapp/app.py) : même modèle TwiML que SMS, connecté au webhook sandbox WhatsApp de Twilio au lieu d'un numéro de téléphone. - Les trois appellent directement l'API Anthropic (
anthropic.Anthropic(...).messages.create(...)) avec un prompt système partagé décrivant Anote comme un assistant de codage — elles ne passent actuellement pas par le backend de Panacea, donc elles ne bénéficient pas de RAG/grounding de documents, de mesure de crédits, ou d'orchestration multi-agents des recettes 03/04/08. - Les réponses sont réduites à la limite de chaque canal avant l'envoi : Slack 2900 caractères, SMS/WhatsApp 1600 caractères, chacune avec un avis de troncature ajouté si coupée.
Écart architectural à connaître¶
Parce que ces bots appellent Anthropic directement au lieu de passer par le backend de Panacea, un utilisateur Slack/SMS/WhatsApp ne peut actuellement pas poser de questions ancrées dans des documents qu'il a téléchargés sur Panacea, et leur utilisation n'est pas mesurée par le système de crédits dans la recette 08. Si vous souhaitez une parité de canal avec l'interface web, la prochaine étape naturelle est de remplacer l'appel direct anthropic_client.messages.create(...) par une requête vers le propre /v1/chat/completions de Panacea (la passerelle compatible OpenAI de la recette 07) afin que ces bots héritent de RAG, d'orchestration et de facturation gratuitement.
Exécutez-le localement¶
Chaque bot est indépendant — installez et exécutez uniquement ceux dont vous avez besoin.
Slack¶
bash
cd Panacea/packages/bots/slack
pip install -r requirements.txt
cp .env.example .env # remplissez SLACK_BOT_TOKEN, SLACK_SIGNING_SECRET, ANTHROPIC_API_KEY
python app.py
Définissez SLACK_APP_TOKEN dans .env pour exécuter en mode Socket (aucune URL publique nécessaire) ; sinon, il sert HTTP sur PORT (par défaut 3000) et attend que le webhook de l'API des événements de Slack pointe vers POST /slack/events.
SMS¶
bash
cd Panacea/packages/bots/sms
pip install -r requirements.txt
cp .env.example .env # remplissez ANTHROPIC_API_KEY
python app.py
Configurez le webhook SMS de votre numéro de téléphone Twilio pour POST https://<your-host>/sms (port par défaut 3001).
WhatsApp¶
bash
cd Panacea/packages/bots/whatsapp
pip install -r requirements.txt
cp .env.example .env # remplissez ANTHROPIC_API_KEY
python app.py
Configurez le webhook sandbox WhatsApp de Twilio pour pointer vers POST /whatsapp sur ce service.
Chaque bot expose également GET /health pour un contrôle rapide de l'état.
Notes pour le livre de recettes¶
C'est une bonne recette pour "étendre Panacea" : les lecteurs peuvent voir la version directe vers Anthropic fonctionner en quelques minutes, puis suivre la note sur l'écart architectural ci-dessus pour la connecter au backend de Panacea à la place pour des réponses ancrées et mesurées.