Головна / Статті

Направте OpenAI Codex на проксі LiteLLM для маршрутизованих моделей та бюджетів

Направте OpenAI Codex на одну URL-адресу проксі LiteLLM, щоб отримати доступ до багатьох моделей, централізовані журнали витрат та віртуальні ключі для кожного розробника з власними бюджетами.

Видавець: REACTAPP.TOP5 хв читання1062 слів

Джерела: How to set up OpenAI Codex with LiteLLM

Цей посібник показує, як налаштувати OpenAI Codex з використанням проксі LiteLLM, який ви запускаєте (або який вже хоститься у вашій команди). Codex читає одну базову URL з конфігурації, тож проксі дозволяє здійснювати маршрутизацію до різних моделей, об’єднувати журнали та витрати, створювати ключі для кожного розробника з бюджетами, а також мати один ключ від постачальника моделей на сервері.

Вимоги

Docker (або вже існуючий кінцевий пункт LiteLLM), CLI чи десктопний додаток Codex, а також доступ до принаймні одного постачальника моделей.

1. Встановіть OpenAI Codex

Дотримуйтесь актуальної інструкції з встановлення для CLI чи десктопного додатку. Переконайтеся, що codex працює локально, перш ніж під’єднувати проксі.

2. Налаштуйте LiteLLM для маршрутизації моделей

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

Пов’язайте псевдоніми моделей, придатні для карти, із відповідними розгортаннями. Зберігайте конфіденційну інформацію у змінних середовища, а не у YAML-файлах, які зберігаються в Git.

3. Запустіть проксі LiteLLM

docker-compose.yml

Запустіть проксі та перевірте стан кінцевої точки /models.

4. Налаштуйте Codex для використання LiteLLM

~/.codex/config.toml

Встановіть базову URL вашого проксі та використовуйте віртуальний ключ, виданий LiteLLM, а не сирі ключі постачальника.

5. Запустіть Codex

Виконайте просте завдання з програмування та переконайтеся, що у журналах LiteLLM відображається використовувана модель та токени.

6. Десктопний додаток

Налаштуйте клієнта на робочому столі на ту саму базову URL/ключ, щоб CLI та UI ділилися бюджетом.

Розширені опції

Віртуальні ключі

Ключі для кожного розробника зі списками дозволених моделей та лімітами витрат запобігають тому, щоб одна неконтрольована сесія спалювала бюджет організації.

Використання різних моделей

Змініть псевдонім у налаштуваннях Codex або для кожного запиту; LiteLLM бере на себе вирішення проблем, пов’язаних із різницею моделей.

Додаткові ресурси

Зберігайте фіксовані версії LiteLLM та Codex; автентифікація проксі та зміни псевдонімів моделей є поширеними проблемами після тишливого місяця.

Примітка щодо безпеки: ставтеся до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та ротацію ключів, оскільки він концентрує облікові дані постачальника та бачить кожен запит.

Примітка щодо безпеки: ставтеся до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та ротацію ключів, оскільки він концентрує облікові дані постачальника та бачить кожен запит.

Примітка щодо безпеки: ставіться до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та заміну ключів — оскільки він концентрує облікові дані постачальника та бачить кожен запит.

Примітка щодо безпеки: ставіться до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та заміну ключів — оскільки він концентрує облікові дані постачальника та бачить кожен запит.

Примітка щодо безпеки: ставіться до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та заміну ключів — оскільки він концентрує облікові дані постачальника та бачить кожен запит.

Примітка щодо безпеки: ставіться до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та заміну ключів — оскільки він концентрує облікові дані постачальника та бачить кожен запит.

Примітка щодо безпеки: ставіться до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та заміну ключів — оскільки він концентрує облікові дані постачальника та бачить кожен запит.

Примітка щодо безпеки: ставіться до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та заміну ключів — оскільки він концентрує облікові дані постачальника та бачить кожен запит.

Примітка щодо безпеки: ставіться до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та заміну ключів — оскільки він концентрує облікові дані постачальника та бачить кожен запит.

Примітка щодо безпеки: ставіться до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та заміну ключів — оскільки він концентрує облікові дані постачальника та бачить кожен запит.

Примітка щодо безпеки: ставіться до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та заміну ключів — оскільки він концентрує облікові дані постачальника та бачить кожен запит.

Примітка щодо безпеки: ставіться до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та заміну ключів — оскільки він концентрує облікові дані постачальника та бачить кожен запит.

Примітка щодо безпеки: ставіться до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та ротацію ключів, оскільки він концентрує облікові дані постачальника та бачить кожен запит.

Примітка щодо безпеки: ставіться до проксі як до сервісу у продакшені — використовуйте TLS, списки дозволених мереж та ротацію ключів, оскільки він концентрує облікові дані постачальника та бачить кожен запит.