AI Manager — это универсальный Python-менеджер для удобной работы с API различных AI-провайдеров. Он предоставляет единый интерфейс для отправки запросов, автоматический выбор доступного провайдера, управление прокси-серверами и гибкую настройку параметров.
- Поддержка нескольких провайдеров: Работайте с GigaChat, Gemini, Groq, Mistral, OpenRouter, SambaNova и YandexGPT через один интерфейс.
- Автоматический выбор провайдера: Менеджер сам найдет и выберет первого доступного провайдера на основе ваших API-ключей в переменных окружения.
- Встроенный менеджер прокси: Автоматический поиск, тестирование и использование прокси-серверов для провайдеров, которым это необходимо.
- Гибкая настройка: Устанавливайте глобальные и локальные параметры для температуры, максимального количества токенов и моделей.
- Управление системным промптом: Легко задавайте и меняйте системный промпт для всех запросов.
- Получение списка моделей: Узнайте, какие модели доступны у каждого провайдера.
- Автоматическая установка сертификатов: Для GigaChat менеджер сам проверит и установит необходимые сертификаты Минцифры.
Установите библиотеку с помощью pip, указав ссылку на этот Git-репозиторий. Все необходимые зависимости, такие как python-dotenv, будут установлены автоматически.
pip install git+https://github.com/sarvensky/ai_manager.git@mainДля работы менеджера необходимо указать API-ключи для тех провайдеров, которые вы планируете использовать.
- Создайте файл
.envв корневой директории вашего проекта. - Добавьте в него ключи по следующему шаблону:
# .env
# Обязательно для GigaChat
GIGACHAT_API_KEY="Ваш_авторизационный_ключ_для_GigaChat"
# Обязательно для Groq
GROQ_API_KEY="Ваш_ключ_для_Groq"
# Обязательно для Gemini
GEMINI_API_KEY="Ваш_ключ_для_Gemini"
# Обязательно для Mistral
MISTRAL_API_KEY="Ваш_ключ_для_Mistral"
# ... и для других провайдеров
# SAMBANOVA_API_KEY="..."
# OPENROUTER_API_KEY="..."
# YANDEX_API_KEY="..."
# YANDEX_FOLDER_ID="..."Вы можете гибко настраивать поведение менеджера с помощью дополнительных переменных в вашем .env файле.
# --- Основные настройки ---
# Провайдер, который будет использоваться по умолчанию.
# Если не указан, будет выбран первый доступный из списка.
# Пример: AI_PROVIDER="groq"
AI_PROVIDER="groq"
# Путь к файлу с системным промптом (относительно корня проекта).
# Пример: SYSTEM_PROMPT_FILE="PROMPTS/main_prompt.txt"
SYSTEM_PROMPT_FILE="PROMPTS/system_prompt.txt"
# Температура генерации по умолчанию (число с точкой).
DEFAULT_TEMPERATURE="0.6"
# --- Настройки моделей по умолчанию ---
# Вы можете переопределить модели по умолчанию для каждого провайдера.
# Это удобно, чтобы не указывать модель при каждом вызове .chat().
#
# Формат: <ПРОВАЙДЕР>_MODEL="имя_модели"
# Например, чтобы использовать Llama3 70b для Groq:
# GROQ_MODEL="llama3-70b-8192"
#
# GIGACHAT_MODEL="GigaChat-Pro"
# GEMINI_MODEL="gemini-1.5-pro-latest"
# MISTRAL_MODEL="mistral-large-latest"
# OPENROUTER_MODEL="anthropic/claude-3-haiku:free"
# SAMBANOVA_MODEL="Llama-3-70B-Instruct"
# YANDEX_MODEL="yandexgpt"
# --- Настройки прокси ---
# Глобально включает (True) или отключает (False) использование прокси.
USE_PROXY="False"
# Включает прокси только для определенных провайдеров (список через запятую).
# Имеет приоритет над USE_PROXY.
# Пример: PROXY_FOR_PROVIDERS="gemini,gigachat"
PROXY_FOR_PROVIDERS=""
# Ваш статический прокси-сервер. Если указан, автоматический поиск выполняться не будет.
# Пример: PROXY_SERVER="http://user:pass@host:port"
PROXY_SERVER=""
# Таймаут в секундах на весь процесс поиска прокси с помощью proxybroker.
PROXY_FIND_TIMEOUT="60"
# Таймаут в секундах на проверку одного прокси-сервера.
PROXY_TEST_TIMEOUT="10"
# Список стран (коды ISO 3166-1 alpha-2 через запятую) для поиска прокси.
PROXY_COUNTRIES="US,DE,FR"
# Включает (True) или отключает (False) логирование работы прокси-менеджера.
PROXY_LOG_ENABLED="True"
# Сколько дней хранить файлы логов прокси. Установите 0, чтобы не удалять старые логи.
PROXY_LOG_RETENTION_DAYS="30"
# --- Настройки для конкретных провайдеров ---
# OpenRouter: Показывать только бесплатные модели (True/False).
OPENROUTER_FREE_MODELS_ONLY="True"Вот простой пример использования менеджера.
from ai_manager import AIManager
from dotenv import load_dotenv
# Загружаем переменные окружения (API-ключи) из .env файла
load_dotenv()
try:
# 1. Инициализируем менеджер
# Он автоматически найдет первого доступного провайдера
ai = AIManager()
print(f"✅ Успешно инициализирован провайдер: {ai.get_provider_name()}")
# 2. Готовим сообщения для диалога
messages = [
{"role": "user", "content": "Привет! Расскажи интересный факт о космосе."}
]
# 3. Отправляем запрос
print("\nОтправляю запрос...")
response = ai.chat(messages)
# 4. Печатаем ответ
print("\nОтвет модели:")
print(response)
except (ValueError, RuntimeError) as e:
print(f"❌ Произошла ошибка: {e}")Класс для управления AI-провайдерами.
from ai_manager import AIManager
ai = AIManager()Основной метод для отправки запроса к модели.
messages(list): Список словарей, описывающих диалог. Пример:[{"role": "user", "content": "Твой вопрос"}]provider_name(str, optional): Позволяет выполнить этот конкретный запрос через другого провайдера, не меняя основного.model(str, optional): Указать конкретную модель для этого запроса.temperature(float, optional): Температура генерации для этого запроса (от0.0до2.0).max_tokens(int, optional): Максимальное количество токенов в ответе.
Пример:
# Простой запрос
response = ai.chat([{"role": "user", "content": "Как дела?"}])
# Запрос к другому провайдеру с указанием модели
response_groq = ai.chat(
messages=[{"role": "user", "content": "Что такое Groq?"}],
provider_name="groq",
model="llama3-8b-8192"
)Возвращает имя текущего активного провайдера.
Переключает активного провайдера.
Возвращает текущий экземпляр класса провайдера.
print(f"Текущий провайдер: {ai.get_provider_name()}") # -> 'gigachat'
ai.set_provider("groq")
print(f"Новый провайдер: {ai.get_provider_name()}") # -> 'groq'Вы можете задать глобальные параметры, которые будут применяться ко всем последующим вызовам chat().
Устанавливает модель по умолчанию для указанного (или текущего) провайдера.
# Установить модель по умолчанию для текущего провайдера
ai.set_default_model("llama3-70b-8192")
# Установить модель по умолчанию для другого провайдера
ai.set_default_model("GigaChat-Pro", provider_name="gigachat")Устанавливает глобальную температуру.
Устанавливает глобальное ограничение на токены.
Сбрасывает все настройки по умолчанию (модели, температура, токены) к исходным значениям.
Возвращает модель по умолчанию для указанного (или текущего) провайдера.
Возвращает текущую температуру по умолчанию.
Возвращает текущее максимальное количество токенов по умолчанию.
Загружает и устанавливает глобальный системный промпт из текстового файла.
# Создаем файл system.txt
with open("system.txt", "w", encoding="utf-8") as f:
f.write("Ты — полезный ассистент, который говорит в стиле пирата.")
ai.set_system_prompt("system.txt")
# Теперь все ответы будут в пиратском стиле
response = ai.chat([{"role": "user", "content": "Какой сегодня день?"}])
print(response) # -> "Йо-хо-хо! Сегодняшний день..."Возвращает текущий системный промпт.
Удаляет глобальный системный промпт.
Возвращает список доступных моделей для текущего провайдера.
Проверяет доступные модели у всех провайдеров и сохраняет их в файл. Полезно, если вы не уверены, какие модели сейчас актуальны.
Возвращает имя модели, которая будет использована по умолчанию в следующем вызове chat().
Порядок определения модели следующий:
- Модель, установленная через
set_default_model()для текущего провайдера. - Модель, указанная в
.envфайле (например,GROQ_MODEL="ваша_модель"). - Модель по умолчанию, заданная в коде самого провайдера.
Возвращает статус прокси-менеджера.
Включает (True) или отключает (False) использование прокси.
Принудительно запускает поиск нового рабочего прокси.
Проект распространяется под лицензией MIT.