Конфигурация провайдеров и каталог моделей
- Дата: 3 августа 2026 года
- Статус: принято для gpt2giga 0.3
- Ответственные направления: профили провайдеров и интеграция
- Схемы профилей:
gpt2giga.provider-profiles.v1,gpt2giga.provider-profiles.v2,gpt2giga.provider-profiles.v3 - Схема контекста исполнения:
gpt2giga.execution-context.v1
Контекст
Настройки маршрута, публичное имя модели и список моделей провайдера — разные сущности. Профиль отвечает за стабильную конфигурацию подключения, но не должен выдавать заданные в нём алиасы за полный список доступных моделей.
Решение
Как выбирается файл конфигурации
Шлюз принимает один файл профилей:
gpt2giga --config <path>
GPT2GIGA_CONFIG=<path> gpt2giga
Параметр --config имеет приоритет над GPT2GIGA_CONFIG. Если оба источника
указывают разные пути, шлюз завершает запуск с ошибкой invalid_profile.
Без файла конфигурации gpt2giga 0.3 создаёт встроенный маршрут GigaChat из
существующих переменных GIGACHAT_*. Так сохраняется привычный сценарий
запуска, но другие провайдеры автоматически не включаются.
Если файл указан, только он определяет адреса провайдеров, ссылки на учётные данные, алиасы, доступность маршрутов и их политики. Тело запроса и заголовки не могут изменить эти настройки. Список моделей GigaChat по-прежнему запрашивается у провайдера, даже если в профиле заданы алиасы или модель по умолчанию.
Единый каталог моделей
Один ModelCatalog хранит снимок, который используют:
- публичные варианты
/models; GET /bridge/models;- проверка выбранной модели;
- проверка её возможностей.
Для GigaChat каталог получает список через API моделей с авторизацией. Алиас из профиля задаёт точный маршрут к модели, но не ограничивает полный список, который вернул провайдер.
GIGACHAT_MODEL задаёт модель по умолчанию или явно описанную принудительную
модель. Переменная не заменяет и не фильтрует каталог. Новая модель остаётся
видимой, даже если её возможности пока имеют состояние unknown.
Если в реестре нет профиля GigaChat, полный статический каталог состоит из
включённых неизменяемых алиасов. OpenAI-, Anthropic- и Gemini-варианты списка
моделей, а также /bridge/models строятся из них без обращения к провайдеру.
Версии схемы
Версия 1 сохраняет прежнюю схему со статическим списком алиасов. Версия 2 добавляет динамический каталог:
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
Версия 3 добавляет точные capabilities.features и токенные лимиты для каждого
алиаса. Без этого контракта включённый алиас openai_compatible нельзя связать
с исполняемым адаптером. Только в v3 можно не задавать credential_env для
намеренно открытого upstream.
Неизвестные поля считаются ошибкой. Во всех версиях обязательны
schema_version, profile_id, тип провайдера, адрес и ссылки на политики. В v1
и v2 также обязательно имя переменной с учётными данными. Любому статическому
профилю нужен хотя бы один алиас. Значение model_inventory: dynamic разрешено
только одному профилю GigaChat в v2/v3; алиасы в нём не фильтруют обнаруженные
модели.
Секреты нельзя записывать в профиль открытым текстом. Значения profile_id и
public_alias должны быть уникальны после проверки Unicode и пробелов. Регистр
в алиасах важен: шлюз не пытается угадывать похожие имена.
Ревизия конфигурации
После проверки профиль без секретов сериализуется в канонический JSON UTF-8:
ключи объектов сортируются, лишние пробелы удаляются, порядок элементов
массивов сохраняется. Ревизия имеет вид sha256:<lowercase-hex>. Загруженная
конфигурация не меняется до перезапуска процесса; автоматического обновления в
0.3 нет.
Контекст исполнения gpt2giga.execution-context.v1 хранит config_revision,
profile_id, public_alias, provider_kind, upstream_model,
capability_profile и loss_matrix_revision. В диагностике можно показать имя
переменной окружения, но не её значение, хеш значения или заголовок
авторизации.
Выбор маршрута и модели
До проверки возможностей и обращения к провайдеру шлюз выполняет цепочку:
публичная модель или алиас -> точный маршрут провайдера -> фактическая модель
-> ревизия каталога -> ревизия возможностей
Неизвестный, неоднозначный, отключённый или устаревший алиас не заменяется
другим. То же правило действует для временно недоступной модели.
/bridge/models и все варианты /models строятся из одного снимка каталога и
публикуют его безопасную ревизию.
При запуске и предварительной проверке используются коды
invalid_profile_schema, duplicate_profile_id, duplicate_model_alias,
invalid_destination, credential_unavailable и
invalid_policy_reference. Во время обработки запроса неизвестный алиас даёт
unknown_model_alias. Ни одна из этих ошибок не содержит значение учётных
данных.
Миграция и откат
- Без файла конфигурации продолжает работать встроенный маршрут GigaChat.
- Существующие алиасы сохраняют свои маршруты и не сужают динамический каталог GigaChat.
- После удаления
--configследующий запуск снова использует встроенный маршрут. - Версия 0.2.x игнорирует отдельный файл профилей; миграция данных не нужна.