Aider с Qwen3-Max и DeepSeek: OPENAI_API_BASE — и готово
5 мин чтенияАвтор genmux API Team
Aider — CLI для парного программирования: правит файлы в git-репозитории и коммитит по ходу дела. С любым OpenAI-совместимым эндпоинтом он общается через LiteLLM, поэтому переход на genmux — это две переменные окружения: базовый URL, ключ, и префикс openai/ перед id модели. Вызов функций здесь не нужен — у aider собственные форматы правок, — так что работает любая текстовая модель платформы, а интересные вопросы — какую модель взять и какой формат правок выбрать.
Две переменные и префикс
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:
# ~/.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 правильным числам:
{
"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, которому вызов функций нужен, есть отдельная инструкция; все поддерживаемые клиенты собраны на странице про агентов, а справочник по чат-эндпоинту — в документации.