بوابة الذكاء الاصطناعي: إكمالات المحادثة
نقطة طرفية لإكمالات المحادثة متوافقة مع OpenAI، مدعومة بمجمع AI Pool متعدد المزودين من Mersal.
بوابة الذكاء الاصطناعي هي واجهة أمامية لـ AI Pool الداخلي في Mersal — موجّه ذكاء اصطناعي متعدد المزودين مع تبديل تلقائي عند الفشل. بدلاً من الربط مع مزود ذكاء اصطناعي واحد وتثبيته داخل تطبيقك، ترسل الطلبات إلى نقطة Mersal الطرفية المتوافقة مع OpenAI، ويقوم AI Pool بتوجيه الطلب إلى مزود سليم. إذا تعطل أحد المزودين أو تدهور أداؤه، يبدّل المجمع تلقائيًا إلى مزود آخر، فتحصل دائمًا على إكمال يعمل.
تتبع أشكال الطلب والاستجابة اتفاقية إكمالات محادثة OpenAI، لذا تعمل الأدوات المتوافقة مع OpenAI الموجودة لديك عمومًا بأقل قدر من التعديلات — يكفي توجيهها إلى الرابط الأساسي الخاص بـ Mersal واستخدام مفتاح AI Pool الخاص بك.
النقطة الطرفية
المصادقة
تستخدم هذه النقطة الطرفية آلية مصادقة مختلفة عن نقاط إرسال القنوات: رمز Bearer، وليس ترويسة Api-key.
Authorization: Bearer <ai-pool-key>تُنشأ مفاتيح AI Pool خصيصًا للوصول إلى بوابة الذكاء الاصطناعي، وهي منفصلة عن مفتاح API الخاص بالقنوات. راجع المصادقة لمعرفة أين يمكنك إنشاء واحد.
معاملات الطلب
| الاسم | النوع | مطلوب | الوصف |
|---|---|---|---|
messages | array | نعم | مصفوفة رسائل المحادثة، كل رسالة تحتوي على role (مثل user أو assistant أو system) و content. |
temperature | number | لا | درجة العشوائية في الاستجابة (sampling temperature). |
max_tokens | number | لا | الحد الأقصى لعدد الرموز (tokens) المولّدة في الإكمال. |
مثال على الطلب
curl -X POST https://mersal.it/api/ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_AI_POOL_KEY" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{ "role": "user", "content": "Hello" }
],
"temperature": 0.5,
"max_tokens": 600
}'<?php
$response = Http::withHeaders([
'Authorization' => 'Bearer YOUR_AI_POOL_KEY',
'Content-Type' => 'application/json',
])->post('https://mersal.it/api/ai/v1/chat/completions', [
'messages' => [
['role' => 'user', 'content' => 'Hello'],
],
'temperature' => 0.5,
'max_tokens' => 600,
]);
$data = $response->json();
$reply = $data['choices'][0]['message']['content'];<?php
$payload = [
'messages' => [
['role' => 'user', 'content' => 'Hello'],
],
'temperature' => 0.5,
'max_tokens' => 600,
];
$ch = curl_init('https://mersal.it/api/ai/v1/chat/completions');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_AI_POOL_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($payload),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);// متوافق مع مكتبة openai الرسمية — غيّر الـ baseURL والمفتاح فقط
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://mersal.it/api/ai/v1",
apiKey: process.env.MERSAL_AI_POOL_KEY,
});
const completion = await client.chat.completions.create({
messages: [{ role: "user", content: "Hello" }],
temperature: 0.5,
max_tokens: 600,
});
console.log(completion.choices[0].message.content);# متوافق مع مكتبة openai الرسمية — غيّر الـ base_url والمفتاح فقط
import os
from openai import OpenAI
client = OpenAI(
base_url="https://mersal.it/api/ai/v1",
api_key=os.environ["MERSAL_AI_POOL_KEY"],
)
completion = client.chat.completions.create(
model="mersal-pool",
messages=[{"role": "user", "content": "Hello"}],
temperature=0.5,
max_tokens=600,
)
print(completion.choices[0].message.content)مثال على الاستجابة
{
"id": "chatcmpl-xxxxxxx",
"object": "chat.completion",
"created": 1730000000,
"model": "mersal-pool",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "Hi there!" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 12, "completion_tokens": 8, "total_tokens": 20 },
"mersal_pool": { "provider": "...", "model": "...", "latency_ms": 420, "attempts": 1 }
}يوضّح كائن mersal_pool أي مزود فعليًا خدم الطلب، ومدة استغراقه، وعدد المحاولات التي أجراها المجمع (مفيد عندما يفشل أول مزود يتم تجربته وينتقل الطلب إلى مزود آخر).
عرض النماذج المتاحة
تُرجع هذه النقطة النماذج المتاحة حاليًا عبر AI Pool، باستخدام نفس مصادقة Bearer.
الأخطاء
أكثر حالات الفشل شيوعًا هي رمز Bearer مفقود أو غير صالح، أو التقييد (throttling) عند تجاوز حدود الطلبات المهيأة لمفتاحك — راجع حدود المعدل. للاطلاع على الشكل العام للأخطاء، راجع الأخطاء ورموز الحالة.
