LM Warden

Aider на ваших собственных GPU.

Aider работает с обслуживаемой моделью через пользовательский OpenAI-совместимый провайдер.

Куда идет запрос от Aider Aider отправляет запросы в LM Warden: в OPENAI_API_BASE указан адрес сервера LM Warden, а в OPENAI_API_KEY — ключ LM Warden. LM Warden проверяет ключ, принимает запросы в формате OpenAI Chat Completions, ставит их в очередь по приоритету ключа и передает маршрутизатору реплик. Маршрутизатор закрепляет каждую сессию за репликой, на которой уже лежит ее кэш; на каждом GPU работает своя копия модели. Aider OPENAI_API_BASE the warden, at /v1 OPENAI_API_KEY vw_…, the warden key POST /v1/chat/completions LM Warden checks the key: one per app speaks OpenAI Chat Completions scheduler, key priority usage, latency and live stats per key Replica router a session goes back to the replica that holds its cache one model copy per GPU your GPUs: vLLM or llama.cpp replica 0, GPU 0 replica 1, GPU 1 replica 2, GPU 2 a conversation stays on its replica
Куда идет запрос от Aider Aider отправляет запросы в LM Warden: в OPENAI_API_BASE указан адрес сервера LM Warden, а в OPENAI_API_KEY — ключ LM Warden. LM Warden проверяет ключ, принимает запросы в формате OpenAI Chat Completions, ставит их в очередь по приоритету ключа и передает маршрутизатору реплик. Маршрутизатор закрепляет каждую сессию за репликой, на которой уже лежит ее кэш; на каждом GPU работает своя копия модели. Aider OPENAI_API_BASE the warden, at /v1 OPENAI_API_KEY vw_…, the warden key POST /v1/chat/completions LM Warden checks the key: one per app speaks OpenAI Chat Completions scheduler, key priority usage, latency, live stats per key Replica router a session goes back to the replica that holds its cache replica 0 GPU 0 replica 1 GPU 1 replica 2 GPU 2 your GPUs: vLLM or llama.cpp a conversation stays on its replica
Путь запроса от Aider: две настройки, которые создает Connect, затем сервер LM Warden и по копии модели на каждом GPU.

Иначе говоря: Aider отправляет запросы в LM Warden: в OPENAI_API_BASE указан адрес сервера LM Warden, а в OPENAI_API_KEY — ключ LM Warden. LM Warden проверяет ключ, принимает запросы в формате OpenAI Chat Completions, ставит их в очередь по приоритету ключа и передает маршрутизатору реплик. Маршрутизатор закрепляет каждую сессию за репликой, на которой уже лежит ее кэш; на каждом GPU работает своя копия модели.

Протокол
OpenAI Chat Completions
Поддержка
Только локально

Только локальные модели через Chat Completions. Aider вносит правки в текстовом формате, поэтому вызов инструментов модели не нужен. Файл метаданных лишь убирает предупреждение Aider о неизвестной модели и задает размер ее контекста.

Требования

  • Лучше всего работает с контекстом не меньше 32 768 токенов.

Настройка

В консоли раздел Connect создает эти файлы с адресом вашего сервера LM Warden, вашим ключом и выбранной моделью. Здесь они показаны с заполнителями.

Локальные модели

Направьте провайдер OpenAI в Aider на этот сервер LM Warden.

Оболочка
export OPENAI_API_BASE=https://your-warden/v1
export OPENAI_API_KEY=vw_YOUR_KEY
aider --model openai/your-served-model-name
.aider.model.metadata.json (.aider.model.metadata.json)
{
  "openai/your-served-model-name": {
    "max_input_tokens": 32768,
    "max_output_tokens": 8192,
    "max_tokens": 8192,
    "input_cost_per_token": 0,
    "output_cost_per_token": 0,
    "litellm_provider": "openai",
    "mode": "chat"
  }
}
Идентификатор сессии для каждого запуска (необязательно)
# Run this instead of `aider ...`: it writes a fresh session id per launch.
SID=$(python3 -c 'import uuid; print(uuid.uuid4())')
cat > .aider.model.settings.yml <<EOF
- name: openai/your-served-model-name
  extra_params:
    extra_headers:
      X-Session-Id: $SID
EOF
aider --model openai/your-served-model-name

Официальная документация: https://aider.chat/docs/llms/openai-compat.html (дата обращения: 2026-10-04).