telegram-cli-bot/AI_PROVIDERS.md

3.9 KiB
Raw Permalink Blame History

AI Provider Switching

Обзор

Бот поддерживает переключение между AI-провайдерами:

  • Qwen Code — основной провайдер (Alibaba)
  • GigaChat — альтернативный провайдер (Sber)

Использование

Через команду /ai

Просмотр текущего статуса:

/ai

Покажет текущего провайдера и доступные опции.

Переключение на Qwen:

/ai qwen

Переключение на GigaChat:

/ai gigachat

Через меню

  1. Нажмите /settings или кнопку "⚙️ Настройки бота"
  2. Выберите "🤖 AI-провайдер"
  3. Доступные опции:
    • "🔄 Переключить AI-провайдер" — переключает на альтернативный провайдер
    • " Информация о провайдерах" — подробная информация о каждом провайдере

Архитектура

Новые файлы

  • bot/ai_provider_manager.py — менеджер управления провайдерами
  • bot/models/user_state.py — добавлено поле current_ai_provider

Изменённые файлы

  • bot.py — модифицирован handle_ai_task() для использования текущего провайдера
  • bot/handlers/commands.py — добавлена команда /ai
  • bot/handlers/callbacks.py — добавлены обработчики меню AI-провайдера
  • bot/keyboards/menus.py — добавлено меню "🤖 AI-провайдер"

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

  1. Хранение состояния: Каждый пользователь имеет своё предпочтение провайдера в UserState.current_ai_provider

  2. Обработка запросов: При получении AI-запроса handle_ai_task() проверяет текущего провайдера и использует соответствующий API:

    • Qwen: Потоковый вывод с on_chunk callback
    • GigaChat: Ответ целиком
  3. Переключение: При переключении провайдера обновляется состояние пользователя, новый запрос сразу идёт через выбранного провайдера

Настройка GigaChat

Для использования GigaChat добавьте в .env:

# GigaChat API (Сбер)
GIGACHAT_CLIENT_ID=ваш-client-id-uuid
GIGACHAT_CLIENT_SECRET=ваш-client-secret
GIGACHAT_SCOPE=GIGACHAT_API_PERS
GIGACHAT_AUTH_URL=https://ngw.devices.sberbank.ru:9443/api/v2/oauth
GIGACHAT_MODEL=GigaChat-Pro

Отображение в ответе

В конце каждого AI-ответа указывается используемый провайдер:

📊 Контекст: 0.5%
🤖 AI: Qwen Code

или

📊 Контекст: 0.5%
🤖 AI: GigaChat

Приоритеты провайдеров

  • По умолчанию: Qwen Code
  • Если GigaChat не настроен: Переключение недоступно (показывается ошибка)
  • Инструменты: Доступны только с Qwen (GigaChat используется только для чата)

Будущие улучшения

  • Умное переключение (автоматический выбор провайдера по типу задачи)
  • Поддержка инструментов для GigaChat
  • Статистика использования провайдеров
  • Настройка провайдера по умолчанию