Implementación de catálogos de modelos para pasarelas y servicios en la nube
Obtén los valores predeterminados de Codex específicos de cada versión, aplica las modificaciones del proveedor y ofrece un catálogo de modelos
Esta página está dirigida a desarrolladores que implementan el formato Codex Models, que define el catálogo de modelos y permite el funcionamiento del selector de modelos. Si desarrollas un proveedor de inferencia, como una pasarela o un servicio en la nube, usa esta especificación para que la aplicación de escritorio de Codex y la CLI descubran tus modelos y utilicen sus instrucciones y ajustes de capacidades.
Si administras una empresa y quieres controlar el catálogo de modelos, consulta la
guía de configuración de model_catalog_url.
Para admitir el formato, implementa un endpoint de catálogo autenticado. Obtén los valores predeterminados actuales de tu proveedor de origen para la versión de Codex que realiza la solicitud, aplica tus modificaciones y devuelve el catálogo resultante.
client_version Implementa el endpoint del catálogo
El endpoint predeterminado del catálogo es /models bajo base_url del proveedor.
Por ejemplo, con base_url = "https://gateway.example.com/v1", Codex solicita:
GET /v1/models?client_version=0.162.1
Authorization: Bearer <PROVIDER_ACCESS_TOKEN>El descubrimiento predeterminado admite autenticación mediante comandos y autenticación mediante el backend de Codex,
como ChatGPT. Para un proveedor personalizado que utilice autenticación con API key
sin autenticación mediante comandos, establece model_providers.<id>.model_catalog_url
explícitamente para habilitar el descubrimiento remoto. Una API key por sí sola no activa el descubrimiento
en la ruta predeterminada.
Usa model_catalog_url para elegir una URL completa del catálogo, como
https://gateway.example.com/codex/models. También puede apuntar al endpoint predeterminado
/v1/models. Codex utiliza esta URL directamente sin añadir /models.
Para el descubrimiento con API key, mantén features.api_key_model_discovery habilitado; lo está
por defecto. Los encabezados personalizados por sí solos no habilitan el descubrimiento.
Codex envía la autenticación y los encabezados configurados del proveedor seleccionado y
añade client_version y cualquier query_params del proveedor. Aloja el catálogo en un
servicio autorizado para recibir esas credenciales.
Autentica al solicitante, obtén los valores predeterminados de origen correspondientes, aplica tus
modificaciones y devuelve directamente el JSON completo de ModelsResponse. Asigna a cada
entrada un slug único y no vacío. Para un model_catalog_url explícito, Codex rechaza
las redirecciones y las respuestas de más de 1 MiB. Sigue aplicando el control de acceso a los modelos en
las solicitudes de inferencia.
Elimina cualquier ajuste model_catalog_json que esté en vigor en los clientes que utilicen el endpoint:
el archivo local tiene prioridad e impide la obtención remota.
Ajusta el catálogo al esquema del cliente
Lee el parámetro de consulta client_version de la solicitud del catálogo. Codex envía su
versión de la CLI como major.minor.patch, sin ningún sufijo de versión preliminar. Para los clientes de escritorio,
esta es la versión de la CLI incluida.
Usa la etiqueta rust-v<version> correspondiente del repositorio público de Codex o el
commit exacto del código fuente para una compilación personalizada. Estos enlaces usan rust-v0.162.1; selecciona
la revisión que corresponda a tu cliente:
- Lee los tipos de respuesta
ModelsResponseyModelInfopara conocer el esquema. - Examina el
models.jsonincluido para ver un ejemplo completo. Contiene datos del catálogo, no un documento JSON Schema.
El archivo incluido es una instantánea de la versión. Obtén los valores predeterminados actuales antes de generar tu catálogo.
Obtén los valores predeterminados actuales del proveedor de origen
Los proveedores de nube que ofrecen modelos de OpenAI obtienen los valores predeterminados de OpenAI. Las pasarelas leen el catálogo de su proveedor de nube o de origen para conservar los ajustes del modelo desplegado y la disponibilidad por cuenta y región. Transmite la versión de Codex que realiza la solicitud en cada paso y autentícate por separado en cada endpoint.
Para obtener los valores predeterminados directamente de OpenAI, llama al endpoint de modelos de Codex con el
mismo client_version. Por ejemplo, con una API key de 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 una integración con ChatGPT, usa el token de acceso de ChatGPT del solicitante y el
encabezado ChatGPT-Account-ID cuando corresponda. Usa credenciales autorizadas para el
endpoint de origen; la API key de tu propia pasarela no sirve para autenticarse en OpenAI.
Analiza la respuesta completa, incluido su array models de nivel superior. Este endpoint
devuelve metadatos de Codex, como instrucciones, valores predeterminados de razonamiento, ajustes de herramientas,
límites de contexto y niveles de servicio. El endpoint público /v1/models no
proporciona este catálogo.
Actualiza estos valores predeterminados incluso cuando la versión de Codex no haya cambiado. Limita las solicitudes a la identidad de origen prevista y respeta los controles de caché de las respuestas: los catálogos pueden depender del acceso del solicitante. Mantén tus modificaciones por separado para poder volver a aplicarlas a los valores predeterminados actualizados.
Aplica las modificaciones del proveedor
Cambia los valores de los campos conservando la estructura de respuesta de la versión:
- Filtra los modelos para incluir solo aquellos que el solicitante pueda usar. Asocia cada
slugcon una ruta de inferencia compatible y ajustadisplay_name,descriptionopriority. Para un alias sin migración de modelo, estableceupgradeennull. - Establece las opciones de razonamiento, los límites de contexto, las modalidades de entrada y los niveles de servicio en
valores que tu modelo y tu ruta admitan. Mantén los valores predeterminados dentro de las
opciones admitidas. Para una ruta sin niveles de servicio, borra
service_tiersyadditional_speed_tiersy establecedefault_service_tierennull. - Conserva las instrucciones y los ajustes de herramientas del proveedor de origen, salvo que hayas probado una alternativa. Los metadatos no añaden capacidades al modelo ni conceden acceso a la inferencia.
Para Bedrock a través de LiteLLM, aplica las modificaciones obligatorias del catálogo. Prueba el catálogo resultante con cada versión de Codex compatible.
Usa los tipos públicos de Rust
Usa crates de la misma etiqueta pública de Git o del mismo commit que el esquema del cliente:
- Usa
codex-protocolparacodex_protocol::openai_models::{ModelsResponse, ModelInfo}. Analiza conserde_json::from_slice::<ModelsResponse>(), editacatalog.modelsy serializa el contenedor completo conserde_json::to_vec(). El contenedor gestiona los campos de compatibilidad de las instrucciones del modelo. - Usa
codex-models-manager::bundled_models_response()para cargar el catálogo estático incluido en esa revisión como unModelsResponse. No obtiene los valores predeterminados actuales del proveedor de origen.