Implementar catálogos de modelos para gateways e serviços de nuvem
Obtenha os valores predefinidos do Codex específicos de cada versão, aplique substituições do fornecedor e disponibilize um catálogo de modelos
Esta página destina-se a programadores que implementam o formato Codex Models, que define o catálogo de modelos e serve de base ao seletor de modelos. Se desenvolver um fornecedor de inferência, como um gateway ou um serviço de nuvem, utilize esta especificação para permitir que a aplicação Codex para computador e a CLI descubram os seus modelos e utilizem as respetivas instruções e definições de capacidades.
Se administrar uma organização e pretender controlar o catálogo de modelos, consulte as
orientações de configuração de model_catalog_url.
Para suportar o formato, implemente um endpoint de catálogo autenticado. Obtenha os valores predefinidos atuais do fornecedor a montante para a versão do Codex que faz o pedido, aplique as suas substituições e devolva o catálogo resultante.
client_version Implementar o endpoint do catálogo
O endpoint predefinido do catálogo é /models sob o base_url do fornecedor.
Por exemplo, com base_url = "https://gateway.example.com/v1", o Codex solicita:
GET /v1/models?client_version=0.162.1
Authorization: Bearer <PROVIDER_ACCESS_TOKEN>A descoberta predefinida suporta autenticação através de comandos e autenticação através do backend do Codex,
como a do ChatGPT. Para um fornecedor personalizado que utilize autenticação por API key
sem autenticação através de comandos, defina model_providers.<id>.model_catalog_url
explicitamente para ativar a descoberta remota. Uma API key, por si só, não desencadeia a descoberta
no caminho predefinido.
Utilize model_catalog_url para escolher um URL completo do catálogo, como
https://gateway.example.com/codex/models. Também pode apontar para o endpoint predefinido
/v1/models. O Codex utiliza este URL diretamente, sem acrescentar /models.
Para a descoberta com API key, mantenha features.api_key_model_discovery ativado; está ativado
por predefinição. Os cabeçalhos personalizados, por si só, não ativam a descoberta.
O Codex envia a autenticação do fornecedor selecionado e os cabeçalhos configurados, e
acrescenta client_version e quaisquer query_params do fornecedor. Aloje o catálogo num
serviço autorizado a receber essas credenciais.
Autentique o requerente, obtenha os valores predefinidos a montante correspondentes, aplique as suas
substituições e devolva diretamente o JSON ModelsResponse completo. Atribua a cada
entrada um slug único e não vazio. Para um model_catalog_url explícito, o Codex rejeita
redirecionamentos e respostas superiores a 1 MiB. Continue a impor o controlo de acesso aos modelos nos
pedidos de inferência.
Remova qualquer definição model_catalog_json em vigor nos clientes que utilizem o endpoint:
o ficheiro local tem precedência e impede a obtenção remota.
Utilizar o esquema correspondente ao do cliente
Leia o parâmetro de consulta client_version no pedido do catálogo. O Codex envia a sua
versão da CLI como major.minor.patch, sem qualquer sufixo de pré-lançamento. Nos clientes para
computador, esta é a versão da CLI incluída.
Utilize a etiqueta rust-v<version> correspondente no repositório público do Codex ou o
commit exato do código-fonte de uma compilação personalizada. Estas ligações utilizam rust-v0.162.1; selecione
a revisão correspondente ao seu cliente:
- Leia os tipos de resposta
ModelsResponseeModelInfopara conhecer o esquema. - Consulte o
models.jsonincluído para ver um exemplo completo. São dados de catálogo, não um documento JSON Schema.
O ficheiro incluído é uma captura dos dados no momento do lançamento. Obtenha os valores predefinidos atuais antes de produzir o seu catálogo.
Obter os valores predefinidos atuais a montante
Os fornecedores de nuvem que disponibilizam modelos OpenAI obtêm os valores predefinidos da OpenAI. Os gateways leem o catálogo do seu fornecedor de nuvem ou a montante para preservar as definições do modelo implementado e a disponibilidade por conta e região. Transmita a versão do Codex que faz o pedido em cada etapa e autentique-se separadamente em cada endpoint.
Para obter os valores predefinidos diretamente da OpenAI, invoque o endpoint de modelos do Codex com o
mesmo client_version. Por exemplo, com uma API key da OpenAI:
curl --fail --silent --show-error \
'https://chatgpt.com/backend-api/codex/models?client_version=0.162.1' \
-H "Authorization: Bearer $OPENAI_API_KEY"Para uma integração com o ChatGPT, utilize o token de acesso do ChatGPT do requerente e o
cabeçalho ChatGPT-Account-ID, quando aplicável. Utilize credenciais autorizadas para o
endpoint a montante; a API key do seu gateway não permite autenticar-se na OpenAI.
Analise a resposta completa, incluindo o array models de nível superior. Este endpoint
devolve metadados do Codex, como instruções, valores predefinidos de raciocínio, definições de ferramentas,
limites de contexto e níveis de serviço. O endpoint público /v1/models não
fornece este catálogo.
Atualize estes valores predefinidos mesmo quando a versão do Codex não tiver mudado. Restrinja os pedidos à identidade a montante pretendida e respeite os controlos de cache da resposta: os catálogos podem depender do acesso do requerente. Mantenha as suas substituições separadas para que possa reaplicá-las a valores predefinidos atualizados.
Aplicar substituições do fornecedor
Altere os valores dos campos, preservando a estrutura de resposta da versão:
- Filtre os modelos para incluir apenas os que o requerente pode utilizar. Associe cada
sluga uma rota de inferência suportada e ajustedisplay_name,descriptionoupriority. Para um alias sem migração de modelo, definaupgradecomonull. - Defina as opções de raciocínio, os limites de contexto, as modalidades de entrada e os níveis de serviço com
valores suportados pelo seu modelo e pela sua rota. Mantenha os valores predefinidos entre as opções
suportadas. Para uma rota sem níveis de serviço, limpe
service_tierseadditional_speed_tierse definadefault_service_tiercomonull. - Preserve as instruções e as definições de ferramentas a montante, a menos que tenha testado uma alternativa. Os metadados não acrescentam capacidades ao modelo nem concedem acesso à inferência.
Para o Bedrock através do LiteLLM, aplique as alterações obrigatórias ao catálogo. Teste o catálogo resultante com cada versão do Codex suportada.
Utilizar os tipos públicos de Rust
Utilize crates da mesma etiqueta Git pública ou do mesmo commit que o esquema do cliente:
- Utilize
codex-protocolparacodex_protocol::openai_models::{ModelsResponse, ModelInfo}. Analise comserde_json::from_slice::<ModelsResponse>(), editecatalog.modelse serialize todo o objeto envolvente comserde_json::to_vec(). O objeto envolvente gere os campos de compatibilidade das instruções dos modelos. - Utilize
codex-models-manager::bundled_models_response()para carregar o catálogo estático incluído nessa revisão como umModelsResponse. Não obtém os valores predefinidos atuais a montante.