Dirija OpenAI Codex hacia un proxy de LiteLLM para modelos y presupuestos enrutados.
Dirige OpenAI Codex a una URL de proxy de LiteLLM y obtendrás acceso enrutado a numerosos modelos, registros centralizados de costos y claves virtuales por desarrollador con sus propios presupuestos.
Esta guía orienta a OpenAI Codex hacia un proxy de LiteLLM que usted ejecuta (o que su equipo ya aloja). Codex lee una URL base desde la configuración, por lo que un proxy le permite el enrutamiento entre múltiples modelos, registros y costos centralizados, claves por desarrollador con presupuestos asignados, y una clave del proveedor principal en el servidor.
Requisitos
Docker (o un endpoint de LiteLLM ya existente), la CLI o aplicación de escritorio de Codex, y acceso a al menos un proveedor de modelos principal.
1. Instalar OpenAI Codex
Siga la documentación de instalación actual para la CLI o la aplicación de escritorio. Asegúrese de que codex se ejecute localmente antes de conectar un proxy.
2. Configurar LiteLLM para el enrutamiento de modelos
config.yaml
npm install -g @openai/codex
model_list:
# `codex -m <id>` works with any of them.
- model_name: gpt-5.6-terra
litellm_params:
model: openai/gpt-5.6-terra
api_key: os.environ/OPENAI_API_KEY
- model_name: gpt-5.6-luna
litellm_params:
model: openai/gpt-5.6-luna
api_key: os.environ/OPENAI_API_KEY
- model_name: gpt-5.6-sol
litellm_params:
model: openai/gpt-5.6-sol
api_key: os.environ/OPENAI_API_KEY
# Anything from another provider goes in the same list.
- model_name: claude-sonnet-5
litellm_params:
model: anthropic/claude-sonnet-5
api_key: os.environ/ANTHROPIC_API_KEY
# Catch-all, so `codex -m <anything>` reaches OpenAI without editing
# this file. Delete this entry to restrict a fleet to the list above.
- model_name: "*"
litellm_params:
model: openai/*
api_key: os.environ/OPENAI_API_KEY
litellm_settings:
drop_params: true
general_settings:
master_key: os.environ/LITELLM_MASTER_KEY
# Coding turns stream for a long time. Do not cut them off.
request_timeout: 600
name: litellm-coding-agents
services:
litellm:
image: ghcr.io/berriai/litellm:main-stable
restart: unless-stopped
command: ["--config", "/app/config.yaml", "--port", "4000"]
ports:
- "4000:4000"
volumes:
- ./config.yaml:/app/config.yaml:ro
env_file:
- .env
environment:
DATABASE_URL: postgresql://litellm:litellm@postgres:5432/litellm
STORE_MODEL_IN_DB: "True"
depends_on:
postgres:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "python -c \"import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://localhost:4000/health/liveliness').status==200 else 1)\""]
interval: 10s
timeout: 5s
retries: 12
start_period: 30s
postgres:
image: postgres:16-alpine
restart: unless-stopped
# Deliberately not published to the host. Nothing outside this
# network needs it, and 5432 is usually already taken.
environment:
POSTGRES_USER: litellm
POSTGRES_PASSWORD: litellm
POSTGRES_DB: litellm
volumes:
- litellm-pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U litellm -d litellm"]
interval: 5s
timeout: 5s
retries: 20
volumes:
name: litellm-pgdata
OPENAI_API_KEY=... ANTHROPIC_API_KEY=... LITELLM_MASTER_KEY=sk-1234
docker compose up -d
curl -s http://localhost:4000/health/liveliness
curl -s http://localhost:4000/v1/models -H "Authorization: Bearer sk-1234" | head -c 400
lsof -nP -iTCP:4000 -sTCP:LISTEN
cp ~/.codex/config.toml ~/.codex/config.toml.bak 2>/dev/null || true
model = "gpt-5.6-terra" model_provider = "litellm" model_reasoning_effort = "medium" [model_providers.litellm] name = "LiteLLM Gateway" base_url = "http://localhost:4000/v1" # More on setting up LITELLM_API_KEY towards the end env_key = "LITELLM_API_KEY" # Codex talks the Responses API. wire_api = "responses" # A coding turn can stream for long time, hence the setting below stream_idle_timeout_ms = 7200000 stream_max_retries = 5 request_max_retries = 4 # Codex cli complains if not in a trusted folder [projects."/path/to/your/project"] trust_level = "trusted"
codex exec "reply with the word CONNECTED and nothing else"
launchctl setenv LITELLM_API_KEY "sk-1234"
export LITELLM_API_KEY=""
codex -m gpt-5.6-luna
# Optional profiles # Saved model plus reasoning-effort pairs. `codex --profile deep`. [profiles.fast] model = "gpt-5.6-luna" model_reasoning_effort = "low" [profiles.deep] model = "gpt-5.6-sol" model_reasoning_effort = "high"
codex --profile deep
Asigne alias amigables para mapas a las implementaciones principales. Guarde los datos confidenciales en variables de entorno, no en el archivo yaml que se sube a git.
3. Inicie el proxy de LiteLLM
docker-compose.yml
Ejecute el proxy y verifique el estado del endpoint /models.
4. Configure Codex para usar LiteLLM
~/.codex/config.toml
Establezca la URL base en su proxy y utilice una clave virtual emitida por LiteLLM, no la clave bruta del proveedor.
5. Ejecute Codex
Proporcione una tarea de programación sencilla y confirme que los registros de LiteLLM muestren el modelo utilizado y el consumo de tokens.
6. Aplicación de escritorio
Dirija el cliente de escritorio hacia la misma URL base/clave para que la CLI y la interfaz de usuario compartan los presupuestos.
Opciones avanzadas
Claves virtuales
Las claves por desarrollador, con listas de modelos permitidos y límites de gasto, evitan que una sesión descontrolada agote el presupuesto de la organización.
Uso de modelos diferentes
Cambie el alias en la configuración de Codex o por solicitud; LiteLLM se encarga de las diferencias entre versiones.
Recursos adicionales
Mantenga fijas las versiones de LiteLLM y Codex; la autenticación del proxy y los cambios en los alias de modelos suelen causar problemas después de un mes sin actividad.
Nota de seguridad: trate al proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Nota de seguridad: trate al proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Nota de seguridad: trate el proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Nota de seguridad: trate el proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Nota de seguridad: trate el proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Nota de seguridad: trate el proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Nota de seguridad: trate el proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Nota de seguridad: trate el proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Nota de seguridad: trate el proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Nota de seguridad: trate el proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Nota de seguridad: trate el proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Nota de seguridad: trate el proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Nota de seguridad: trate el proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Nota de seguridad: trate el proxy como un servicio en producción —TLS, listas de permisos de red y rotación de claves— ya que concentra las credenciales del proveedor y ve cada solicitud.
Lecturas relacionadas
- Reduzca los gastos con LLM usando un router de token LiteLLM — LiteLLM se sitúa entre las aplicaciones y los proveedores, dirigiendo las solicitudes cortas a modelos económicos y las más complejas a Opus; se logran aproximadamente un 28% de ahorro en un mes simulado de trabajo de un ingeniero.