Skip to content

ArhyPlayer/TG_AI_Assistant

Repository files navigation

🤖 AI Telegram Bot

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             # Документация

🚀 Быстрый старт

1. Клонирование и установка

# Клонируйте репозиторий
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

2. Настройка

Создайте файл .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/anthropic

3. Получение токенов

Telegram Bot Token:

  1. Откройте @BotFather в Telegram
  2. Отправьте /newbot
  3. Следуйте инструкциям
  4. Скопируйте полученный токен в .env

OpenAI API Key:

  • Зарегистрируйтесь на proxyapi.ru
  • Получите единый API ключ для OpenAI и Anthropic
  • Добавьте в .env

4. Запуск бота

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
  • 🔄 Сбросить - Вернуть к дефолту

⚙️ Параметры AI

🌡️ Температура (Temperature)

Контролирует креативность и случайность ответов:

  • 0.0 - Максимально точный и предсказуемый
  • 0.7 - Сбалансированный (по умолчанию)
  • 1.0 - Творческий режим
  • 1.5 - Экспериментальный

📏 Максимальные токены (Max Tokens)

Ограничивает длину ответа:

  • 500 - Короткие ответы
  • 1000 - Стандарт (по умолчанию)
  • 2000 - Подробные ответы
  • 4000 - Максимальная длина

Примечание: Для Claude Sonnet с extended thinking, если max_tokens < 1536, бот автоматически увеличит до 2048.

💬 System Message

Определяет поведение AI. По умолчанию: "По умолчанию."

Примеры:

  • "Ты - эксперт по Python"
  • "Отвечай кратко и по делу"
  • "Ты - дружелюбный помощник"

Отправьте - для сброса к дефолту.

📊 Статистика токенов

Бот отслеживает использование токенов отдельно для каждой модели:

📊 Статистика использования токенов:

🤖 GPT-3.5-turbo: 1,234 токенов
🧠 Claude Sonnet: 567 токенов
📈 Всего: 1,801 токенов

🎯 Текущая модель: Claude Sonnet
  • При /clear статистика текущей модели сбрасывается
  • /reset_stats очищает всю статистику
  • Данные сохраняются между перезапусками

🤖 Модели AI

GPT-3.5-turbo (OpenAI)

  • ⚡ Быстрые ответы
  • 💰 Экономичная
  • ✅ Подходит для общения, генерации текста, базовых задач

Claude Sonnet 4.5 (Anthropic)

  • 🧠 Extended thinking - показывает процесс размышлений
  • 🎯 Улучшенная логика и анализ
  • ✅ Сложные задачи, математика, программирование
  • 📈 Автоматическое управление токенами для thinking

💻 API для разработчиков

ProxyAPIClient

Класс для программной работы с 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 (если есть)

ContextManager

Класс для управления контекстами пользователей.

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"

🛡️ Безопасность

Защищенные файлы (в .gitignore)

  • .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

Ошибка "ModuleNotFoundError"

Активируйте виртуальное окружение перед запуском.

Ошибка API

  • Проверьте .env на корректность ключей
  • Убедитесь что ключи активны на proxyapi.ru
  • Проверьте интернет-соединение

Бот не отвечает

  • Проверьте логи в bot.log
  • Убедитесь что токен бота правильный
  • Попробуйте /start заново

Статистика показывает 0

  • Перезапустите бота
  • Проверьте логи на наличие ошибок подсчета токенов
  • Удалите user_contexts.json для сброса

🚀 Возможности для развития

✅ Реализовано

  • Telegram бот с инлайн кнопками
  • Персональный контекст для каждого пользователя
  • Настраиваемые параметры AI
  • Статистика токенов
  • Автосохранение данных

💡 Идеи для улучшения

  • 📄 Работа с документами (PDF, DOCX, TXT)
  • 🌐 Веб-интерфейс (Flask/FastAPI)
  • 🗄️ База данных (PostgreSQL, MongoDB)
  • 🎨 Мультимодальность (изображения, голос)
  • 🧠 RAG для работы с базой знаний
  • 👥 Поддержка групповых чатов
  • 📊 Расширенная аналитика
  • 🎤 Голосовые сообщения

📝 Лицензия

MIT License - свободно используйте в любых целях.

🤝 Вклад в проект

Contributions приветствуются!

  1. Fork проекта
  2. Создайте feature branch (git checkout -b feature/amazing)
  3. Commit изменения (git commit -m 'Add amazing feature')
  4. Push в branch (git push origin feature/amazing)
  5. Создайте Pull Request

📮 Контакты

Вопросы и предложения? Создавайте Issues!


Приятного использования! 🚀

Powered by OpenAI GPT-3.5-turbo & Anthropic Claude Sonnet 4.5

About

Telegram-бот на Python с поддержкой OpenAI GPT-3.5-turbo и Anthropic Claude Sonnet 4.5 для интеллектуальных диалогов с сохранением контекста каждого пользователя.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages