المحتويات
بنيتَ تطبيقك على واجهة OpenAI البرمجية. ثم أردتَ تجربة Claude أيضًا، ومقارنة Gemini. لكن لكل مزوّد SDK مختلف، وبنية طلب مختلفة، وسلوك أخطاء مختلف. كل تبديل يعني إعادة كتابة الكود، وتحويل الاستجابات، وصيانة منطق إعادة محاولة منفصل لكل مورّد — وقبل أن تدرك، تكون «سباكة خاصة بكل مزوّد» قد تسلّلت إلى كل زاوية من تطبيقك. وطالما أنت مقيّد بمزوّد واحد، فإنه في اللحظة التي يتعطّل فيها ذلك المزوّد أو يرفع أسعاره أو يوقف نموذجًا، ينهار تطبيقك معه.
الشيء الذي يتولّى كل تلك السباكة هو بوابة LLM (بوابة الذكاء الاصطناعي)، وتُسمّى أيضًا وكيل LLM (LLM proxy). إنها وسيط يقع بين تطبيقك والمزوّدين، ويعرض واجهة برمجية واحدة (متوافقة عادةً مع OpenAI) للوصول إلى كل نموذج، ويتولّى المهام الشاملة — التبديل الاحتياطي، وتتبّع التكلفة، والتخزين المؤقت، وتحديد المعدّل. يغطّي هذا الدليل ما الذي تفعله البوابة لأجلك، والفرق بين الأنواع المُستضاف ذاتيًا والمُدار وSDK، وكيفية الاختيار بين LiteLLM وOpenRouter وVercel AI SDK، والحدود التي عليك معرفتها كي لا تُكوى.
الجواب في 30 ثانية
إن قرأت صندوقًا واحدًا فقط
ملاحظة: البوابة ليست غداءً مجانيًا. إنها تكلّفك قفزة من زمن الاستجابة، ورسومًا، وبعض فقدان الميزات (§8).
1. لماذا تحتاج إلى بوابة LLM
إذا كنت تستدعي مزوّدًا واحدًا فقط عبر SDK واحد، فلا تحتاج إلى بوابة. تحتاج إليها في اللحظة التي تريد فيها استخدام أكثر من نموذج. انظر إلى الآلام الثلاثة الكلاسيكية.
لكل مزوّد أدوات SDK مختلفة، وأسماء معاملات، وبُنى استجابة، ورموز أخطاء مختلفة. كل تبديل يعني إعادة كتابة تطبيقك.
اعتمد بالكامل على شركة واحدة، وسيصبح تعطّلها أو تغيّر أسعارها توقّفًا في خدمتك. تريد مخرج طوارئ (تبديلًا احتياطيًا).
يختلف أفضل نموذج بحسب المهمة. تريد أن تستخدم نموذجًا رخيصًا للمسودة وذكيًا للصقل — لكن السباكة تقف في الطريق.
ما تشترك فيه هو بنية تجعل قيود الـ SDK تُملي خيارًا استراتيجيًا في جوهره — أيّ نموذج نستخدم. البوابة تنتزع تلك السباكة من تطبيقك. لا يحتاج تطبيقك إلى معرفة سوى نقطة نهاية واحدة؛ أمّا مَن يُستدعى خلفها، ومَن يُلجأ إليه عند الفشل، وكم أنفقت، فتلك مهمة البوابة. ولأن بناء وكيل ذكاء اصطناعي أو إطار عمل للوكلاء يفترض دائمًا تقريبًا وجود نماذج متعددة، فإن الطلب في تزايد مستمر.
2. ما هي بوابة LLM
بوابة LLM هي وكيل يقع بين تطبيقك ومزوّد أو أكثر من مزوّدي LLM. تعرض معظمها واجهة برمجية واحدة مصمّمة على شكل نقطة نهاية chat-completions الخاصة بـ OpenAI، وتجمّع في مكان واحد العمل الشامل الذي كان سيتبعثر لولاها عبر كودك — التوجيه، وإعادة المحاولة والتبديل الاحتياطي، والتخزين المؤقت، وتحديد المعدّل، وتتبّع التكلفة، والتحكّم في الوصول.
(متوافقة مع OpenAI)
تكلفة / تخزين مؤقت / تحكّم
Google / محلي…
الفكرة هي جعل النافذة واحدة. يمرّر كود تطبيقك مجرّد سلسلة نصية إلى model. اكتب anthropic/claude-opus-4.8 فتحصل على Claude؛ واكتب openai/gpt-5.5 فتحصل على GPT — ولا شيء آخر في التطبيق يتغيّر. أمّا القرارات مثل «ارجع احتياطيًا إلى نموذج آخر حين يتعطّل هذا» أو «أعِد هذا السؤال المطابق من التخزين المؤقت» فتُحسم كلها في جهة البوابة. ومزج نموذج LLM محلي بحيث «تبقى البيانات الحسّاسة محليًا ويذهب كل شيء آخر إلى السحابة» يُكتب بالطريقة نفسها.
3. ما الذي تتولاه نيابةً عنك
العمل الشامل الذي تتولّاه البوابة يقع تقريبًا في هذه السلال الست. تختلف الأدوات فيما تُتقنه، لكن الاتجاه مشترك.
استدعِ كل مزوّد بـصيغة واحدة (متوافقة عادةً مع OpenAI). محو فروق المورّدين عن التطبيق هو الميزة الجوهرية.
حين يُخطئ النموذج الأساسي أو يُثقَل أو تنتهي مهلته، انتقل تلقائيًا إلى آخر. قلب استمرارية الأعمال.
شاهد الإنفاق لكل مستخدم أو فريق أو مشروع. وزّع مفاتيح افتراضية محدودة النطاق تُخفي المفاتيح الحقيقية.
تذكّر الطلبات المطابقة أو المتشابهة وأعِدها فورًا. يقلّص فواتير الواجهة البرمجية وزمن الاستجابة معًا.
حدود رموز وطلبات لكل مفتاح، إضافةً إلى موازنة الحِمل عبر مفاتيح ومثيلات متعددة.
قِس السجلّات وزمن الاستجابة ومعدّل النجاح عبر كل الطلبات. تتيح بعض الأدوات أيضًا إدراج حواجز واقية على المدخلات والمخرجات.
💡 «التبديل الاحتياطي» لا يعني «الأمان». النموذج الذي ترجع إليه احتياطيًا له خصائص إخراج مختلفة، وعدد رموز مختلف، وميزات مدعومة مختلفة. لا يصبح التبديل الاحتياطي آمنًا في لحظة إعداده — بل يعمل فقط بعد أن تُطلقه فعليًا وتختبره. تحقّق دائمًا مسبقًا من أن مطالبتك لا تنكسر بعد التبديل.
4. ثلاثة أنواع: مُستضاف ذاتيًا، مُدار، SDK
يُستخدم «بوابة LLM» كتسمية واحدة، لكن مكان تشغيلها يقسّمها إلى ثلاث شخصيّات متمايزة تمامًا. أخطئ في هذا، فستختار خطأ.
| النوع | مكان التشغيل | أمثلة | لمن يناسب |
|---|---|---|---|
| ① وكيل مُستضاف ذاتيًا | خوادمك (عملية منفصلة) | LiteLLM / Portkey (مفتوح المصدر) | إبقاء البيانات داخليًا وتحت الحوكمة |
| ② مُدار (SaaS) | سحابة المزوّد | OpenRouter / Cloudflare | استخدمه فورًا، بلا تشغيل |
| ③ SDK / مكتبة | داخل كود تطبيقك | Vercel AI SDK | تجريد سريع في TS/JS |
① المُستضاف ذاتيًا عملية مستقلة (خادم وكيل) تُقيمها على بنيتك التحتية الخاصة. ولأن المطالبات لا تمرّ عبر SaaS خارجي، فهو قوي في الحوكمة والتدقيق — لكنك تشغّله بنفسك. ② المُدار يجعل المزوّد يشغّل الوكيل، فهو الأسرع تبنّيًا، لكن الطلبات تمرّ عبر طرف ثالث. ③ SDK لا يُقيم أي عملية منفصلة؛ إنه يمتصّ فروق المزوّدين داخل كود تطبيقك — ليس وسيطًا شبكيًا بل «طبقة تجريد»، ويمكن جمعه مع ① أو ②.
5. مقارنة الأدوات الرئيسية
إليك الأبطال الثلاثة بترتيب موصى به، إضافةً إلى اثنين آخرين يستحقّان المعرفة. الأرقام مبنية على الصفحات الرسمية لكل مورّد اعتبارًا من يوليو 2026 (تتغيّر العروض، فتأكّد دائمًا من الأحدث مقابل المصدر الأولي).
LiteLLM — الوكيل المُستضاف ذاتيًا القياسي
LiteLLM (من BerriAI) مكتبة Python مفتوحة المصدر وبوابة مُستضافة ذاتيًا. تتيح لك استدعاء أكثر من 100 مزوّد و2,500+ نموذج عبر واجهة برمجية واحدة متوافقة مع OpenAI (وفقًا للمستودع الرسمي). أقِمه كوكيل فتحصل على تتبّع التكلفة، والمفاتيح الافتراضية، وتحديد المعدّل، والتبديل الاحتياطي، وموازنة الحِمل، والتخزين المؤقت عبر Redis، والقابلية للمراقبة (تكاملات Langfuse/Prometheus/Datadog). إنه الخيار الأول للمؤسسات التي تريد إبقاء المطالبات داخليًا.
OpenRouter — تعدّد مزوّدين بمفتاح واحد، فورًا
OpenRouter بوابة مُدارة بلا تشغيل. بـواجهة برمجية واحدة متوافقة مع OpenAI ومفتاح API واحد، تمنحك الوصول إلى أكثر من 400 نموذج وفقًا للموقع الرسمي. يبرز تصميم تسعيرها: يذكر الموقع الرسمي أنها «لا نضع هامشًا على رموز الاستدلال (أسعار الكتالوج تساوي الأسعار المنشورة لكل مزوّد)»، بينما تفرض رسوم منصة 5.5% عند شراء الرصيد (وفقًا لـ openrouter.ai/pricing). إنها سريعة على نحو ساحق لهدف «فقط شغّله» و«جرّب كل مورّد بمفتاح واحد».
Vercel AI SDK — التجريد من الكود بلغة TypeScript
Vercel AI SDK (يُسمّى مجرّد «AI SDK» في 2026) عُدّة أدوات TypeScript مفتوحة المصدر. فبدلًا من عملية وكيل منفصلة، هو طبقة تجريد تمتصّ فروق المزوّدين داخل كود تطبيقك. ما تسمّيه الوثائق «النواة المعمارية» هو تجريد المزوّد: الانتقال من OpenAI إلى Anthropic يعني تغيير استيراد واحد وسلسلة نموذج واحدة — بينما يبقى كود التوليد والبثّ واستدعاء الأدوات لديك سليمًا تمامًا. اقرنه بـVercel AI Gateway المُدار فتصل إلى أكثر من 100 نموذج. للتفاصيل التنفيذية والكود، راجع دليل Vercel AI SDK الكامل.
اثنان آخران يستحقّان المعرفة
خيار مُدار يعمل على الحافة. مرّر استدعاءات مزوّدك الحالية عبره فحسب فتحصل على التخزين المؤقت وتحديد المعدّل والتحليلات والتسجيل والتبديل الاحتياطي بأدنى تغيير في الكود (وفقًا للوثائق). ملاءمة رائعة إن كنت تعمل أصلًا على Cloudflare.
مستوى تحكّم يضيف إلى البوابة حوكمة وحواجز واقية وإدارة مطالبات بجودة الإنتاج. يقول الموقع الرسمي إنه يربط أكثر من 1,600 نموذج LLM عبر واجهة برمجية واحدة. ويمكن استضافة النسخة مفتوحة المصدر ذاتيًا أيضًا.
| الأداة | النوع | النافذة | التركيز | فكرة التسعير |
|---|---|---|---|---|
| LiteLLM | ① استضافة ذاتية | واجهة برمجية متوافقة مع OpenAI | حوكمة، مفاتيح افتراضية، قابلية للمراقبة | مفتوح المصدر مجانًا + تكلفة تشغيلك |
| OpenRouter | ② مُدار | واجهة برمجية متوافقة مع OpenAI | فوري، أكثر من 400 نموذج بمفتاح واحد | بدون هامش على الاستدلال؛ 5.5% عند الشراء |
| Vercel AI SDK | ③ SDK | دوال TS | تبديل من الكود، آمن الأنواع | SDK مجاني + فوترة كل مورّد |
| Cloudflare AI Gateway | ② مُدار (حافة) | تمرير مباشر | تخزين مؤقت، قابلية للمراقبة | تسعير Cloudflare |
| Portkey | ① / ② كلاهما | واجهة برمجية موحّدة | حوكمة، حواجز واقية | خطط مفتوحة المصدر + SaaS |
6. الإعداد الأدنى (كود)
يبدو الأمر مرهِبًا، لكن جوهر التبديل هو مكان واحد فقط — بدّل نقطة النهاية (أو سلسلة النموذج). إليك المثال الأدنى لكل نوع من الأنواع الثلاثة.
② مُدار: OpenRouter (بدّل نقطة النهاية فحسب)
أبقِ SDK OpenAI المعتاد؛ غيّر فقط base_url والمفتاح للوصول إلى أكثر من 400 نموذج.
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1", # هذا هو التبديل الوحيد
api_key="sk-or-...", # مفتاح OpenRouter الخاص بك
)
resp = client.chat.completions.create(
model="anthropic/claude-opus-4.8", # غيّرها إلى "openai/gpt-5.5" وتكون قد بدّلت
messages=[{"role": "user", "content": "مرحبا"}],
)
print(resp.choices[0].message.content)
① مُستضاف ذاتيًا: LiteLLM (أقِم وكيلك الخاص)
أدرِج نماذجك في ملف إعداد، وأمر واحد يُقيم بوابة متوافقة مع OpenAI على localhost:4000. يكفي أن يشير تطبيقك إلى هناك.
# config.yaml
model_list:
- model_name: claude
litellm_params:
model: anthropic/claude-opus-4-8
api_key: os.environ/ANTHROPIC_API_KEY
- model_name: gpt
litellm_params:
model: openai/gpt-5.5
api_key: os.environ/OPENAI_API_KEY
# البدء (يقدّم واجهة برمجية متوافقة مع OpenAI على http://localhost:4000)
litellm --config config.yaml
③ SDK: Vercel AI SDK (غيّر سلسلة النموذج في الكود)
أبقِ الاستيراد والدالة؛ بدّل فقط سلسلة model للتبديل.
import { generateText } from 'ai';
const { text } = await generateText({
model: 'anthropic/claude-opus-4.8', // غيّرها إلى 'openai/gpt-5.5'
prompt: 'مرحبا',
});
console.log(text);
في كل حالة لم تلمس سطرًا واحدًا من منطق التطبيق. ذلك هو أثر البوابة/التجريد. أمّا التبديل الاحتياطي والتخزين المؤقت فيُضافان فوق هذا عبر الإعداد (وثائق كل مورّد هي أسرع طريق إلى الصيغة الدقيقة).
7. كيف تختار
اختر لا بحسب «أيّها الأفضل» بل بحسب أيّها يناسب قيودك. طبّقها بهذا الترتيب فنادرًا ما ستتعثّر.
فقط شغّله / فرد، إثبات مفهوم، فريق صغير ← OpenRouter. مفتاح واحد، بلا تشغيل، جرّب نماذج كل مورّد. عامِل رسوم الـ 5.5% كثمن عدم تشغيله بنفسك.
تبني بلغة TypeScript / Next.js ← Vercel AI SDK. تجريد آمن الأنواع من الكود، إضافةً إلى عُدّة واجهة بثّ كاملة. للتنفيذ، توجّه إلى الدليل الكامل.
لا تريد أن تغادر البيانات / تحتاج حوكمة على مستوى المؤسسة ← استضف LiteLLM ذاتيًا (أو Portkey مفتوح المصدر). سلّم مفاتيح افتراضية للفرق واحتفظ بالتكلفة والسجلّات في مكان واحد.
مبني أصلًا على Cloudflare ← Cloudflare AI Gateway: مرّر استدعاءاتك الحالية عبره وأضِف التخزين المؤقت والقابلية للمراقبة.
التركيبات أمر طبيعي عمليًا. مثلًا، «اكتب التطبيق بـ Vercel AI SDK، لكن وجّه بابه الخلفي إلى وكيل LiteLLM لتمركز التكلفة والمفاتيح على مستوى الشركة» إعداد بمستويين ينجح تحديدًا لأن نوعَي الـ SDK والوكيل طبقتان منفصلتان. وكـتأمين ضد خطر الاعتماد، صار إدراج نموذج LLM محلي كأحد أهداف التبديل الاحتياطي معيارًا أيضًا.
8. تحذيرات وحدود — ليست مجانية
البوابة مريحة، لكن بما أنها تضيف طبقة، فهناك دائمًا تكلفة. ضع هذه الأربعة في حسابك قبل تبنّي واحدة.
مع وسيط في المنتصف، يرتفع زمن الاستجابة قليلًا. الأنواع المُدارة تشعر بالمسافة الجغرافية خصوصًا. يعوّضه التخزين المؤقت غالبًا، لكن للاستخدامات فائقة قِصر زمن الاستجابة، قِس.
تصبح مرنًا تجاه أعطال المزوّدين، لكن إن تعطّلت البوابة نفسها، يتعطّل كل شيء. ابنِ تكرارًا احتياطيًا، وفحوص صحة، ومسار طوارئ للاستدعاء المباشر.
الأنواع المُدارة تضيف رسمًا (OpenRouter بنسبة 5.5% من الشراء)؛ والمُستضاف ذاتيًا يضيف تكلفة تشغيل الخادم. تتحرّك نقطة التعادل مع الحجم.
التقارب نحو القاسم المشترك المتوافق مع OpenAI يعني أن الميزات الفريدة لكل مورّد (التفكير الممتد، صيغ الأدوات الخاصة) قد لا تمرّ أو تصل متأخرة.
شيء آخر يُغفَل كثيرًا: الخصوصية. التوجيه عبر بوابة مُدارة يعني أن مطالباتك واستجاباتك تمرّ عبر بنية طرف ثالث التحتية. إن كنت تتعامل مع بيانات حسّاسة، فتحقّق من سياسة معالجة بيانات الوسيط، أو أبقِ المطالبات داخليًا بنوع مُستضاف ذاتيًا (مثل LiteLLM) من الأساس. وللإنتاج داخل مؤسسة، عامِل مفاتيح البوابة نفسها وسجلّاتها كموضوع أقل امتياز وعزل أيضًا — ذلك هو الجانب الآمن.
الخلاصة
- بوابة LLM هي وسيط بين تطبيقك والمزوّدين. تتيح لك الوصول إلى كل نموذج عبر واجهة برمجية واحدة.
- تتولّى ست مهام: واجهة برمجية موحّدة، تبديل احتياطي، تتبّع تكلفة، تخزين مؤقت، تحديد معدّل، قابلية للمراقبة.
- هناك ثلاثة أنواع — ① مُستضاف ذاتيًا (LiteLLM) / ② مُدار (OpenRouter) / ③ SDK (Vercel AI SDK). اختر بحسب القيد.
- كيف تختار: فوري = OpenRouter / بناء TS = Vercel AI SDK / حوكمة = LiteLLM. التركيبات أمر طبيعي.
- لا تنسَ التكاليف: قفزة زمن استجابة، نقطة فشل البوابة نفسها، الرسوم، فقدان الميزات، الخصوصية.
- التبديل الاحتياطي لا يعمل لمجرّد إعداده — أطلقه فعليًا وتحقّق من أن مطالبتك لا تنكسر.
إن كنت تعمل مع نماذج متعددة، فقد صارت البوابة لا «ميزة لطيفة» بل تجهيزًا أساسيًا لجمع السباكة في مكان واحد. ابدأ بـتبديل base_url مع OpenRouter أو تغيير سلسلة نموذج واحدة مع Vercel AI SDK — تلك الخطوة الصغيرة تُذيب الارتباط بمورّد وحيد وتجعل المقارنة والتبديل الاحتياطي واقعيَّين فجأة. وللمواصفات الدقيقة والراهنة، تأكّد من المصدر الأولي لكل مورّد (LiteLLM / OpenRouter / AI SDK).
الأسئلة الشائعة
س. هل بوابة LLM ووكيل LLM شيئان مختلفان؟
ج. يُستخدمان بالتبادل تقريبًا. كلاهما يشير إلى وسيط يقف بين تطبيقك والمزوّدين. وإن كان لا بدّ من فرق، فإن «الوكيل» يميل نحو الآلية (ترحيل حركة المرور)، بينما «البوابة» تميل نحو الدور (بما في ذلك إدارة التكلفة والحوكمة).
س. إن كان OpenRouter «بلا هامش»، فكيف قد ينتهي أغلى؟
ج. معدّل الاستدلال لكل رمز هو السعر المنشور لكل مزوّد (بلا هامش)، لكن وفقًا للموقع الرسمي هناك رسوم منصة 5.5% عند شراء الرصيد. وكلّما صغُر مبلغ شحنك، عضّت تلك الحصّة أكثر، فقدّر التكلفة الفعلية بـ«سعر النموذج + نسبة قليلة». تأكّد من الأحدث على openrouter.ai/pricing.
س. Vercel AI SDK أم LiteLLM — أيّهما أستخدم؟
ج. إنهما طبقتان منفصلتان، فلا يتنافسان. Vercel AI SDK تجريد داخل الكود (لـ TS/JS)؛ وLiteLLM وكيل بعملية منفصلة (غير مرتبط بلغة، موجّه نحو الحوكمة). ابنِ تطبيق TS بسرعة بالأول؛ واحتفظ بتكلفة الشركة ومفاتيحها وسجلّاتها في مكان واحد بالثاني. جمعهما معًا شائع.
س. هل تُبطئ إضافة بوابة الأمور؟
ج. إضافة وسيط واحد تضيف قليلًا من زمن الاستجابة. لكن حيث يعمل التخزين المؤقت، تكون أسرع غالبًا بدلًا من ذلك. إن كان زمن الاستجابة فائق القِصر متطلّبًا، فضع نوعًا مُستضافًا ذاتيًا قريبًا، واتّكئ على التخزين المؤقت، وأبقِ مسار طوارئ للاستدعاء المباشر للمسارات الحرجة لاحتواء الأثر.
س. هل أحتاج إلى بوابة حتى لو استخدمت مزوّدًا واحدًا فقط؟
ج. غير مطلوب. لكن غالبًا ما توجد قيمة حتى من وضوح التكلفة، والتحكّم في الوصول عبر المفاتيح الافتراضية، والتخزين المؤقت، والقابلية للمراقبة وحدها. وإن كنت قد تضيف نماذج أو تستخدمها عبر فريق لاحقًا، فإن إدراج واحدة مبكرًا يُسهّل الانتقال.