Перейти к содержанию

Панасея Мульти-канальные Мессенджер Боты

Этот рецепт объясняет интеграции в стиле 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 Необходимые учетные данные для каждого канала

Как это работает

  1. Slack (slack/app.py): слушает события app_mention. extract_query() удаляет упоминание <@BOT_ID> из текста сообщения. Он немедленно публикует сообщение-заполнитель _Anote думает…_, затем запускает вызов LLM в фоновом потоке и либо редактирует этот заполнитель на месте через client.chat_update(...), либо, если публикация заполнителя не удалась, отправляет свежий потоковый ответ.
  2. SMS (sms/app.py): Twilio POST-ит каждый входящий текст на /sms как данные формы (Body, From). Обработчик синхронно вызывает LLM и возвращает MessagingResponse (TwiML) с ответом — Twilio доставляет его как последующее сообщение.
  3. WhatsApp (whatsapp/app.py): тот же шаблон TwiML, что и SMS, подключен к вебхуку Twilio WhatsApp sandbox вместо номера телефона.
  4. Все три вызывают Anthropic API напрямую (anthropic.Anthropic(...).messages.create(...)) с общим системным запросом, описывающим Anote как помощника по программированию — они в настоящее время не проксируются через собственный бэкенд Панасеи, поэтому не получают RAG/документальное основание, учет кредитов или многопользовательскую оркестрацию из рецептов 03/04/08.
  5. Ответы обрезаются до лимита каждого канала перед отправкой: 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 работает за считанные минуты, а затем следовать заметке о архитектурном пробеле выше, чтобы подключить его через бэкенд Панасеи для обоснованных, учтенных ответов.