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_keyOPENAI_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 نداری؟

با شماره موبایل ثبت‌نام کن، کیف پول را از ۱۰۰٬۰۰۰ تومان شارژ کن و کلید بساز. مدل‌های رایگان بدون شارژ هم کار می‌کنند — تا ۵۰ درخواست در روز. ساخت کلید API ←