Developer guide
المصادقة باستخدام مفتاح API
رأس الطلب الذي يتضمن مفتاح API وbase URL المطلوب ضبطه في SDK
تُجري بوابة CLEVI المصادقة على المسارات المتوافقة مع OpenAI والمسارات المتوافقة مع Anthropic باستخدام مفتاح API واحد.
القيمتان اللتان يجب ضبطهما على العميل هما رأس المصادقة الذي يتضمن المفتاح وbase URL الخاص بـ SDK، وتختلف صيغ الرؤوس المسموح بها وbase URL حسب المواصفة.
بعد إكمال الإعداد، يمكنك التحقق فورًا من نجاح المصادقة من خلال الاستعلام عن قائمة النماذج.
تُرجع البوابة 401 عند فشل المصادقة، و403 عند اجتياز المصادقة ولكن عدم استيفاء شروط الصلاحيات أو الحدود.
أصدر مفتاح API من شاشة مفاتيح API في وحدة التحكم. يمكنك أيضًا من الشاشة نفسها إدارة إلغاء المفتاح ونطاق استخدامه.
رأس المصادقة
تضع كلتا المواصفتين مفتاح API في رأس طلب واحد. يمكنك استخدام رأس X-API-Key أو رأس Authorization، وتختلف الصيغة المسموح بها حسب المواصفة.
| الرأس | متوافق مع OpenAI | متوافق مع Anthropic |
|---|---|---|
| X-API-Key: <키> | مسموح | مسموح |
| Authorization: Bearer <키> | مسموح | مسموح |
| Authorization: <키> (بدون Bearer) | مرفوض | مسموح |
عند استخدام رأس Authorization في المسار المتوافق مع OpenAI، تكون بادئة Bearer مطلوبة. إذا أرسلت المفتاح وحده من دون البادئة، فسترفض البوابة الطلب.
لا تميّز أسماء الرؤوس بين الأحرف الكبيرة والصغيرة، ولذلك يعمل أيضًا رأس x-api-key الذي يرسله Anthropic SDK كما هو. عند تحديد الرأسين معًا، تُطبّق قيمة X-API-Key أولًا.
base URL
يمكنك استخدام SDK الحالي كما هو بمجرد تغيير base URL إلى العنوان أدناه. يختلف العنوانان في ما إذا كانا يتضمنان /v1، لذا حدّد العنوان المطابق للمواصفة كما هو.
| المواصفة | base URL | قاعدة المسار |
|---|---|---|
| متوافق مع OpenAI | https://platform.clevi.net/api/v2/aiservice/openai/v1 | يجب تضمين /v1 في base URL. |
| متوافق مع Anthropic | https://platform.clevi.net/api/v2/aiservice/anthropic | ينتهي العنوان قبل /v1، لأن Anthropic SDK يضيف /v1 مباشرةً إلى مسار الطلب. |
التحقق من المصادقة
بعد إعداد المفتاح وbase URL، يمكنك التحقق من نجاح المصادقة من خلال الاستعلام عن قائمة النماذج. ينفّذ المثال أدناه الاستعلام نفسه باستخدام curl وOpenAI SDK وAnthropic SDK. استبدل sk-... بالمفتاح الصادر من شاشة مفاتيح API.
عند إجراء الاستعلام باستخدام curl، حدّد المسار الكامل حتى /v1/models في كلا التنسيقين. يستخدم الأمر الأول عنوان X-API-Key في المسار المتوافق مع OpenAI، بينما يستخدم الأمر الثاني عنوان Authorization في المسار المتوافق مع Anthropic.
curl https://platform.clevi.net/api/v2/aiservice/openai/v1/models \
-H "X-API-Key: sk-..."
curl https://platform.clevi.net/api/v2/aiservice/anthropic/v1/models \
-H "Authorization: Bearer sk-..." \
-H "anthropic-version: 2023-06-01"في OpenAI SDK، حدّد عنوانًا يتضمن /v1 في base_url.
from openai import OpenAI
client = OpenAI(
api_key="sk-...",
base_url="https://platform.clevi.net/api/v2/aiservice/openai/v1",
)
for model in client.models.list():
print(model.id)في Anthropic SDK، حدّد base_url بحيث ينتهي قبل /v1.
تُستخدم للمصادقة قيمة عنوان x-api-key التي يرسلها SDK كما هي.
from anthropic import Anthropic
client = Anthropic(
api_key="sk-...",
base_url="https://platform.clevi.net/api/v2/aiservice/anthropic",
)
for model in client.models.list(limit=20).data:
print(model.id)في أي من الأمثلة، إذا كانت الاستجابة 200 فهذا يعني نجاح المصادقة، وتتضمن data في الاستجابة قائمة النماذج التي يمكن استدعاؤها باستخدام هذا المفتاح. إذا كانت الاستجابة 401، فتحقّق من السبب بالترتيب الوارد في القسم التالي.
فشل المصادقة
يُرجع النظام 401 عند إرسال مفتاح غير موجود أو منتهي الصلاحية أو ملغى. عند إجراء استدعاء من دون مفتاح في المسار المتوافق مع OpenAI، يُرجع النظام النص التالي، بينما تكون قيمة error.type في المسار المتوافق مع Anthropic هي authentication_error.
{
"error": {
"message": "API key is required.",
"type": "invalid_request_error"
}
}عند تلقي 401، تحقّق بالترتيب التالي.
- تحقّق من حالة المفتاح في شاشة مفاتيح API. إذا كان المفتاح منتهي الصلاحية أو ملغى، فأصدر مفتاحًا جديدًا.
- تحقّق من أن اسم العنوان هو X-API-Key أو Authorization.
- إذا كنت تستخدم عنوان Authorization في المسار المتوافق مع OpenAI، فتحقّق من وجود البادئة Bearer.
بعد التعديل، أعد تنفيذ الاستعلام عن قائمة النماذج في قسم التحقق من المصادقة، وتحقّق من وصول الاستجابة 200.
العناوين المستخدمة معًا
جميع العناوين التالية اختيارية. نوصي بتحديد X-Request-Id لتسهيل تتبّع المشكلات.
| العنوان | الغرض | عند حذفه |
|---|---|---|
| X-Request-Id | مُعرّف لتتبّع الطلبات. يعيد المسار المتوافق مع Anthropic القيمة نفسها في ترويسة request-id للاستجابة. | يُصدره الخادم. |
| X-Region-Code | يحدد منطقة الاستدعاء. | القيمة هي global. |
| X-Product-Sku (يمكن تحديده أيضًا باستخدام product_sku في الاستعلام) | يحدد Product SKU المستخدم للفوترة مباشرةً. تكون أولوية الترويسة أعلى من أولوية الاستعلام، ويُستخدم أساسًا في مسارات الصوت والصوتيات. | لا يمكن حذفه في مسارات الصوتيات. يختار audio/speech وaudio/transcriptions الـ Product باستخدام model في نص الطلب. |
| anthropic-version / anthropic-beta | يُمرَّر كما هو في المسار المتوافق مع Anthropic. | الإصدار هو 2023-06-01. |
إذا تكررت أخطاء 5xx، فأبلغنا عبر المساعدة والتواصل، مع X-Request-Id. وإذا كانت القيمة محددة مباشرةً، فيمكن مطابقتها فورًا مع سجلات العميل.