Панасея Мульти-канальные Мессенджер Боты¶
Этот рецепт объясняет интеграции в стиле chat-ops от Панасеи: автономные боты для Slack, SMS и WhatsApp, которые позволяют пользователям задавать вопросы по программированию из мессенджеров, которые они уже используют.
Что вы узнаете¶
- Общий шаблон дизайна для всех трех ботов: получение → вызов LLM → обрезка до лимита символов канала → ответ
- Как бот Slack обрабатывает потоки и редактирует заполнитель "думает…"
- Как боты SMS/WhatsApp отвечают синхронно, используя Twilio's TwiML
- Текущий архитектурный пробел, о котором стоит знать перед расширением этих ботов
Почему это важно¶
Не каждый пользователь хочет открывать веб-интерфейс или IDE, чтобы задать вопрос — интеграции в стиле chat-ops встречают людей там, где они уже находятся. Каждый бот является небольшим, независимо развертываемым сервисом Flask, поэтому команда может запускать только те каналы, которые им нужны (например, только Slack), не поднимая остальную часть стека Панасеи.
Ключевые файлы Панасеи¶
| Файл | Почему это важно |
|---|---|
Panacea/packages/bots/slack/app.py |
Приложение Slack Bolt; поддерживает Socket Mode или HTTP webhook; потоковый заполнитель "думает…" обновляется на месте |
Panacea/packages/bots/sms/app.py |
Обработчик вебхука Twilio SMS (MessagingResponse/TwiML) |
Panacea/packages/bots/whatsapp/app.py |
Обработчик вебхука Twilio WhatsApp sandbox |
Panacea/packages/bots/{slack,sms,whatsapp}/.env.example |
Необходимые учетные данные для каждого канала |
Как это работает¶
- Slack (
slack/app.py): слушает событияapp_mention.extract_query()удаляет упоминание<@BOT_ID>из текста сообщения. Он немедленно публикует сообщение-заполнитель_Anote думает…_, затем запускает вызов LLM в фоновом потоке и либо редактирует этот заполнитель на месте черезclient.chat_update(...), либо, если публикация заполнителя не удалась, отправляет свежий потоковый ответ. - SMS (
sms/app.py): Twilio POST-ит каждый входящий текст на/smsкак данные формы (Body,From). Обработчик синхронно вызывает LLM и возвращаетMessagingResponse(TwiML) с ответом — Twilio доставляет его как последующее сообщение. - WhatsApp (
whatsapp/app.py): тот же шаблон TwiML, что и SMS, подключен к вебхуку Twilio WhatsApp sandbox вместо номера телефона. - Все три вызывают Anthropic API напрямую (
anthropic.Anthropic(...).messages.create(...)) с общим системным запросом, описывающим Anote как помощника по программированию — они в настоящее время не проксируются через собственный бэкенд Панасеи, поэтому не получают RAG/документальное основание, учет кредитов или многопользовательскую оркестрацию из рецептов 03/04/08. - Ответы обрезаются до лимита каждого канала перед отправкой: Slack 2900 символов, SMS/WhatsApp 1600 символов, каждый с уведомлением об обрезке, если это необходимо.
Архитектурный пробел, о котором стоит знать¶
Поскольку эти боты вызывают Anthropic напрямую, а не маршрутизируются через бэкенд Панасеи, пользователь Slack/SMS/WhatsApp в настоящее время не может задавать вопросы, основанные на документах, которые они загрузили в Панасею, и их использование не учитывается через систему кредитов в рецепте 08. Если вы хотите, чтобы каналы были наравне с веб-интерфейсом, естественным следующим шагом будет замена прямого вызова anthropic_client.messages.create(...) на запрос к собственному /v1/chat/completions Панасеи (совместимый шлюз OpenAI из рецепта 07), чтобы эти боты унаследовали RAG, оркестрацию и выставление счетов бесплатно.
Запустите локально¶
Каждый бот независим — установите и запустите только те, которые вам нужны.
Slack¶
bash
cd Panacea/packages/bots/slack
pip install -r requirements.txt
cp .env.example .env # заполните SLACK_BOT_TOKEN, SLACK_SIGNING_SECRET, ANTHROPIC_API_KEY
python app.py
Установите SLACK_APP_TOKEN в .env, чтобы запустить в Socket Mode (публичный URL не нужен); в противном случае он обслуживает HTTP на PORT (по умолчанию 3000) и ожидает, что вебхук Slack's Events API будет направлен на POST /slack/events.
SMS¶
bash
cd Panacea/packages/bots/sms
pip install -r requirements.txt
cp .env.example .env # заполните ANTHROPIC_API_KEY
python app.py
Настройте вебхук SMS вашего номера телефона Twilio на POST https://<your-host>/sms (порт по умолчанию 3001).
WhatsApp¶
bash
cd Panacea/packages/bots/whatsapp
pip install -r requirements.txt
cp .env.example .env # заполните ANTHROPIC_API_KEY
python app.py
Настройте вебхук Twilio WhatsApp sandbox, чтобы он указывал на POST /whatsapp на этом сервисе.
Каждый бот также предоставляет GET /health для быстрой проверки работоспособности.
Заметки для кулинарной книги¶
Это хороший рецепт "расширения Панасеи": читатели могут увидеть, как версия с прямым подключением к Anthropic работает за считанные минуты, а затем следовать заметке о архитектурном пробеле выше, чтобы подключить его через бэкенд Панасеи для обоснованных, учтенных ответов.