Перейти к основному содержимому

Настройка провайдеров и моделей

Файл профилей нужен, когда один экземпляр gpt2giga должен работать с несколькими провайдерами: GigaChat, OpenAI-совместимым API, Anthropic или Gemini. В нём задаются адреса, ссылки на учётные данные и публичные имена моделей.

Если вы используете только GigaChat, файл не обязателен: шлюз продолжит читать обычные переменные GIGACHAT_*.

Выбор файла

Передайте YAML- или JSON-файл в кодировке UTF-8:

gpt2giga --config /etc/gpt2giga/providers.yaml

Путь также можно задать через окружение:

GPT2GIGA_CONFIG=/etc/gpt2giga/providers.yaml

Если указаны оба варианта, пути должны совпадать. Два разных пути считаются ошибкой: gpt2giga не объединяет несколько файлов. Конфигурация читается один раз при запуске и не обновляется до перезапуска процесса.

Пример с четырьмя провайдерами

В примере указаны только имена переменных окружения. Замените условные идентификаторы моделей и политик значениями, проверенными для вашей установки.

schema_version: gpt2giga.provider-profiles.v2
profiles:
- profile_id: gigachat-main
provider_kind: gigachat
base_url: https://api.giga.chat/v1
credential_env: GIGACHAT_CREDENTIALS
network_policy_ref: public-gigachat
tls_policy_ref: system-default
model_inventory: dynamic

- profile_id: openai-compatible-main
provider_kind: openai_compatible
base_url: https://gateway.example.com/v1
credential_env: OPENAI_COMPATIBLE_API_KEY
network_policy_ref: public-openai-compatible
tls_policy_ref: system-default
models:
- public_alias: openai-compatible/default
upstream_model: exact-reviewed-model-id
capability_profile: openai-compatible-default-v1
support_status: technical_preview

- profile_id: anthropic-main
provider_kind: anthropic
base_url: https://api.anthropic.com
credential_env: ANTHROPIC_API_KEY
network_policy_ref: public-anthropic
tls_policy_ref: system-default
models:
- public_alias: anthropic/opus
upstream_model: exact-reviewed-anthropic-model-id
capability_profile: anthropic-opus-v1
support_status: technical_preview

- profile_id: gemini-main
provider_kind: gemini
base_url: https://generativelanguage.googleapis.com/v1beta
credential_env: GEMINI_API_KEY
network_policy_ref: public-gemini
tls_policy_ref: system-default
models:
- public_alias: gemini/pro
upstream_model: models/exact-reviewed-gemini-model-id
capability_profile: gemini-pro-v1
support_status: technical_preview

Сами секреты передавайте отдельно — например, через менеджер секретов или защищённое окружение службы:

GIGACHAT_CREDENTIALS=<secret-from-service-manager>
OPENAI_COMPATIBLE_API_KEY=<secret-from-service-manager>
ANTHROPIC_API_KEY=<secret-from-service-manager>
GEMINI_API_KEY=<secret-from-service-manager>

Не добавляйте в профиль api_key, bearer-токены, произвольные заголовки, клиентские сертификаты или флаги отключения TLS. Схема их не принимает. credential_env должен содержать имя переменной окружения в верхнем регистре. Если переменная не задана, включённый профиль не пройдёт предварительную проверку.

Поля профиля

ПолеНазначение
schema_versionВерсия схемы: gpt2giga.provider-profiles.v1 или gpt2giga.provider-profiles.v2. Для новых файлов используйте v2.
profile_idУникальный идентификатор профиля в нижнем регистре.
provider_kindТип провайдера: gigachat, openai_compatible, anthropic или gemini.
base_urlКанонический публичный HTTPS-адрес без userinfo, строки запроса и фрагмента.
credential_envИмя переменной окружения с секретом, но не сам секрет.
network_policy_refИдентификатор разрешённой сетевой политики приложения.
tls_policy_refИдентификатор разрешённой политики TLS.
allow_loopbackПо умолчанию false. Разрешает HTTP только для явно заданного локального профиля разработки.
model_inventoryТолько для v2. Значение dynamic разрешено одному профилю GigaChat; без поля используются статические алиасы.
modelsТочные привязки публичных алиасов. Обязательны для статических профилей и необязательны для динамического профиля GigaChat.
public_aliasУникальное и регистрозависимое имя модели, которое видит клиент.
upstream_modelТочный идентификатор модели у провайдера. Клиент не может его изменить.
capability_profileПроверенный набор поддерживаемых возможностей.
support_statusСтатус stable, technical_preview или blocked.
enabledПо умолчанию true. Отключённый алиас недоступен.
deprecatedПо умолчанию false. Помечает устаревший алиас, но не перенаправляет его на другую модель.

Неизвестные поля, повторяющиеся ключи YAML/JSON, одинаковые profile_id и алиасы отклоняются. Размер файла ограничен 1 МиБ. Для рабочих профилей нужен публичный HTTPS-адрес. Частные, локальные и служебные адреса запрещены, кроме явно включённого loopback-профиля разработки. Редиректы и адрес из клиентского запроса не участвуют в маршрутизации.

Отличия схем v1 и v2

Схема v1 остаётся совместимой: в каждом профиле должен быть непустой список models, а поле model_inventory не поддерживается.

В схеме v2 model_inventory: dynamic позволяет не перечислять все модели, доступные учётной записи GigaChat. Если список models всё же задан, его алиасы не фильтруют каталог провайдера. Для остальных провайдеров по-прежнему нужен хотя бы один статический алиас.

Алиасы и ревизии

Алиас ищется по точному совпадению. Другой регистр, лишние пробелы, отключённый или отсутствующий алиас дают ошибку unknown_model_alias. Шлюз не подбирает похожую модель и не переключается на другого провайдера. Устаревший алиас по-прежнему ведёт только к объявленной модели, пока его не отключат или не удалят с последующим перезапуском.

После проверки gpt2giga приводит конфигурацию без секретов к каноническому виду и вычисляет ревизии формата sha256:<lowercase-hex> для всего файла и каждого профиля. К этим ревизиям привязываются каталог моделей и диагностические записи. Значения секретов в хеш не входят и не возвращаются в API.

Статусы отдельных маршрутов описаны в матрице совместимости провайдеров. Проверка перед запуском, обновление и откат — в разделе Переход на gpt2giga 0.3.