Skip to content
تم إنشاء هذه الصفحة وترجمتها بمساعدة الذكاء الاصطناعي. إذا لاحظت أي أخطاء، لا تتردد في المساهمة في تحسينها. تعديل على GitHub

توافق مخصص

صِل PRX بأي واجهة LLM API تتبع صيغة OpenAI Chat Completions. يعمل مع LiteLLM وvLLM وGroq وMistral وxAI وVenice وVercel AI وCloudflare AI وHuggingFace Inference وأي خدمة أخرى متوافقة مع OpenAI.

المتطلبات المسبقة

  • واجهة LLM API قيد التشغيل وتنفذ صيغة OpenAI Chat Completions ‏(/v1/chat/completions أو /chat/completions)
  • مفتاح API (إذا كانت الخدمة تتطلبه)

إعداد سريع

1. تحديد نقطة النهاية

حدّد عنوان URL الأساسي وطريقة المصادقة لواجهة API لديك. على سبيل المثال:

  • Groq: https://api.groq.com/openai/v1
  • Mistral: https://api.mistral.ai/v1
  • xAI: https://api.x.ai/v1
  • Local vLLM: http://localhost:8000/v1
  • LiteLLM proxy: http://localhost:4000

2. الإعداد

toml
[default]
provider = "compatible"
model = "your-model-name"

[providers.compatible]
api_key = "${YOUR_API_KEY}"
api_url = "https://api.your-provider.com/v1"

3. التحقق

bash
prx doctor models

مزوّدات التوافق المدمجة

يتضمن PRX أسماء مستعارة مُعدّة مسبقًا لخدمات شائعة متوافقة مع OpenAI:

Provider NameAliasesBase URLAuth Style
Venicevenicehttps://api.venice.aiBearer
Vercel AIvercel, vercel-aihttps://api.vercel.aiBearer
Cloudflare AIcloudflare, cloudflare-aihttps://gateway.ai.cloudflare.com/v1Bearer
Groqgroqhttps://api.groq.com/openai/v1Bearer
Mistralmistralhttps://api.mistral.ai/v1Bearer
xAIxai, grokhttps://api.x.ai/v1Bearer
Qianfanqianfan, baiduhttps://aip.baidubce.comBearer
Syntheticsynthetichttps://api.synthetic.comBearer
OpenCode Zenopencode, opencode-zenhttps://opencode.ai/zen/v1Bearer
LiteLLMlitellm, lite-llmconfigurableBearer
vLLMvllm, v-llmconfigurableBearer
HuggingFacehuggingface, hfconfigurableBearer

مرجع الإعدادات

الحقلالنوعالافتراضيالوصف
api_keystringاختياريمفتاح مصادقة API
api_urlstringمطلوبعنوان URL الأساسي لنقطة نهاية API
modelstringمطلوباسم/معرّف النموذج للاستخدام
auth_stylestring"bearer"نمط ترويسة المصادقة (انظر أدناه)

أنماط المصادقة

النمطصيغة الترويسةالاستخدام
bearerAuthorization: Bearer <key>أغلب المزوّدين (الافتراضي)
x-api-keyx-api-key: <key>بعض المزوّدين الصينيين
customاسم ترويسة مخصصحالات خاصة

الميزات

اكتشاف تلقائي لنقطة النهاية

يقوم PRX تلقائيًا بإضافة /chat/completions إلى عنوان URL الأساسي. لا تحتاج إلى تضمين مسار نقطة النهاية:

toml
# Correct - PRX appends /chat/completions
api_url = "https://api.groq.com/openai/v1"

# Also correct - explicit path works too
api_url = "https://api.groq.com/openai/v1/chat/completions"

الرجوع إلى Responses API

بالنسبة للمزوّدين الذين يدعمون Responses API الأحدث من OpenAI، يمكن لـ PRX الرجوع إلى /v1/responses عندما يُرجع /v1/chat/completions خطأ 404. هذا مفعّل افتراضيًا، ويمكن تعطيله للمزوّدين الذين لا يدعمونه (مثل GLM/Zhipu).

الاستدعاء الأصلي للأدوات

تُرسل الأدوات بصيغة استدعاء الدوال القياسية في OpenAI:

json
{
  "type": "function",
  "function": {
    "name": "tool_name",
    "description": "Tool description",
    "parameters": { "type": "object", "properties": {...} }
  }
}

يدعم المزوّد tool_choice: "auto" ويقوم بإلغاء تسلسل استجابات tool_calls المهيكلة بشكل صحيح.

دعم الرؤية

للنماذج القادرة على الرؤية، تُحوَّل الصور المضمّنة في الرسائل بعلامات [IMAGE:data:image/png;base64,...] تلقائيًا إلى صيغة الرؤية الخاصة بـ OpenAI مع كتل محتوى image_url.

دعم البث

يدعم مزود التوافق بث SSE لإرسال الرموز في الزمن الحقيقي. يتم تحليل أحداث البث تدريجيًا مع دعم:

  • مقاطع النص delta.content
  • delta.tool_calls للبناء التدريجي لاستدعاءات الأدوات
  • اكتشاف علامة [DONE]
  • التعامل السلس مع انتهاء المهلة

دمج رسالة النظام

بعض المزوّدين (مثل MiniMax) يرفضون رسائل role: system. يمكن لـ PRX دمج محتوى رسالة النظام تلقائيًا داخل أول رسالة مستخدم. هذا مفعّل افتراضيًا للمزوّدين المعروفين بعدم التوافق.

فرض وضع HTTP/1.1

بعض المزوّدين (خصوصًا DashScope/Qwen) يتطلبون HTTP/1.1 بدلًا من HTTP/2. يكتشف PRX هذه النقاط تلقائيًا ويجبر استخدام HTTP/1.1 لتحسين موثوقية الاتصال.

الرجوع إلى محتوى الاستدلال

للنماذج الاستدلالية التي تُرجع المخرجات في reasoning_content بدلًا من content، يرجع PRX تلقائيًا لاستخراج نص الاستدلال.

إعدادات متقدمة

خادم LLM محلي (vLLM، llama.cpp، إلخ)

toml
[default]
provider = "compatible"
model = "meta-llama/Llama-3.1-8B-Instruct"

[providers.compatible]
api_url = "http://localhost:8000/v1"
# No api_key needed for local servers

LiteLLM Proxy

toml
[default]
provider = "litellm"
model = "gpt-4o"

[providers.litellm]
api_key = "${LITELLM_API_KEY}"
api_url = "http://localhost:4000"

عدة مزوّدين مخصصين

استخدم موجّه النماذج لإعداد عدة مزوّدين متوافقين:

toml
[default]
provider = "openrouter"
model = "anthropic/claude-sonnet-4"

[[model_routes]]
pattern = "groq/*"
provider = "compatible"
api_url = "https://api.groq.com/openai/v1"
api_key = "${GROQ_API_KEY}"

[[model_routes]]
pattern = "mistral/*"
provider = "compatible"
api_url = "https://api.mistral.ai/v1"
api_key = "${MISTRAL_API_KEY}"

استكشاف الأخطاء وإصلاحها

Connection refused

تأكد أن نقطة نهاية API قابلة للوصول:

bash
curl -v https://api.your-provider.com/v1/models

401 Unauthorized

  • تحقق من صحة مفتاح API
  • تأكد أن نمط المصادقة يطابق مزوّدك (Bearer مقابل x-api-key)
  • بعض المزوّدين يتطلبون ترويسات إضافية؛ استخدم اسمًا مستعارًا معروفًا للمزوّد إذا كان متاحًا

تم رفض "role: system"

إذا كان مزوّدك لا يدعم رسائل النظام، يفترض أن PRX يعالج ذلك تلقائيًا للمزوّدين المعروفين. بالنسبة لنقاط النهاية المخصصة، فهذا قيد في المزوّد. الحل المؤقت: ضمّن تعليمات النظام في أول رسالة مستخدم.

البث لا يعمل

ليست كل واجهات OpenAI المتوافقة تدعم البث. إذا فشل البث، يرجع PRX تلقائيًا إلى وضع غير البث.

لم يتم العثور على النموذج

تحقق من اسم/معرّف النموذج الدقيق الذي يتوقعه مزودك. تختلف اصطلاحات التسمية بين المزوّدين:

  • Groq: llama-3.3-70b-versatile
  • Mistral: mistral-large-latest
  • xAI: grok-2

راجع توثيق مزوّدك لمعرفة معرّفات النماذج الصحيحة.

Released under the Apache-2.0 License.