Inicio / Artículos

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.

Editor: REACTAPP.TOP5 min de lectura1062 palabras

Fuentes: How to set up OpenAI Codex with LiteLLM

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.
  • De GPT-1 a los modelos de razonamiento: qué cambió cada generación para los desarrolladores — Sigue la evolución de la familia GPT desde el preentrenamiento de 2018 hasta los modelos de razonamiento, descubre qué ideas aportó cada generación y explora las funciones de visión GPT-4o y salidas estructuradas desde Python.
  • Revisión práctica sobre el hardware para ejecutar modelos de clase 100B localmente — La esparsidad MOE, la cuantización y los cálculos relacionados con la VRAM determinan si los pesos de clase 100B caben en una estación de trabajo, no el marketing de parámetros.