Inicia sesión con ChatGPT a través de una pasarela

Por qué te puede interesar

Si ya tienes una pasarela de modelos y usas Codex con API Platform, puedes conservar tu pasarela al cambiar a Iniciar sesión con ChatGPT. Esto te da acceso a las funciones y los controles del espacio de trabajo de ChatGPT que correspondan (por ejemplo, el modo de voz) mientras conservas tu pasarela de modelos. Compara los métodos de inicio de sesión en Disponibilidad de funciones.

Cómo configurarlo

La autenticación mediante comandos existente coloca la clave de la pasarela en Authorization. Con el inicio de sesión de ChatGPT, esa cabecera contiene el token de ChatGPT. Elige cómo proporcionar la credencial independiente de la pasarela:

  • Opción A: Reutiliza tu comando de credenciales mediante un pequeño programa auxiliar de inicio. Envía la misma clave de la pasarela en una cabecera independiente.
  • Opción B: Deja que Codex obtenga la credencial de la pasarela mediante OAuth nativo.

Añade la configuración del proveedor seleccionado al requirements.toml de tu espacio de trabajo administrado desde la nube en Configuración administrada. Estos requisitos se aplican después de que los usuarios inicien sesión con ChatGPT; no restringen otros métodos de inicio de sesión. La URL base de la pasarela compatible con Codex debe actuar como proxy de /models y /responses hacia https://chatgpt.com/backend-api/codex.

Opción A: Reutiliza tu comando de credenciales con un programa auxiliar

Conserva tu comando de credenciales existente. Un pequeño programa auxiliar lo ejecuta antes de iniciar Codex y exporta su salida como GATEWAY_KEY. Es la misma clave de la pasarela que usas actualmente; solo cambia la cabecera en la que se envía.

Por ejemplo, tu configuración actual de API/proveedor podría contener:

# config.toml — existing API/provider setup
model_provider = "enterprise_gateway"

[model_providers.enterprise_gateway]
name = "Enterprise gateway"
base_url = "https://gateway.example.com/v1"
requires_openai_auth = false

[model_providers.enterprise_gateway.auth]
command = "/usr/local/bin/fetch-gateway-token"

Para iniciar sesión con ChatGPT, sustituye ese proveedor por la siguiente configuración administrada. Elimina su bloque auth: la autenticación del proveedor mediante comandos no se puede combinar con requires_openai_auth = true.

# requirements.toml
model_provider = "enterprise_gateway"

[model_providers.enterprise_gateway]
name = "Enterprise gateway"
base_url = "https://gateway.example.com/backend-api/codex" # Keep the gateway route.
requires_openai_auth = true # Use the ChatGPT credential for OpenAI.
env_http_headers = { "X-Gateway-Key" = "GATEWAY_KEY" } # Send the same gateway key separately.

Usa un programa auxiliar de inicio como esta función de shell para la CLI. Sustituye el comando y los argumentos por los de tu bloque auth existente:

codex_with_gateway() (
  set -eu
  GATEWAY_KEY=$(/usr/local/bin/fetch-gateway-token)
  test -n "$GATEWAY_KEY"
  export GATEWAY_KEY
  exec codex "$@"
)

codex_with_gateway

Configura tu pasarela para aceptar X-Gateway-Key, validar la clave y eliminar esa cabecera antes de reenviar la solicitud al backend. La solicitud del cliente ahora contiene:

Authorization: Bearer <ChatGPT token>
ChatGPT-Account-ID: <workspace ID, when available>
X-Gateway-Key: <same gateway key returned by your command>

El programa auxiliar se ejecuta una vez por inicio. Codex no vuelve a ejecutarlo ni actualiza esta cabecera; cuando caduque la clave, obtén una nueva y vuelve a iniciar Codex. En la aplicación de escritorio, tu integración de inicio debe proporcionar GATEWAY_KEY al proceso de la aplicación. Elige la opción B si quieres que Codex administre el inicio de sesión en la pasarela y la renovación del token.

Los diagramas abrevian las cabeceras de las solicitudes y el programa auxiliar de inicio. Usa Authorization: Bearer <ChatGPT token> y conserva la comprobación de clave vacía del programa auxiliar de los ejemplos anteriores. Si GATEWAY_KEY está vacío, Codex omite X-Gateway-Key.

Opción A: Reutiliza el comando de credenciales mediante un programa auxiliar de inicio. La misma clave de la pasarela pasa de Authorization a X-Gateway-Key, mientras que el inicio de sesión de ChatGPT proporciona Authorization.
Opción A en tiempo de ejecución: La pasarela valida y elimina X-Gateway-Key y después reenvía Authorization de ChatGPT y cualquier ID de cuenta sin modificaciones al backend de Codex.

Opción B: Usa OAuth nativo de la pasarela

Usa esta opción para sustituir el comando y el programa auxiliar de inicio por un inicio de sesión en la pasarela administrado por Codex. Tu pasarela debe contar con un servidor de autorización OAuth. Registra un cliente público que admita código de autorización con PKCE y después sustituye las URL y el ID de cliente del ejemplo. Elimina el bloque auth del proveedor existente y usa la siguiente configuración administrada.

# requirements.toml
model_provider = "enterprise_gateway"

[model_providers.enterprise_gateway]
name = "Enterprise gateway"
base_url = "https://gateway.example.com/backend-api/codex" # Keep the gateway route.
requires_openai_auth = true # Use the ChatGPT credential for OpenAI.

[model_providers.enterprise_gateway.gateway_oauth] # Add gateway OAuth.
authorization_url = "https://login.example.com/oauth/authorize"
token_url = "https://login.example.com/oauth/token"
client_id = "YOUR_PUBLIC_CLIENT_ID"
delivery = { kind = "cookie", name = "auth-openid" } # Add gateway auth as a cookie.
# redirect_port = 43127

Codex usa un puerto de bucle local libre de forma predeterminada. Si tu proveedor de identidad requiere un URI de redirección fijo, establece redirect_port y registra http://127.0.0.1:43127/callback para este ejemplo.

Opción B: Sustituye la autenticación de la pasarela mediante API key por OAuth nativo de la pasarela junto con el inicio de sesión de ChatGPT.
Opción B en tiempo de ejecución: La pasarela consume su cookie de OAuth y reenvía la credencial de ChatGPT al backend de Codex.

Añade cabeceras de enrutamiento (opcional)

Con cualquiera de las opciones, Codex puede enviar cabeceras de enrutamiento personalizadas a la pasarela. Por ejemplo, añade estas cabeceras al mismo proveedor enterprise_gateway en tu requirements.toml administrado desde la nube:

[model_providers.enterprise_gateway.http_headers]
x-portkey-config = "<gateway-routing-config-id>"
x-portkey-metadata = '{"tool_id":"codex"}'

Codex envía las cabeceras en las solicitudes al proveedor de modelos; la pasarela aplica las reglas de enrutamiento. Usa env_http_headers para los valores que se leen del entorno del proceso de Codex. Prueba una solicitud para confirmar que la pasarela recibe ambas cabeceras y selecciona la ruta prevista. Consulta Proveedores de modelos personalizados para ver más opciones de cabeceras.

Mantén las credenciales en sus propias rutas

Codex envía la cabecera Authorization de ChatGPT, cualquier cabecera ChatGPT-Account-ID y la cabecera o cookie de la pasarela. Configura la pasarela para que verifique y elimine su credencial y después reenvíe las cabeceras de ChatGPT sin modificaciones.

Consideraciones y limitaciones

  • Usa una compilación de Codex que admita los requisitos administrados del proveedor de modelos y, para la opción B, OAuth nativo de la pasarela. Las compilaciones anteriores pueden ignorar o rechazar los campos no compatibles.
  • Esta ruta abarca las solicitudes realizadas a través del proveedor de modelos seleccionado. El inicio de sesión de ChatGPT, MCP, los plugins y otras conexiones de aplicaciones pueden usar rutas diferentes.
  • Tu pasarela puede ver los datos de las solicitudes y ambas credenciales. Ocúltalos en los registros; nunca reenvíes las credenciales de la pasarela a los servicios de destino.
  • OAuth nativo de la pasarela necesita un navegador y una URL de devolución de llamada de bucle local accesible. No dispone de una alternativa mediante código de dispositivo. Sin un token de actualización, los usuarios deben repetir el inicio de sesión en el navegador cuando caduque el token de acceso.
  • Una respuesta genérica /v1/models de OpenAI no es suficiente: Codex espera un array models. Prueba la lista de modelos, un prompt y cada función que use tu implementación.

Voz a través de una pasarela

Esta configuración enruta las solicitudes al proveedor de modelos de Codex; no habilita ChatGPT Voice. En las sesiones de voz WebRTC, la creación de llamadas y la conexión de banda lateral usan rutas independientes. El ajuste experimental experimental_realtime_webrtc_call_base_url de ~/.codex/config.toml solo cambia la URL base HTTP para la creación de llamadas. No redirige la conexión de banda lateral, el contenido multimedia ni las solicitudes habituales a los modelos. Trabaja con OpenAI para verificar el destino de las llamadas y el tratamiento de las credenciales antes de usar esta anulación, y después prueba una sesión de voz completa.

Para la ruta de credenciales de API/proveedor, consulta Compatibilidad de la pasarela e Implementa una pasarela. Para estos ajustes administrados, consulta Configuración administrada y la Referencia de configuración.