genmux API теперь доступен всем. Читать документацию →
genmux API

Блог

Aider с Qwen3-Max и DeepSeek: OPENAI_API_BASE — и готово

5 мин чтенияАвтор genmux API Team


Aider — CLI для парного программирования: правит файлы в git-репозитории и коммитит по ходу дела. С любым OpenAI-совместимым эндпоинтом он общается через LiteLLM, поэтому переход на genmux — это две переменные окружения: базовый URL, ключ, и префикс openai/ перед id модели. Вызов функций здесь не нужен — у aider собственные форматы правок, — так что работает любая текстовая модель платформы, а интересные вопросы — какую модель взять и какой формат правок выбрать.

Две переменные и префикс

bash
export OPENAI_API_BASE=https://api.genmux.tech/v1
export OPENAI_API_KEY=nb_live_...        # your genmux key
aider --model openai/deepseek-v4-flash

Префикс openai/ говорит LiteLLM использовать диалект OpenAI chat completions против того, куда указывает OPENAI_API_BASE; часть после слэша уходит в запрос как model. Подойдёт любой id из таблицы цен: openai/qwen3-max, openai/deepseek-v4-pro, openai/doubao-seed-2-code.

Если не хочется экспортировать переменные в каждой оболочке, aider читает .env в корне репозитория и ~/.aider.conf.yml:

yaml
# ~/.aider.conf.yml
model: openai/deepseek-v4-flash
edit-format: whole

Предупреждение «unknown model» безобидно

При первом запуске появится что-то вроде:

Warning for openai/deepseek-v4-flash: Unknown context window size and costs, using sane defaults.

У aider есть локальная таблица метаданных моделей (размер контекста, цена за токен) — по ней он показывает свою оценку стоимости и решает, когда предупредить о слишком длинном чате. Идентификаторов genmux он не знает, поэтому берёт консервативные значения по умолчанию. На сами запросы это никак не влияет — модель получает весь свой контекст, — а точное списание за каждый вызов видно в личном кабинете genmux, а не в оценке aider. Если предупреждение раздражает, файл .aider.model.metadata.json в репозитории научит aider правильным числам:

json
{
  "openai/deepseek-v4-flash": {
    "max_input_tokens": 1000000,
    "max_output_tokens": 16384,
    "input_cost_per_token": 0.000000198,
    "output_cost_per_token": 0.000000594,
    "litellm_provider": "openai",
    "mode": "chat"
  }
}

Два поля с ценой — это $0.198 / $0.594 за 1М токенов в пересчёте на токен, те же числа, что на странице DeepSeek V4 Flash.

--edit-format whole или diff

Aider просит модель вернуть правки в одном из нескольких форматов и сам их применяет. Здесь важны два:

  • whole — модель возвращает полное новое содержимое каждого изменённого файла. Предельно надёжно: нечему примениться неправильно. Дороже по выходным токенам на больших файлах.
  • diff — модель возвращает блоки поиска/замены. Дешевле на выходе, но блок, у которого половина «поиск» не совпадает с файлом байт в байт, отклоняется, и aider переспрашивает.

Наша рекомендация по итогам релизных прогонов: начинайте с --edit-format whole на deepseek-v4-flash и deepseek-v3 — у них не бывает несовпавшего блока, потому что блоков нет. deepseek-v4-pro и qwen3-max хорошо справляются с diff, и на файлах от нескольких сотен строк это окупается. Если aider больше одного раза за сессию сообщил «failed to apply edits», переключайтесь на whole и идите дальше: проблема не в модели, а в правиле точного совпадения.

Режим архитектора (--architect) разделяет планирование и правку между двумя моделями. Удачная пара на genmux — --model openai/deepseek-v4-pro --editor-model openai/deepseek-v4-flash: Pro решает, что менять, Flash это выписывает втрое дешевле.

Какую модель

МодельКак ведёт себя в aiderЦена за 1М токенов (вход / выход)
deepseek-v4-flashРабочая лошадка: фиксы, тесты, небольшие фичи; контекст 1M вмещает карту всего репозитория$0.198 / $0.594
qwen3-maxСильнее на размытых ТЗ и крупных рефакторингах; контекст 128K$1.08 / $5.40
deepseek-v4-proСложные изменения через много файлов, планировщик в режиме архитектора$0.594 / $1.782

Thinking доступен на всех трёх; сам aider его не включает. --reasoning-effort high отправляет reasoning_effort, который genmux переводит во включённый thinking для этих моделей, — токены рассуждений тарифицируются как выходные, так что включайте его для планировщика, а не для редактора.

Сколько стоит сессия на 200K токенов

Серьёзная сессия aider — фича через четыре-пять файлов и пара прогонов тестов — выходит примерно на 200K токенов. Aider с каждым сообщением заново отправляет карту репозитория и файлы в чате, так что большая часть — это промпт; с правками whole доля выхода больше, чем в обычном чате. Пусть будет 170K токенов на входе и 30K на выходе:

МодельВход (170K)Выход (30K)Сессия
deepseek-v4-flash$0.034$0.018≈ $0.05
deepseek-v4-pro$0.101$0.053≈ $0.15
qwen3-max$0.184$0.162≈ $0.35

В юнитах: 4,1 юнита≈ $0.05Flash, 12,4 юнита≈ $0.15Pro, 27,6 юнита≈ $0.35Qwen3-Max по тарифу пакета Scale. Qwen3-Max отличает цена выхода: на правках whole, где модель перепечатывает файлы целиком, имеет смысл перейти на diff или оставить Qwen для размышлений, а не для набора текста.

Стриминг и usage

Aider стримит по умолчанию, а genmux отдаёт тот же SSE-формат, которого ждёт OpenAI SDK, — diff появляется по мере набора. В последнем чанке приходит usage с cost в юнитах (cost_source: "estimated" для стримов — почему, объяснено в посте про стриминг). Каждый запрос aider — это задание genmux: GET /v1/generations?capability=text.chat перечисляет их все, и это надёжный способ сверить день работы с балансом.

С чего начать

Два экспорта, префикс openai/ — и aider работает на DeepSeek или Qwen3 через один ключ genmux. Оплата сегодня — USDT, карты и СБП подключаются. Для OpenCode, которому вызов функций нужен, есть отдельная инструкция; все поддерживаемые клиенты собраны на странице про агентов, а справочник по чат-эндпоинту — в документации.

Об авторе

Автор genmux API Team — genmux API.

Подробнее о нас