Telegram-бот на Python с поддержкой OpenAI GPT-3.5-turbo и Anthropic Claude Sonnet 4.5 для интеллектуальных диалогов с сохранением контекста каждого пользователя.
- 🤖 Две AI модели: GPT-3.5-turbo и Claude Sonnet 4.5 с extended thinking
- 💬 Персональный контекст: Отдельная история диалога для каждого пользователя
- 🎮 Инлайн кнопки: Удобное управление через интерактивные кнопки
- ⚙️ Настраиваемые параметры: Температура, max tokens, system message
- 📊 Статистика токенов: Отслеживание использования для каждой модели
- 💾 Автосохранение: Контексты и статистика сохраняются автоматически
- 🧹 Очистка контекста: Сброс истории и статистики одной кнопкой
- 📝 Детальное логирование: Все события записываются в
bot.log - 🔐 Безопасность: API ключи в
.env, чувствительные файлы в.gitignore
CLI_API_AI_Assistant/
├── bot.py # Telegram бот ⭐
├── proxyapi_client.py # API клиент для OpenAI/Anthropic
├── config.py # Конфигурация и константы
├── context_manager.py # Управление контекстом пользователей
├── requirements.txt # Зависимости
├── env_example.txt # Пример .env
└── README.md # Документация
# Клонируйте репозиторий
git clone https://github.com/ArhyPlayer/CLI_API_AI_Assistant.git
cd CLI_API_AI_Assistant
# Создайте виртуальное окружение
python -m venv venv
# Активируйте виртуальное окружение
# macOS/Linux:
source venv/bin/activate
# Windows:
venv\Scripts\activate
# Установите зависимости
pip install -r requirements.txtСоздайте файл .env из примера:
cp env_example.txt .envЗаполните .env вашими ключами:
# Telegram Bot Token (получите у @BotFather)
BOT_TOKEN=123456789:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
# OpenAI API Key (используется для обеих моделей через proxyapi.ru)
OPENAI_API_KEY=sk-proj-...
# Опциональные proxy URLs (по умолчанию используются эти)
OPENAI_BASE_URL=https://api.proxyapi.ru/openai/v1
ANTHROPIC_BASE_URL=https://api.proxyapi.ru/anthropicTelegram Bot Token:
- Откройте @BotFather в Telegram
- Отправьте
/newbot - Следуйте инструкциям
- Скопируйте полученный токен в
.env
OpenAI API Key:
- Зарегистрируйтесь на proxyapi.ru
- Получите единый API ключ для OpenAI и Anthropic
- Добавьте в
.env
python bot.pyБот готов к работе! Найдите его в Telegram и отправьте /start
| Команда | Описание |
|---|---|
/start |
Начать работу с ботом |
/help |
Показать справку |
/switch_openai |
Переключиться на GPT-3.5-turbo |
/switch_claude |
Переключиться на Claude Sonnet 4.5 |
/clear |
Очистить контекст и статистику текущей модели |
/stats |
Показать статистику использования токенов |
/status |
Показать полную информацию о состоянии |
/reset_stats |
Сбросить всю статистику токенов |
Главное меню:
- 🤖 Модель: GPT / 🧠 Модель: Claude - Переключение модели
- ⚙️ Настройки - Параметры AI
- 📊 Статистика - Использование токенов
- 🧹 Очистить контекст - Сброс истории
- ℹ️ Информация - Текущие настройки
- ❓ Помощь - Справка
Настройки:
- 🌡️ Температура - Креативность (0.0-1.5)
- 📏 Max Tokens - Длина ответа (500-4000)
- 💬 System Message - Роль AI
- 🔄 Сбросить - Вернуть к дефолту
Контролирует креативность и случайность ответов:
- 0.0 - Максимально точный и предсказуемый
- 0.7 - Сбалансированный (по умолчанию)
- 1.0 - Творческий режим
- 1.5 - Экспериментальный
Ограничивает длину ответа:
- 500 - Короткие ответы
- 1000 - Стандарт (по умолчанию)
- 2000 - Подробные ответы
- 4000 - Максимальная длина
Примечание: Для Claude Sonnet с extended thinking, если max_tokens < 1536, бот автоматически увеличит до 2048.
Определяет поведение AI. По умолчанию: "По умолчанию."
Примеры:
"Ты - эксперт по Python""Отвечай кратко и по делу""Ты - дружелюбный помощник"
Отправьте - для сброса к дефолту.
Бот отслеживает использование токенов отдельно для каждой модели:
📊 Статистика использования токенов:
🤖 GPT-3.5-turbo: 1,234 токенов
🧠 Claude Sonnet: 567 токенов
📈 Всего: 1,801 токенов
🎯 Текущая модель: Claude Sonnet
- При
/clearстатистика текущей модели сбрасывается /reset_statsочищает всю статистику- Данные сохраняются между перезапусками
- ⚡ Быстрые ответы
- 💰 Экономичная
- ✅ Подходит для общения, генерации текста, базовых задач
- 🧠 Extended thinking - показывает процесс размышлений
- 🎯 Улучшенная логика и анализ
- ✅ Сложные задачи, математика, программирование
- 📈 Автоматическое управление токенами для thinking
Класс для программной работы с AI моделями.
from proxyapi_client import ProxyAPIClient
# Создание клиента
client = ProxyAPIClient(
provider="openai", # или "anthropic"
model="gpt-3.5-turbo",
temperature=0.7,
max_tokens=1000
)
# Установка system prompt
client.set_system_prompt("Ты - эксперт по Python")
# Отправка сообщения (возвращает ответ и количество токенов)
response, tokens_used = client.send_message("Объясни декораторы")
print(f"Ответ: {response}")
print(f"Токенов: {tokens_used}")
# Очистка истории
client.clear_history()
# Получение истории
history = client.get_history()Методы:
send_message(message, system_prompt=None)→(response, tokens_used)set_system_prompt(prompt)- Установить системный промптclear_history()- Очистить историюget_history()- Получить список сообщенийadd_message(role, content)- Добавить сообщение
Атрибуты:
provider- "openai" или "anthropic"model- Название моделиmessages- История сообщенийtemperature- Температура генерацииmax_tokens- Максимум токеновsystem_prompt- Системный промптlast_thinking_text- Размышления Claude (если есть)
Класс для управления контекстами пользователей.
from context_manager import ContextManager
manager = ContextManager()
# Получить контекст пользователя
context = manager.get_context(user_id=123456)
# Обновить контекст
manager.update_context(
user_id=123456,
messages=[...],
model="gpt-3.5-turbo",
provider="openai",
system_prompt="Ты - помощник",
temperature=0.7,
max_tokens=1000
)
# Очистить контекст
manager.clear_context(user_id=123456)
# Работа с токенами
manager.add_tokens_used(user_id=123456, provider="openai", tokens=150)
tokens = manager.get_tokens_used(user_id=123456, provider="openai")
manager.reset_tokens_used(user_id=123456, provider="openai")Файл config.py содержит настройки по умолчанию:
# Модели по умолчанию
DEFAULT_MODEL_OPENAI = "gpt-3.5-turbo"
DEFAULT_MODEL_ANTHROPIC = "claude-sonnet-4-5-20250929"
# Параметры генерации
DEFAULT_TEMPERATURE = 0.7
DEFAULT_MAX_TOKENS = 1000
DEFAULT_SYSTEM_PROMPT = "По умолчанию."
# Максимум сообщений в истории
MAX_CONTEXT_LENGTH = 50
# Proxy URLs (можно переопределить в .env)
OPENAI_BASE_URL = "https://api.proxyapi.ru/openai/v1"
ANTHROPIC_BASE_URL = "https://api.proxyapi.ru/anthropic"- ✅
.env- секретные ключи - ✅
user_contexts.json- персональные данные - ✅
bot.log- логи с потенциально чувствительной информацией - ✅
__pycache__/- скомпилированные файлы - ✅
venv/- виртуальное окружение
- 🔒 Никогда не коммитьте
.envв git - 🔄 Регулярно меняйте API ключи
- 👥 Используйте разные ключи для dev/prod
- 📝 Следите за логами на предмет утечек данных
openai==2.14.0 # OpenAI API клиент
anthropic==0.75.0 # Anthropic API клиент
aiogram==3.24.0 # Telegram Bot framework
python-dotenv==1.2.1 # Управление .env файлами
Установка: pip install -r requirements.txt
# Проверьте, что виртуальное окружение активировано
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # Windows
# Переустановите зависимости
pip install -r requirements.txt --force-reinstallАктивируйте виртуальное окружение перед запуском.
- Проверьте
.envна корректность ключей - Убедитесь что ключи активны на proxyapi.ru
- Проверьте интернет-соединение
- Проверьте логи в
bot.log - Убедитесь что токен бота правильный
- Попробуйте
/startзаново
- Перезапустите бота
- Проверьте логи на наличие ошибок подсчета токенов
- Удалите
user_contexts.jsonдля сброса
- Telegram бот с инлайн кнопками
- Персональный контекст для каждого пользователя
- Настраиваемые параметры AI
- Статистика токенов
- Автосохранение данных
- 📄 Работа с документами (PDF, DOCX, TXT)
- 🌐 Веб-интерфейс (Flask/FastAPI)
- 🗄️ База данных (PostgreSQL, MongoDB)
- 🎨 Мультимодальность (изображения, голос)
- 🧠 RAG для работы с базой знаний
- 👥 Поддержка групповых чатов
- 📊 Расширенная аналитика
- 🎤 Голосовые сообщения
MIT License - свободно используйте в любых целях.
Contributions приветствуются!
- Fork проекта
- Создайте feature branch (
git checkout -b feature/amazing) - Commit изменения (
git commit -m 'Add amazing feature') - Push в branch (
git push origin feature/amazing) - Создайте Pull Request
Вопросы и предложения? Создавайте Issues!
Приятного использования! 🚀
Powered by OpenAI GPT-3.5-turbo & Anthropic Claude Sonnet 4.5