Библиотека для создания умных чат-ботов
Project description
Smart Bot Factory
Инструмент для создания умных чат-ботов с поддержкой AI, административной панели и тестирования.
🚀 Быстрый старт
Установка
pip install smart-bot-factory
Создание первого бота
# Создать нового бота
sbf create my-bot
# Запустить бота
sbf run my-bot
📋 Команды CLI
sbf create <bot_id> [template]
Создает нового бота с указанным ID.
# Создать бота с базовым шаблоном
sbf create my-bot
# Создать бота на основе существующего
sbf create new-bot existing-bot
Что создается:
- 📁
bots/my-bot/- папка с конфигурацией бота - 📄
my-bot.py- файл для запуска бота - ⚙️
.env- файл конфигурации - 📝 Промпты, тесты, файлы из шаблона
sbf run <bot_id>
Запускает бота в рабочем режиме.
sbf run my-bot
Автоматически:
- ✅ Проверяет наличие всех необходимых файлов
- ⚙️ Загружает конфигурацию из
.env - 🚀 Запускает бота
sbf test <bot_id> [options]
Запускает тесты бота.
# Все тесты
sbf test my-bot
# Конкретный файл тестов
sbf test my-bot scenario_examples.yaml
# Подробный вывод
sbf test my-bot -v
# Больше потоков для быстрого тестирования
sbf test my-bot --max-concurrent 10
sbf list
Показывает список всех доступных ботов.
sbf list
sbf config <bot_id>
Открывает конфигурацию бота в редакторе.
sbf config my-bot
sbf prompts <bot_id> [options]
Управление промптами бота.
# Показать список промптов
sbf prompts my-bot --list
# Редактировать промпт
sbf prompts my-bot --edit system_prompt
# Добавить новый промпт
sbf prompts my-bot --add custom_prompt
sbf copy <source_bot> <new_bot>
Копирует существующего бота как шаблон.
# Скопировать бота
sbf copy my-bot my-bot-v2
# Перезаписать существующего бота
sbf copy my-bot my-bot-v2 --force
sbf rm <bot_id>
Удаляет бота и все его файлы.
# Удалить с подтверждением
sbf rm my-bot
# Удалить без подтверждения
sbf rm my-bot --force
sbf link
Создает UTM-ссылки для бота.
sbf link
sbf path
Показывает путь к проекту.
sbf path
🏗️ Структура проекта
project/
├── bots/
│ └── my-bot/
│ ├── .env # Конфигурация
│ ├── prompts/ # Промпты
│ │ ├── system_prompt.txt
│ │ ├── welcome_message.txt
│ │ └── final_instructions.txt
│ ├── tests/ # Тесты
│ │ └── scenario_examples.yaml
│ ├── reports/ # Отчеты тестирования
│ ├── welcome_files/ # Файлы для приветствия
│ └── files/ # Дополнительные файлы
├── my-bot.py # Файл запуска бота
└── smart_bot_factory/ # Библиотека
⚙️ Конфигурация (.env)
# Telegram
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
# Supabase
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your_supabase_anon_key
# OpenAI
OPENAI_API_KEY=sk-your-openai-api-key
OPENAI_MODEL=gpt-4
OPENAI_MAX_TOKENS=1500
OPENAI_TEMPERATURE=0.7
# Администраторы
ADMIN_TELEGRAM_IDS=123456789,987654321
ADMIN_SESSION_TIMEOUT_MINUTES=30
# Настройки
DEBUG_MODE=false
MAX_CONTEXT_MESSAGES=50
LOG_LEVEL=INFO
MESSAGE_PARSE_MODE=Markdown
🧪 Тестирование
Формат тестов (YAML)
scenarios:
- name: "Тест приветствия"
steps:
- user_input: "Привет!"
expected_keywords:
- ["привет", "здравствуйте", "добро пожаловать"]
- ["помочь", "помощь"]
forbidden_keywords: ["пока", "до свидания"]
- name: "Тест с синонимами"
steps:
- user_input: "Сколько это стоит?"
expected_keywords:
- ["стоит", "цена", "стоимость", "сколько"]
- ["рубл", "пакет", "вариант"]
forbidden_keywords: ["бесплатно"]
Поддержка синонимов
В expected_keywords можно использовать:
- Одно слово:
["привет"] - Синонимы:
[["привет", "здравствуйте", "добро пожаловать"]] - Смешанный формат:
["привет", ["здравствуйте", "добро пожаловать"]]
🤖 Программирование ботов
Основной файл бота
#!/usr/bin/env python3
"""
Бот my-bot - создан с помощью Smart Bot Factory
"""
import asyncio
from smart_bot_factory.core import event_handler, send_message_by_human
from smart_bot_factory.creation import BotBuilder
# =============================================================================
# ОБРАБОТЧИКИ СОБЫТИЙ
# =============================================================================
@event_handler("appointment_booking", "Записывает пользователя на прием")
async def handle_appointment(user_id: int, event_data: dict):
"""Обработчик записи на прием"""
await send_message_by_human(
user_id=user_id,
message_text="✅ Ваша запись на прием подтверждена!"
)
return {
"status": "success",
"appointment_id": "123"
}
# =============================================================================
# ОСНОВНАЯ ФУНКЦИЯ
# =============================================================================
async def main():
"""Основная функция запуска бота"""
try:
# Создаем и собираем бота
bot_builder = BotBuilder("my-bot")
await bot_builder.build()
# Запускаем бота
await bot_builder.start()
except Exception as e:
print(f"❌ Ошибка запуска бота: {e}")
raise
if __name__ == "__main__":
asyncio.run(main())
Обработчики событий
@event_handler("phone_collection", "Собирает номер телефона")
async def collect_phone(user_id: int, event_data: dict):
"""Сбор номера телефона"""
phone = event_data.get('phone')
# Логика сохранения номера
return {
"status": "success",
"phone": phone
}
👑 Административная панель
Команды для админов
/admin- Вход в режим администратора/чаты- Показать активные диалоги/чат <user_id>- Начать диалог с пользователем/завершить- Завершить текущий диалог/отладка <user_id>- Отладочная информация
Живой чат
Админы могут:
- 💬 Вести диалоги с пользователями в реальном времени
- 📊 Видеть историю сообщений
- ⏰ Автоматическое завершение диалогов по таймауту
- 🎛️ Управление через кнопки
📊 Отчеты и аналитика
Тестирование
- 📈 Детальные отчеты по каждому тесту
- ⏱️ Время выполнения тестов
- 📊 Статистика прохождения
- 💾 Сохранение отчетов в
bots/my-bot/reports/
Логирование
# Уровни логирования
LOG_LEVEL=DEBUG # Подробная отладка
LOG_LEVEL=INFO # Основная информация
LOG_LEVEL=WARNING # Только предупреждения
LOG_LEVEL=ERROR # Только ошибки
🔧 Расширенные возможности
UTM-трекинг
# Генерация UTM-ссылок
sbf link
Поддерживаемые параметры:
utm_source- источник трафикаutm_medium- каналutm_campaign- кампанияutm_content- контентutm_term- ключевое слово
Файлы и медиа
- 📁
welcome_files/- файлы для приветствия - 📎
files/- дополнительные файлы бота - 🖼️ Поддержка изображений, документов, видео
Кастомизация промптов
# Редактирование системного промпта
sbf prompts my-bot --edit system_prompt
# Создание нового промпта
sbf prompts my-bot --add custom_instructions
🆘 Поддержка и помощь
Частые проблемы
-
Бот не запускается
- Проверьте
.envфайл - Убедитесь в правильности токенов
- Проверьте логи:
LOG_LEVEL=DEBUG
- Проверьте
-
Тесты не проходят
- Проверьте формат YAML
- Используйте
-vдля подробного вывода - Убедитесь в корректности ключевых слов
-
Админские функции не работают
- Проверьте
ADMIN_TELEGRAM_IDSв.env - Убедитесь, что ID указан правильно
- Используйте
/adminдля входа в режим
- Проверьте
Отладка
# Включить режим отладки
DEBUG_MODE=true
# Подробные логи
LOG_LEVEL=DEBUG
# Тестирование с подробным выводом
sbf test my-bot -v
📚 Примеры
Полный цикл разработки
# 1. Создать бота
sbf create sales-bot
# 2. Настроить конфигурацию
sbf config sales-bot
# 3. Редактировать промпты
sbf prompts sales-bot --edit system_prompt
# 4. Создать тесты
sbf prompts sales-bot --add test_scenarios
# 5. Запустить тесты
sbf test sales-bot -v
# 6. Запустить бота
sbf run sales-bot
Копирование и модификация
# Скопировать успешного бота
sbf copy sales-bot sales-bot-v2
# Модифицировать копию
sbf prompts sales-bot-v2 --edit system_prompt
# Протестировать изменения
sbf test sales-bot-v2
# Запустить новую версию
sbf run sales-bot-v2
Smart Bot Factory - создавайте умных ботов быстро и эффективно! 🚀
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file smart_bot_factory-0.1.5.tar.gz.
File metadata
- Download URL: smart_bot_factory-0.1.5.tar.gz
- Upload date:
- Size: 11.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d5c35b2c462db4238a80d1f910047f4051b6a8b89bf31bf15d39e7eac0a6ff5
|
|
| MD5 |
8babe5b0e94ad495dcc99cd9d28c637b
|
|
| BLAKE2b-256 |
31e1815fe057ae0379c6c65ad7f9ba6af35e9e33d4c2ce569bd8ddd0567768d6
|
File details
Details for the file smart_bot_factory-0.1.5-py3-none-any.whl.
File metadata
- Download URL: smart_bot_factory-0.1.5-py3-none-any.whl
- Upload date:
- Size: 3.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ab2340c94d0700d358e05722b371df146ad1042dd442d1aa2f1538219230b81
|
|
| MD5 |
b91a04e883ffc2833fed6c13e350ce3b
|
|
| BLAKE2b-256 |
8e028a853f8425fa6aade1f06d64b8b8563663ec25ba815bf77962c816b3d6a0
|