توليد الردود
نقطة واحدة لكل التوليد النصّي: POST /v1/chat/completions. الشكل مألوف عمدًا كي ينتقل تطبيقك بتغيير عنوان ومفتاح لا بإعادة كتابة.
حقول الطلب
| الحقل | النوع | الوصف |
|---|---|---|
| model | string | اسم النموذج المعلن. الافتراضي vfm-1 (توجيه تلقائي). |
| messages | array | قائمة الرسائل بالترتيب. لكل رسالة role وcontent. |
| messages[].role | string | دور الرسالة: system أو user أو assistant. |
| messages[].content | string | نصّ الرسالة. |
| stream | boolean | true يبثّ الرد أحداثًا متتابعة. الافتراضي false. |
| temperature | number | تنوّع الإخراج بين 0 و2. الافتراضي 0.7. |
| max_tokens | integer | null | سقف توكنات الرد. اتركه فارغًا ليقرّر النموذج. |
{
"model": "vorix-pro",
"messages": [
{ "role": "system", "content": "You answer in short bullet points." },
{ "role": "user", "content": "Summarise the attached report." }
],
"stream": false,
"temperature": 0.7,
"max_tokens": 800
}حدود الطلب: حتى 200 رسالة في النداء الواحد، وحتى 400 ألف محرف في الرسالة الواحدة، وحتى 32 ألف توكن في max_tokens.
شكل الرد
{
"id": "req_9f4d1c8e2a7b5306d4e1f2a3",
"object": "chat.completion",
"created": 1769040000,
"model": "vorix-pro",
"served_by": "vorix-pro",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "- First point\n- Second point" },
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 512,
"completion_tokens": 128,
"total_tokens": 640,
"cost": "$0.001664",
"cost_micros": 1664,
"estimated": false
}
}حقل served_by يخبرك بالمستوى الذي خدم طلبك فعلًا — يهمّ خاصةً مع vfm-1 الموجَّه، لأنه المستوى الذي حُوسبت به.
حقل usage
cost نصّ للعرض، وcost_micros عدد صحيح للحساب والتخزين. وestimated يقول الحقيقة: true تعني أن عدّاد التوكنات تقديري لا مأخوذ من عدّادٍ دقيق.
أمثلة كاملة
const response = await fetch("https://<host>/v1/chat/completions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.VORIX_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "vorix-pro",
messages: [
{ role: "system", content: "You answer in short bullet points." },
{ role: "user", content: "Summarise the attached report." },
],
temperature: 0.3,
max_tokens: 800,
}),
})
if (!response.ok) {
const { error } = await response.json()
throw new Error(`${error.code}: ${error.message}`)
}
const data = await response.json()import os
import requests
response = requests.post(
"https://<host>/v1/chat/completions",
headers={"Authorization": f"Bearer {os.environ['VORIX_API_KEY']}"},
json={
"model": "vorix-pro",
"messages": [
{"role": "system", "content": "You answer in short bullet points."},
{"role": "user", "content": "Summarise the attached report."},
],
"temperature": 0.3,
"max_tokens": 800,
},
timeout=120,
)
if response.status_code != 200:
error = response.json()["error"]
raise RuntimeError(f"{error['code']}: {error['message']}")
data = response.json()قائمة النماذج المتاحة
نقطة GET /v1/models تعيد كل النماذج المعلنة بأسمائها وقدراتها وأسعارها — اقرأها بدل كتابة قائمة ثابتة في تطبيقك.
curl https://<host>/v1/models \
-H "Authorization: Bearer vx_live_..."{
"object": "list",
"data": [
{
"id": "vorix-pro",
"object": "model",
"owned_by": "vorix",
"display_name": "VORIX Pro",
"description": "Balanced capability and cost — the default for most applications.",
"context_window": 128000,
"speed": "balanced",
"capabilities": ["text", "vision", "tools", "files"],
"pricing": {
"input_per_million_tokens": "$2.50",
"output_per_million_tokens": "$7.50",
"mode": "fixed"
}
}
]
}سطر الهوية — شفافية كاملة
تضيف المنصّة سطر تعليمات نظام واحدًا في بداية رسائلك، يخبر النموذج أنه مساعد VORIX وألّا يخوض في تفاصيل بنيته الداخلية. هذا السطر الوحيد هو كل ما نضيفه — رسائلك بعده تصل كما كتبتها حرفًا بحرف، بلا حقنٍ خفيّ يغيّر إخراجك أو يكسر تنسيقًا تعتمد عليه. نوثّقه هنا لأن ما يُضاف لطلبك يجب أن تعرفه.
السطر يُحتسب ضمن توكنات الدخل (بضع عشرات من التوكنات).