Aider با یوتاپن — پیشوند openai و فایلهای تنظیمات مدل
اجرای Aider با یوتاپن: متغیرهای OPENAI_API_BASE و OPENAI_API_KEY، نام مدل با پیشوند openai، تعیین سقف خروجی در فایل تنظیمات و weak-model ارزان.
بهروزرسانی: ۳۱ شهریور ۱۴۰۵
Aider یک جفتبرنامهنویس ترمینالی است که مستقیم روی گیت کار میکند. چون از LiteLLM استفاده میکند، برای سرویس سفارشی باید نام مدل را با پیشوند openai/ بنویسی. این صفحه با مستندات نسخهٔ 0.86 بررسی شده است.
اتصال
export OPENAI_API_BASE="https://api.uttapen.ir/v1"
export OPENAI_API_KEY="sk-up-..."
aider --model openai/anthropic/claude-sonnet-5
پیشوند openai/ به Aider میگوید «با پروتکل OpenAI حرف بزن»؛ بقیهٔ رشته عیناً شناسهٔ مدل ما میماند، چون فقط اولین / جدا میشود. یعنی anthropic/claude-sonnet-5 میشود openai/anthropic/claude-sonnet-5 و openai/gpt-5-mini میشود openai/openai/gpt-5-mini — بله، openai دوبار.
بهجای متغیر محیطی میتوانی همه را در .aider.conf.yml (در خانه یا ریشهٔ ریپو) بگذاری:
openai-api-base: https://api.uttapen.ir/v1
model: openai/anthropic/claude-sonnet-5
weak-model: openai/openai/gpt-5-nano
edit-format: diff
کلید را در این فایل ننویس؛ OPENAI_API_KEY را از محیط بده.
سقف خروجی و مشخصات مدل
Aider بهخودیخود هیچ max_tokens نمیفرستد. برای ما یعنی رزرو بر اساس یک برآورد پیشفرض بسته میشود و اگر مدل طولانی بنویسد، مبلغ واقعی کامل کم میشود و موجودی میتواند موقتاً منفی برود (قیمتگذاری). سقف را در .aider.model.settings.yml بگذار:
- name: openai/anthropic/claude-sonnet-5
edit_format: diff
use_repo_map: true
extra_params:
max_tokens: 8192
و برای اینکه Aider اندازهٔ context را بداند (و هشدار «Unknown context window» ندهد)، یک .aider.model.metadata.json کنارش بگذار:
{
"openai/anthropic/claude-sonnet-5": {
"max_input_tokens": 200000,
"max_output_tokens": 8192,
"input_cost_per_token": 0,
"output_cost_per_token": 0,
"litellm_provider": "openai",
"mode": "chat"
}
}
هر دو فایل در خانه، ریشهٔ ریپو یا پوشهٔ جاری خوانده میشوند. کلید هر ورودی باید دقیقاً همان نام کامل مدل در Aider باشد (با پیشوند openai/)؛ تطبیق جزئی ندارد. عددهای هزینه را صفر گذاشتهایم تا برآورد دلاری نادرست نبینی؛ هزینهٔ واقعی تومانی در داشبورد ← مصرف است.
edit_format: diff و use_repo_map: true را هم بنویس: Aider برای نامهایی که نمیشناسد به حالت «بازنویسی کل فایل» و بدون نقشهٔ ریپو میافتد که هم ضعیفتر است و هم گرانتر. اگر مدلی temperature را نپذیرد، use_temperature: false را به همان ورودی اضافه کن.
مدل ضعیف برای کارهای کوچک
Aider پیامهای commit و خلاصهسازی تاریخچهٔ گفتگو را به weak model میسپارد و اگر تعیینش نکنی، همان مدل اصلی این کارها را میکند. یک مدل ارزان بگذار:
aider --model openai/anthropic/claude-sonnet-5 \
--weak-model openai/openai/gpt-5-nano
برای کار روزمره و ارزانتر، qwen/qwen3-coder و deepseek/deepseek-v3.2 انتخابهای خوبی برای مدل اصلیاند.
بررسی اتصال
aider --model openai/openai/gpt-5-nano --message "سلام" --no-auto-commits
اگر جواب گرفتی، همان درخواست باید در داشبورد ← مصرف دیده شود.
عیبیابی
| خطا | علت در Aider | راهحل |
|---|---|---|
401 invalid_api_key | OPENAI_API_KEY در محیط نیست یا کلید قدیمی است | متغیر را در همان ترمینال export کن |
404 model_not_found | پیشوند openai/ جا افتاده یا شناسهٔ مدل غلط است | نام کامل را بساز: openai/ + شناسهٔ /models (پیام 404 در uttapen.suggestions نزدیکترین شناسههای محتمل را هم پیشنهاد میدهد) |
400 invalid_request دربارهٔ temperature | مدل پارامتر را نمیپذیرد | use_temperature: false در تنظیمات مدل |
402 insufficient_balance | موجودی کمتر از رزرو لازم | شارژ کن و max_tokens را در extra_params کم کن |
429 | سقف نرخ یا سقف ماهانهٔ کلید (محدودیت نرخ) | صبر یا افزایش سقف |
| خلاصهسازیهای پشتسرهم | متادیتای مدل نیست و Aider سقف تاریخچه را خیلی کم گرفته | فایل .aider.model.metadata.json را بساز |
اگر موجودی قابلاستفاده هزینهٔ کل max_tokens را پوشش ندهد، یوتاپن سقف خروجی را تا اندازهٔ موجودی کم میکند (کف ۱٬۰۲۴ توکن) و عدد اعطاشده را در هدر X-Uttapen-Max-Tokens میفرستد؛ در این حالت ممکن است diff ناقص بیاید و Aider نتواند اعمالش کند. شارژ کردن مشکل را حل میکند. 402 فقط وقتی است که همان کف هم نگنجد.
ابزارهای دیگر در یکپارچهسازی و کدهای خطا در خطاها.
با شماره موبایل ثبتنام کن، کیف پول را از ۱۰۰٬۰۰۰ تومان شارژ کن و کلید بساز. مدلهای رایگان بدون شارژ هم کار میکنند — تا ۵۰ درخواست در روز. ساخت کلید API ←