Галоўная / Артыкулы

Выкорыстоўваюце OpenAI Codex з проксі LiteLLM для модэляў, якія пераводзяцца, і для кантролю бюджэту.

Указаце OpenAI Codex на адрэс проксі LiteLLM, і вы будзеце мелаць доступ да багацькоў модэляў, цэнтрызаваныя логі віткоў, а таксама віртуальныя кантролеры для кожнага распрацоўшчыка з іхнімі сабскіпамі.

Выдавец: REACTAPP.TOP5 хв чытання1062 слоў

Крыніцы: How to set up OpenAI Codex with LiteLLM

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

Трэбованні

Docker (альбо вялікі канцэнтры LiteLLM), Codex CLI або дасктопны прыстаў, і доступ да прынеймна адного прадавца модэляў.

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, спісаў дозволеных сетак і змены канфігурацыйных ключоў — адтуды ж збіраюцца канфігурацыйны даныя прадаўцоў і працюе кожны запіт.