Создание «ясновидящего» – чат‑бота, который отвечает на вопросы пользователей предсказаниями, гаданиями или советами – стало популярным способом развлечь друзей и подписчиков в мессенджерах. Ниже представлен пошаговый гайд, как реализовать такого бота в WhatsApp, используя официальный WhatsApp Business API и современные инструменты обработки естественного языка (NLP).
Содержание
- Подготовка окружения и получение доступа к API
- Проектирование диалоговой логики
- Выбор и настройка модели NLP
- Развёртывание бота на сервере
- Тестирование и отладка
- Юридические и этические аспекты
- Полезные советы и улучшения
Подготовка окружения и получение доступа к API
Для работы с WhatsApp необходим официальный WhatsApp Business API. Вот что нужно сделать:
- Зарегистрировать бизнес‑аккаунт в Facebook Business Manager.
- Получить одобрение от WhatsApp (проверка компании, верификация номера телефона).
- Выбрать хостинг провайдера (например, Twilio, MessageBird, 360dialog) или развернуть собственный сервер с использованием официального
whatsapp-business-apiDocker‑образа. - Настроить вебхуки для получения входящих сообщений и отправки ответов.
- Получить тестовый номер ( sandbox ) для отладки перед запуском в продакшн.
Пример минимальной конфигурации вебхука на Node.js:
const express = require('express');
const app = express;
app.use(express.json);
app.post('/webhook', (req, res) => {
const msg = req.body.entry[0].changes[0].value.messages[0];
const from = msg.from; // номер отправителя
const text = msg.text.body; // текст сообщения
// Здесь будет логика бота
const reply = generateFortune(text);
// Отправляем ответ через API
sendWhatsAppMessage(from, reply);
res.sendStatus(200);
});
app.listen(3000, => console.log('Webhook listening on port 3000'));
Проектирование диалоговой логики
Прежде чем писать код, продумайте, как будет выглядеть диалог:
- Приветствие – короткое сообщение с инструкцией («Напиши свой вопрос, и я посмотрю в будущее…»)
- Получение запроса – пользователь пишет вопрос или тему (любовь, работа, здоровье).
- Обработка намерения – определить, относится ли сообщение к гаданию или требуется уточнение.
- Генерация ответа – сформировать предсказание (можно использовать готовые шаблоны или нейросеть).
- Завершение сессии – предложить задать ещё один вопрос или попрощаться.
Для простоты можно реализовать конечный автомат с тремя состояниями: GREETING, WAITING_FOR_QUESTION, ANSWERING.
Выбор и настройка модели NLP
Чтобы бот выглядел «ясновидящим», нужно понимать смысл вопроса и подбирать подходящий ответ. Есть несколько подходов:
- Rule‑based (правила) – простые шаблоны и ключевые слова. Подходит для демо‑версии.
- Классификация намерений – обучить модель (например,
Rasa NLUилиDialogflow) распознавать категории:love,career,health,general. - Генерация текста – использовать небольшую языковую модель (GPT‑2, GPT‑Neo, или локальную модель типа
ruGPT3) для создания мистических предсказаний.
Пример использования transformers (Python) для генерации ответа:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("sberbank-ai/rugpt3small_based_on_gpt2")
model = AutoModelForCausalLM.from_pretrained("sberbank-ai/rugpt3small_based_on_gpt2")
def generate_fortune(prompt: str) -> str:
input_ids = tokenizer.encode(f"Вопрос: {prompt}
Ответ:", return_tensors="pt")
output = model.generate(
input_ids,
max_length=100,
temperature=0.8,
top_p=0.9,
do_sample=True,
pad_token_id=tokenizer.eos_token_id
)
text = tokenizer.decode(output[0], skip_special_tokens=True)
# Извлекаем только часть после "Ответ:"
return text.split("Ответ:")[-1].strip
Для повышения «мистичности» можно добавить в промпт фразы вроде:
«Ты древний оракул, отвечай загадочно, используя символы и метафоры».
Развёртывание бота на сервере
После того как логика и модель готовы, нужно разместить код на сервере, который будет постоянно слушать вебхуки.
- Выбор платформы: Heroku, Render, Railway, VPS (Ubuntu/Docker) или облачные функции (AWS Lambda, Google Cloud Functions).
- Контейнеризация (рекомендуется): упаковать приложение в Docker‑образ, чтобы обеспечить одинаковое окружение.
- Переменные окружения: хранить токены API, ключи доступа к модели и другие секреты в
.envфайле или в системе секретов провайдера. - Масштабирование: при росте числа пользователей можно добавить несколько инстансов и балансировщик нагрузки.
Пример Dockerfile для Python‑бота:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
ENV PORT=8080
EXPOSE 8080
CMD ["python", "bot.py"]
Тестирование и отладка
Перед запуском в продакшн проведите несколько этапов тестирования:
- Сandbox‑режим – отправляйте тестовые сообщения с официального номера WhatsApp Sandbox и проверяйте ответы.
- Юнит‑тесты – проверяйте функции классификации намерений и генерации текста.
- Нагрузочное тестирование – смоделировать одновременные запросы (например, с помощью
locustилиk6) чтобы убедиться, что сервис выдерживает нагрузку. - Обратная связь от реальных пользователей – запустите закрытый бета‑тест с друзьями или коллегами, соберите замечания о точности и «мистичности» ответов.
Если ответы кажутся слишком шаблонными, попробуйте увеличить разнообразие обучающих данных или добавить случайные элементы (например, выбор из списка мистических фраз).
Юридические и этические аспекты
При работе с предсказаниями важно помнить о следующих моментах:
- Отказ от ответственности – явно указывайте, что ответы носят развлекательный характер и не являются профессиональными советами (юридическими, медицинскими, финансовыми и т.д.).
- Конфиденциальность данных – не сохраняйте личную информацию пользователей без их согласия; соблюдайте GDPR и местные законы о защите данных.
- Запрещённый контент – избегайте генерации ответов, которые могут содержать дискриминацию, угрозы, ложную информацию о здоровье или другие вредные материалы.
- Политика WhatsApp – соблюдайте Условия использования WhatsApp Business API; рассылка спама или нежелательных сообщений приводит к блокировке аккаунта.
Рекомендуется разместить короткое disclaimer в приветственном сообщении:
«Я – виртуальный оракул. Мои ответы предназначены только для развлечения и не заменяют профессиональную консультацию.»
Полезные советы и улучшения
- Персонализация – используйте имя пользователя (если он представился) для более личного ответа.
- Мультимедиа – дополняйте текстовые предсказания изображениями таро, астрологическими картами или короткими аудио‑записями с «мистическим» голосом.
- Аналитика – подключите логирование запросов и ответов (без личных данных) чтобы выявлять популярные темы и улучшать модель.
- Обратная связь – добавьте кнопки «Нравится» / «Не нравится» (через интерактивные сообщения) для быстрой оценки качества ответов.
- Регулярное обновление модели – периодически дообучайте модель на новых данных, чтобы предсказания оставались свежими и интересными.
Следуя этим шагам, вы сможете создать собственного «ясновидящего» в WhatsApp, который будет удивлять друзей загадочными предсказаниями, оставаясь при этом безопасным и соответствующим правилам платформы. Удачной разработки и мистических диалогов!