Aider را به یک base سازگار با OpenAI اشاره دهید.

Updated 2026-07-29

Aider با دو متغیر محیطی و یک پیشوند مدل به endpoint های سازگار با OpenAI وصل می‌شود. OPENAI_API_BASE را روی https://api.apisrouter.com/v1 تنظیم کنید، aider --model openai/<model-id> را اجرا کنید، و session های pair programming از طریق یک کلید مسیردهی می‌شوند با هر مدل کاتالوگ قابل‌آدرس‌دهی.

پاسخ سریع: دو env var و یک پیشوند مدل.

مسیر مستند سازگار با OpenAI در Aider دقیقاً همین است: OPENAI_API_BASE را با endpoint خود export کنید، OPENAI_API_KEY را با کلید آن export کنید، و نام مدل را با openai/ پیشوند بزنید تا Aider پروتکل chat-completions را با آن base صحبت کند. رشته بعد از پیشوند بدون تغییر به endpoint منتقل می‌شود، پس هر id ای که gateway سرویس می‌دهد مجاز است، شامل id های Claude و DeepSeek. این کل اتصال است. روی Mac و Linux از export استفاده کنید؛ روی Windows از setx استفاده کنید و یک shell جدید باز کنید، چون setx روی session جاری اثر نمی‌گذارد. همان مقادیر می‌توانند در فایل config Aider یا یک فایل .env هم زندگی کنند اگر پیکربندی هر-پروژه را به state شل ترجیح دهید.

export OPENAI_API_BASE=https://api.apisrouter.com/v1
export OPENAI_API_KEY=sk-APIsRouter-...

aider --model openai/claude-sonnet-4-6

Aider چطور مدل‌ها و provider ها را resolve می‌کند.

Aider (Aider-AI روی GitHub، حدود ۴۷ هزار ستاره) اصیل‌ترین pair programmer ترمینال است: repo git شما را map می‌کند، درخواست‌های تغییر را در چت می‌گیرد، فایل‌ها را مستقیم ویرایش می‌کند، و نتیجه را commit می‌کند. زیر پوسته، فراخوانی‌های مدل را از طریق litellm مسیردهی می‌کند، به همین دلیل پیشوند openai/ اهمیت دارد: litellm پیشوند را می‌خواند تا یک پروتکل provider انتخاب کند، و openai/ یعنی «chat-completions در برابر هرچه OPENAI_API_BASE می‌گوید». یک نام مدل بدون پیشوند به‌جای آن از روی املایش به یک provider نسبت داده می‌شود، که یک id Claude را به سمت API native Anthropic و ANTHROPIC_API_KEY شما مسیردهی می‌کند نه به gateway شما. یک رفتار مختص Aider ارزش دانستن قبل از session اول شما را دارد: یک registry از قابلیت‌های مدل خودش را نگه می‌دارد، و یک مدل که نمی‌شناسد هشدار «Unknown context window size and costs, using sane defaults» را فعال می‌کند، که بعد از آن Aider یک context window نامحدود و هزینه صفر فرض می‌کند. session همچنان کار می‌کند، اما دو زیرسیستم مفید تنزل می‌کنند: بودجه‌بندی token نمی‌تواند قبل از عبور شما از محدودیت واقعی context هشدار دهد، و نمایش هزینه داخل session صفر می‌خواند. راه‌حل یک فایل کوچک metadata است، که پایین‌تر پوشش داده شده، و دو دقیقه ارزشش را دارد. Aider همچنین بیش از یک مدل در هر session اجرا می‌کند. مدل main کدنویسی را انجام می‌دهد؛ یک مدل weak پیام‌های commit و خلاصه‌سازی چت را مدیریت می‌کند؛ و در حالت architect، یک مدل editor جداگانه پلن را اعمال می‌کند. هرکدام همان پیشوند openai/ را می‌پذیرند، پس هر سه می‌توانند از طریق gateway با یک کلید مسیردهی شوند.

راه‌اندازی کامل: اتصال به‌علاوه metadata مدل.

اتصال همان دو متغیر بالاست. تکمیل، ثبت metadata است تا Aider مدل‌های gateway را به‌عنوان کمیت‌های شناخته‌شده در نظر بگیرد. .aider.model.metadata.json را در دایرکتوری خانه خود، ریشه repo گیت، یا دایرکتوری کاری بسازید (یا --model-metadata-file را پاس دهید)، با کلید نام کاملاً واجد شرایط شامل پیشوند openai/؛ فیلد litellm_provider باید با آن پیشوند مطابقت داشته باشد. با ثبت max_input_tokens، بودجه‌بندی context در Aider در برابر پنجره واقعی مدل کار می‌کند به‌جای فرض نامحدود بودنش. یک فایل اختیاری دوم، .aider.model.settings.yml، رفتار را به ازای هر مدل تنظیم می‌کند: edit_format کنترل می‌کند Aider چطور تغییرات کد را درخواست می‌کند (نسخه‌های diff برای مدل‌هایی که با آن‌ها کنار می‌آیند، whole-file برای مدل‌هایی که نمی‌آیند)، و use_repo_map شمول context repo را کنترل می‌کند. Aider نمی‌تواند بهترین فرمت edit را برای مدلی که نمی‌شناسد استنباط کند، پس اعلام آن تفاوت بین متوسط‌به‌نظر رسیدن یک مدل و اجرا در سطح واقعی‌اش است.

{
  "openai/claude-sonnet-4-6": {
    "max_input_tokens": 200000,
    "max_output_tokens": 64000,
    "litellm_provider": "openai",
    "mode": "chat"
  },
  "openai/deepseek-v4-pro": {
    "max_input_tokens": 128000,
    "max_output_tokens": 16000,
    "litellm_provider": "openai",
    "mode": "chat"
  }
}

انتخاب مدل‌های main، weak، و editor.

session های Aider بلند و تکرارشونده هستند، که مقایسه مدل را اینجا به‌طور غیرمعمول صادقانه می‌کند: همان feature branch را در روزهای مختلف با دو مدل main اجرا کنید و تفاوت در تعداد دفعاتی که /undo تایپ می‌کنید نمایان می‌شود. یک endpoint هر کاندید را یک تغییر flag می‌کند، و usage به ازای هر کلید هر آزمایش را قیمت‌گذاری می‌کند.

  • مدل main هر ویرایشی را حمل می‌کند. repo map را می‌خواند، روی فایل‌های شما استدلال می‌کند، و diff تولید می‌کند، پس اینجا جایی است که claude-sonnet-4-6 یا gpt-5.5 تعلق دارد؛ مدلی که با syntax diff می‌لنگد در هر تغییر زمان review از شما می‌گیرد.
  • مدل weak (--weak-model) پیام‌های commit را می‌نویسد و تاریخچه چت را خلاصه می‌کند. مدام شلیک می‌شود و هرگز کد را لمس نمی‌کند، پس آن را به یک id سریع و ارزان از طریق همان gateway مسیردهی کنید به‌جای اینکه اجازه دهید جای دیگری پیش‌فرض شود.
  • حالت architect برنامه‌ریزی را از ویرایش جدا می‌کند: مدل main برنامه‌ریزی می‌کند، مدل editor (--editor-model) اعمال می‌کند. یک reasoner قوی که برنامه‌ریزی می‌کند و یک id تنظیم‌شده برای کدنویسی مثل kimi-k2.7-code که اعمال می‌کند، ترکیبی است که کلیدهای تک-vendor نمی‌توانند بیان کنند.
  • deepseek-v4-pro و gpt-5.4 ارزش benchmark کردن به‌عنوان مدل‌های main روزانه در کار سنگین refactor را دارند، جایی که حجم token هر session تفاوت قیمت را انباشته می‌کند.

پرداخت بر اساس مصرف · پایین‌تر از قیمت رسمی

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

مدلقیمت رسمیقیمت ما
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
GPT-5.5$5.00 / $30.00 per M$4.00 / $24.00 per M
GPT-5.4$2.50 / $15.00 per M$2.00 / $12.00 per M
DeepSeek V4 Pro$0.43 / $0.87 per M$0.40 / $0.90 per M
Kimi K2.7 Code$0.95 / $4.00 per M$1.00 / $4.00 per M

حالت‌های شکست مختص Aider.

اعتماد به «sane defaults». fallback مدل نامعلوم context نامحدود و هزینه صفر فرض می‌کند. در عمل، یعنی Aider با خوشحالی اجازه می‌دهد یک session طولانی از پنجره واقعی مدل عبور کند تا gateway درخواست را رد کند یا مدل بی‌صدا context اولیه را از دست بدهد، و tracker هزینه در تمام این مدت هیچ‌چیز نشان نمی‌دهد. metadata را ثبت کنید؛ هر دو مشکل ناپدید می‌شوند. انداختن پیشوند openai/. بدون آن، litellm provider را از نام مدل استنباط می‌کند. id های Claude به سمت API انتروپیک مسیردهی می‌شوند و روی یک ANTHROPIC_API_KEY گم‌شده شکست می‌خورند، که مثل مشکل کلید به‌نظر می‌رسد وقتی درواقع مشکل پیشوند است. metadata ای که مطابقت ندارد. entry ها در .aider.model.metadata.json با نام کاملاً واجد شرایط، شامل پیشوند، کلید می‌خورند، و litellm_provider باید با آن پیشوند موافق باشد. یک کلید id-برهنه یا یک فیلد provider نامطابق بی‌صدا اعمال نمی‌شود، و شما بدون خطایی که این را بگوید به defaults برمی‌گردید. state شل ویندوز. setx متغیر را فقط برای شل‌های آینده می‌نویسد. اجرای aider در همان ترمینالی که تازه setx را اجرا کردید از محیط قدیمی استفاده می‌کند، و 401 حاصل یک مشکل چرخه‌حیات شل است، نه یک مشکل credential. فرمت edit اشتباه. یک مدل ثبت‌نشده یک فرمت edit پیش‌فرض می‌گیرد که شاید بهترین چیزی که با آن کنار می‌آید نباشد. اگر یک مدل قوی مدام edit هایی تولید کند که Aider رد می‌کند، edit_format را صریح در .aider.model.settings.yml تنظیم کنید قبل از نتیجه‌گیری که مدل نمی‌تواند کد بنویسد.

چه کسانی Aider را از طریق یک gateway مسیردهی می‌کنند.

  • کاربران روزانه Aider که می‌خواهند Claude، GPT، و DeepSeek را با --model به ازای هر session قابل‌سوییچ داشته باشند، بدون نگه‌داری یک حساب vendor به ازای هر خانواده مدل.
  • توسعه‌دهندگانی که یک مدل main مرزی را با یک مدل weak سریع برای پیام‌های commit جفت می‌کنند، هر دو با یک کلید صورت‌حساب می‌شوند با دیدپذیری هر-session.
  • کاربران حالت architect که یک مدل برنامه‌ریزی و یک مدل ویرایش از vendor های مختلف را در همان session ترکیب می‌کنند.
  • تیم‌هایی که مهندسان را با یک secret به‌جای یک چک‌لیست کلید vendor onboard می‌کنند، با usage هر-کلید به‌عنوان گزارش هزینه.
  • توسعه‌دهندگان بدون دسترسی به صورت‌حساب یک vendor خاص. دسترسی مبتنی بر شارژ بدون الزام کارت وابستگی ثبت‌نام هر-provider را حذف می‌کند.

endpoint را تأیید کنید و session اول را عیب‌یابی کنید.

مدل‌های gateway را قبل از شروع فهرست کنید؛ id بعد از openai/ باید دقیقاً با یک id سرویس‌داده‌شده مطابقت داشته باشد، شامل پسوندهای نسخه. شکست‌های session اول سریع دسته‌بندی می‌شوند. یک 401 یعنی OPENAI_API_KEY برای شلی که aider را راه‌اندازی کرده قابل‌مشاهده نیست (فقط شل‌های جدید روی ویندوز بعد از setx؛ echo را در همان ترمینال چک کنید). یک خطای model-not-found از gateway یک غلط‌تایپی id است. یک خطا که به کلید vendor دیگری اشاره می‌کند یعنی یک نام مدل بدون پیشوند به‌صورت native مسیردهی شده. و هشدار مدل نامعلوم در راه‌اندازی یک خطا نیست، اما نشانه شماست که فایل metadata را قبل از یک session طولانی اضافه کنید، نه بعد از رسیدن به محدودیت واقعی context. داخل session، نمایش token و هزینه خود Aider وقتی metadata ثبت شود دقیق می‌شود، و کنسول APIsRouter همان session ها را از سمت endpoint نشان می‌دهد: مدل، شمارش token، و هزینه به ازای هر درخواست. برای یک pair programmer تمام‌روز، آن نمای هر-کلید پاسخ صادقانه به این است که یک هفته Aider واقعاً چقدر هزینه دارد.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $OPENAI_API_KEY" | head -50

پرسش‌های پرتکرار

چطور Aider را به یک endpoint سازگار با OpenAI وصل کنم؟

OPENAI_API_BASE را با URL endpoint و OPENAI_API_KEY را با کلید آن export کنید، سپس aider --model openai/<model-id> را اجرا کنید. این مسیر مستند openai-compat در Aider است؛ پیشوند openai/ به لایه litellm آن می‌گوید chat-completions را با base URL شما صحبت کند.

آیا Aider می‌تواند مدل‌های Claude یا DeepSeek را از طریق این راه‌اندازی اجرا کند؟

بله. id بعد از openai/ به‌عنوان یک رشته ساده به endpoint منتقل می‌شود، پس هر مدلی که gateway سرویس می‌دهد کار می‌کند: aider --model openai/claude-sonnet-4-6 یا openai/deepseek-v4-pro. پیشوند را نگه دارید، وگرنه id به یک provider نسبت داده می‌شود و از base شما دور مسیردهی می‌شود.

هشدار «Unknown context window size and costs» یعنی چه؟

Aider مدل را نمی‌شناسد، پس یک context window نامحدود و هزینه صفر فرض می‌کند. session ها کار می‌کنند، اما بودجه‌بندی context و نمایش هزینه اشتباه‌اند. مدل را در .aider.model.metadata.json با نام کاملاً واجد شرایط openai/ آن ثبت کنید، و هشدار و هر دو مشکل از بین می‌روند.

آیا مدل weak و مدل editor هم از طریق gateway مسیردهی می‌شوند؟

بله، اگر آن‌ها را به آنجا اشاره دهید: --weak-model openai/<fast-id> برای پیام‌های commit و خلاصه‌سازی، و --editor-model openai/<id> در حالت architect. هر سه slot پیشوند را می‌پذیرند، پس یک کلید می‌تواند یک ترکیب main/weak/editor چند-vendor را پوشش دهد.

چرا Aider همچنان یک کلید Anthropic می‌خواهد؟

یک نام مدل بدون پیشوند openai/ وارد شده. litellm vendor را از نام استنباط کرده و مسیر native Anthropic را امتحان کرده که ANTHROPIC_API_KEY می‌خواهد. پیشوند را اضافه کنید و درخواست به‌جای آن به OPENAI_API_BASE با کلید gateway شما می‌رود.

آیا باید edit_format را برای مدل‌های gateway تنظیم کنم؟

برای مدل‌هایی که Aider نمی‌شناسد، بله. edit_format در .aider.model.settings.yml کنترل می‌کند Aider چطور تغییرات کد را درخواست می‌کند، و مدل‌های مرزی معمولاً بهترین کارشان را با فرمت diff انجام می‌دهند. رها کردن یک مدل ناشناخته روی defaults می‌تواند یک مدل قوی را ضعیف‌تر از واقعیتش نشان دهد.