Направьте OpenAI Codex на прокси LiteLLM для маршрутизации моделей и управления бюджетом.
Направьте OpenAI Codex на URL-адрес прокси LiteLLM, чтобы получить доступ к множеству моделей, централизованный учет затрат и виртуальные ключи для каждого разработчика с собственными бюджетами.
Источники: 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, списков разрешённых сетей и ротации ключей — поскольку он хранит учетные данные провайдера и видит все запросы.