وجّه Aider إلى base متوافق مع OpenAI API.

Updated 2026-07-29

يتصل Aider بنقاط نهاية متوافقة مع OpenAI بمتغيرَي بيئة وبادئة نموذج. اضبط OPENAI_API_BASE على https://api.apisrouter.com/v1، وشغّل aider --model openai/<model-id>، وتتوجّه جلسات البرمجة الثنائية عبر مفتاح واحد مع كل نموذج في الكتالوج قابل للعنونة.

إجابة سريعة: متغيرا بيئة وبادئة نموذج.

مسار Aider الموثّق للتوافق مع OpenAI هو بالضبط هذا: صدّر OPENAI_API_BASE بنقطة النهاية الخاصة بك، وصدّر OPENAI_API_KEY بالمفتاح الخاص بها، وأضف بادئة openai/ لاسم النموذج حتى يتحدث Aider بروتوكول chat-completions إلى ذلك الـ base. السلسلة بعد البادئة تُمرَّر كما هي إلى نقطة النهاية، لذا أي معرّف تخدمه البوابة مسموح، بما فيه معرّفات Claude وDeepSeek. هذا هو الاتصال بأكمله. على Mac وLinux استخدم export؛ على Windows استخدم setx وافتح shell جديداً، لأن setx لا يؤثر على الجلسة الحالية. نفس القيم يمكن أن تعيش في ملف إعداد Aider أو ملف .env إذا فضّلت إعداداً لكل مشروع بدلاً من حالة shell.

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

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

كيف يحلّ Aider النماذج والمزوّدين.

Aider (Aider-AI على GitHub، بنحو 47 ألف نجمة) هو مبرمج الطرف الثاني الأصلي في الطرفية (terminal): يرسم خريطة مستودع git الخاص بك، ويأخذ طلبات تغيير في محادثة، ويعدّل الملفات مباشرة، ويُثبّت (commit) النتيجة. تحت الغطاء، يوجّه استدعاءات النموذج عبر litellm، وهذا سبب أهمية بادئة openai/: يقرأ litellm البادئة لاختيار بروتوكول مزوّد، وopenai/ تعني "chat-completions مقابل أياً كان ما يقوله OPENAI_API_BASE". اسم نموذج بدون بادئة يُستنتَج مزوّده بدلاً من ذلك من تهجئته، مما يوجّه معرّف Claude نحو API الأصلي لـ Anthropic ومفتاح ANTHROPIC_API_KEY الخاص بك بدلاً من بوابتك. هناك سلوك واحد خاص بـ Aider يستحق معرفته قبل جلستك الأولى: يحتفظ بسجلّه الخاص لقدرات النماذج، ونموذج لا يتعرّف عليه يُطلق التحذير "Unknown context window size and costs, using sane defaults"، وبعدها يفترض Aider نافذة سياق غير محدودة وتكلفة صفرية. الجلسة لا تزال تعمل، لكن نظامين فرعيين مفيدين يتدهوران: ميزانية الـ tokens لا يمكنها تحذيرك قبل تجاوز حد السياق الحقيقي، وعرض التكلفة داخل الجلسة يقرأ صفراً. الإصلاح هو ملف بيانات وصفية صغير، مذكور أدناه، ويستحق الدقيقتين. يشغّل Aider أيضاً أكثر من نموذج واحد لكل جلسة. النموذج الرئيسي يقوم بالبرمجة؛ نموذج ضعيف يتعامل مع رسائل commit وتلخيص المحادثة؛ وفي وضع architect، نموذج محرر منفصل يطبّق الخطة. كل منها يقبل نفس بادئة openai/، لذا يمكن للثلاثة أن تتوجّه عبر البوابة بمفتاح واحد.

الإعداد الكامل: الاتصال بالإضافة إلى البيانات الوصفية للنموذج.

الاتصال هو المتغيّران أعلاه. اللمسة الأخيرة هي تسجيل بيانات وصفية حتى يعامل Aider نماذج البوابة كقيم معروفة. أنشئ .aider.model.metadata.json في مجلدك الرئيسي، أو جذر مستودع git، أو دليل العمل (أو مرّر --model-metadata-file)، مُفهرَساً بالاسم الكامل المؤهَّل بما في ذلك بادئة openai/؛ يجب أن يطابق حقل litellm_provider تلك البادئة. مع تسجيل max_input_tokens، تعمل ميزانية سياق Aider مقابل نافذة النموذج الحقيقية بدلاً من افتراض أنها لا نهائية. ملف اختياري ثانٍ، .aider.model.settings.yml، يضبط السلوك لكل نموذج: edit_format يتحكم في كيفية طلب Aider لتغييرات الكود (أشكال diff للنماذج التي تتعامل معها، والملف الكامل للنماذج التي لا تفعل)، وuse_repo_map يتحكم في تضمين سياق المستودع. لا يمكن لـ Aider استنتاج أفضل تنسيق تحرير لنموذج لا يتعرّف عليه، لذا يكون تعريفه هو الفرق بين نموذج يبدو متوسطاً ونموذج يؤدي بمستواه الحقيقي.

{
  "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"
  }
}

اختيار النماذج الرئيسية والضعيفة ونماذج المحرر.

جلسات Aider طويلة وتكرارية، مما يجعل مقارنة النماذج صادقة بشكل غير معتاد هنا: شغّل نفس فرع الميزة بنموذجين رئيسيين في أيام مختلفة، ويظهر الفرق في عدد مرات كتابتك لـ /undo. نقطة نهاية واحدة تجعل كل مرشّح مجرد تغيير علم (flag)، والاستخدام لكل مفتاح يسعّر كل تجربة.

  • النموذج الرئيسي يحمل كل تعديل. يقرأ خريطة المستودع، ويستدل على ملفاتك، وينتج diffs، لذا هنا مكان claude-sonnet-4-6 أو gpt-5.5؛ نموذج يتعثّر في صياغة diff يكلّفك وقت مراجعة في كل تغيير.
  • النموذج الضعيف (--weak-model) يكتب رسائل commit ويلخّص سجل المحادثة. يعمل باستمرار ولا يلمس الكود أبداً، لذا وجّهه إلى معرّف سريع ومنخفض السعر عبر نفس البوابة بدلاً من تركه يذهب افتراضياً إلى مكان آخر.
  • وضع architect يفصل التخطيط عن التحرير: النموذج الرئيسي يخطّط، ونموذج المحرر (--editor-model) يطبّق. مستدل قوي يخطّط مع معرّف مضبوط للبرمجة مثل kimi-k2.7-code يطبّق هو اقتران لا تستطيع مفاتيح البائع الواحد التعبير عنه.
  • deepseek-v4-pro وgpt-5.4 يستحقان الاختبار كنماذج رئيسية للاستخدام اليومي في الأعمال الثقيلة بإعادة الهيكلة، حيث يجعل حجم tokens لكل جلسة فرق السعر تراكمياً.

ادفع حسب الاستخدام · أقل من السعر الرسمي

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.

الثقة في "الافتراضات المعقولة". الاحتياط الخاص بالنموذج غير المعروف يفترض سياقاً غير محدود وتكلفة صفرية. عملياً، هذا يعني أن Aider سيسمح بسعادة لجلسة طويلة بالنمو متجاوزة نافذة النموذج الحقيقية حتى ترفض البوابة الطلب أو يفقد النموذج بصمت السياق المبكر، وعدّاد التكلفة لا يُظهر شيئاً طوال الوقت. سجّل البيانات الوصفية؛ تختفي المشكلتان. إسقاط بادئة openai/. بدونها، يستنتج litellm المزوّد من اسم النموذج. معرّفات Claude تتوجّه نحو API الخاصة بـ Anthropic وتفشل بسبب غياب ANTHROPIC_API_KEY، وهو ما يبدو كمشكلة مفتاح بينما هو في الحقيقة مشكلة بادئة. بيانات وصفية لا تتطابق. المدخلات في .aider.model.metadata.json مُفهرَسة بالاسم الكامل المؤهَّل، بما فيه البادئة، ويجب أن يتوافق litellm_provider مع تلك البادئة. مفتاح معرّف عارٍ أو حقل مزوّد غير متطابق يفشل في التطبيق بصمت، وتعود إلى الافتراضات دون خطأ يخبرك بذلك. حالة shell على Windows. تكتب setx المتغيّر لجلسات shell المستقبلية فقط. تشغيل aider في نفس الطرفية التي شغّلت فيها setx للتو يستخدم البيئة القديمة، وخطأ 401 الناتج هو مشكلة دورة حياة shell، لا مشكلة اعتماد. تنسيق التحرير الخاطئ. نموذج غير مُسجَّل يحصل على تنسيق تحرير افتراضي قد لا يكون الأفضل له. إذا استمر نموذج قوي في إنتاج تعديلات يرفضها Aider، اضبط edit_format صراحة في .aider.model.settings.yml قبل أن تستنتج أن النموذج لا يستطيع البرمجة.

من يوجّه Aider عبر بوابة.

  • مستخدمو Aider اليوميون الذين يريدون Claude وGPT وDeepSeek قابلة للتبديل لكل جلسة عبر --model، دون الحاجة إلى حساب بائع لكل عائلة نماذج.
  • المطورون الذين يقرنون نموذجاً رئيسياً حديثاً بنموذج ضعيف سريع لرسائل commit، يُفوتَران معاً على مفتاح واحد مع رؤية لكل جلسة.
  • مستخدمو وضع architect الذين يمزجون نموذج تخطيط ونموذج تحرير من بائعين مختلفين في نفس الجلسة.
  • الفرق التي تُلحق مهندسين بسر واحد بدلاً من قائمة تحقق من مفاتيح البائعين، مع استخدام كل مفتاح كتقرير إنفاق.
  • المطورون الذين لا يملكون وصولاً إلى فوترة بائع معيّن. الوصول القائم على تعبئة الرصيد بدون شرط بطاقة يزيل الاعتماد على التسجيل لكل مزوّد.

تحقق من نقطة النهاية وصحّح أخطاء الجلسة الأولى.

اسرد نماذج البوابة قبل البدء؛ يجب أن يطابق المعرّف بعد openai/ معرّفاً مخدوماً تماماً، بما في ذلك لواحق الإصدار. أخطاء الجلسة الأولى تُصنَّف بسرعة. 401 يعني أن OPENAI_API_KEY غير مرئي لـ shell الذي أطلق aider (فقط في shells جديدة على Windows بعد setx؛ تحقق بـ echo في نفس الطرفية). خطأ نموذج غير موجود من البوابة هو خطأ إملائي في المعرّف. خطأ يذكر مفتاح بائع مختلف يعني أن اسم نموذج بدون بادئة توجّه بشكل أصيل. وتحذير النموذج غير المعروف عند بدء التشغيل ليس خطأً، لكنه إشارتك لإضافة ملف البيانات الوصفية قبل جلسة طويلة، لا بعد أن تصطدم بحد السياق الحقيقي. داخل الجلسة، تصبح قراءة Aider الخاصة بـ tokens والتكلفة دقيقة بمجرد تسجيل البيانات الوصفية، وتعرض لوحة APIsRouter نفس الجلسات من جانب نقطة النهاية: النموذج لكل طلب، وعدد tokens، والإنفاق. بالنسبة لمبرمج ثنائي يعمل طوال اليوم، هذا العرض لكل مفتاح هو الإجابة الصادقة عن التكلفة الفعلية لأسبوع من Aider.

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

الأسئلة الشائعة

كيف أوصّل Aider بنقطة نهاية متوافقة مع OpenAI؟

صدّر OPENAI_API_BASE بعنوان URL لنقطة النهاية وOPENAI_API_KEY بمفتاحها، ثم شغّل aider --model openai/<model-id>. هذا هو مسار Aider الموثّق للتوافق مع OpenAI؛ بادئة openai/ تخبر طبقة litellm الخاصة به بالتحدث بـ chat-completions إلى base URL الخاص بك.

هل يمكن لـ Aider تشغيل نماذج Claude أو DeepSeek عبر هذا الإعداد؟

نعم. المعرّف بعد openai/ يُمرَّر إلى نقطة النهاية كسلسلة نصية عادية، لذا يعمل أي نموذج تخدمه البوابة: aider --model openai/claude-sonnet-4-6 أو openai/deepseek-v4-pro. احتفظ بالبادئة، وإلا يُستنتَج المزوّد من المعرّف ويُوجَّه بعيداً عن base الخاص بك.

ماذا يعني تحذير "Unknown context window size and costs"؟

لا يتعرّف Aider على النموذج، لذا يفترض نافذة سياق غير محدودة وتكلفة صفرية. الجلسات تعمل، لكن ميزانية السياق وعرض التكلفة خاطئان. سجّل النموذج في .aider.model.metadata.json، مُفهرَساً باسمه الكامل المؤهَّل ببادئة openai/، ويختفي التحذير والمشكلتان.

هل يتوجّه النموذج الضعيف ونموذج المحرر عبر البوابة أيضاً؟

نعم، إذا وجّهتهما إلى هناك: --weak-model openai/<fast-id> لرسائل commit والتلخيص، و--editor-model openai/<id> في وضع architect. جميع الفتحات الثلاث تقبل البادئة، لذا يمكن لمفتاح واحد أن يغطي مزيجاً من رئيسي/ضعيف/محرر عبر بائعين مختلفين.

لماذا لا يزال Aider يطلب مفتاح Anthropic؟

اسم نموذج أُدخل بدون بادئة openai/. استنتج litellm البائع من الاسم وحاول المسار الأصلي لـ Anthropic، الذي يريد ANTHROPIC_API_KEY. أضف البادئة ويذهب الطلب إلى OPENAI_API_BASE بمفتاح بوابتك بدلاً من ذلك.

هل يجب أن أضبط edit_format لنماذج البوابة؟

للنماذج التي لا يتعرّف عليها Aider، نعم. edit_format في .aider.model.settings.yml يتحكم في كيفية طلب Aider لتغييرات الكود، والنماذج الحديثة عموماً تؤدي أفضل عملها بتنسيق diff. ترك نموذج غير معروف على الافتراضات قد يجعل نموذجاً قوياً يبدو أسوأ مما هو عليه.