تقوم واجهة برمجة تطبيقات قرارات OpenAI وJev من TypeSafe بنفس المهمة: إرسال مدخلات ومجموعة من الأسئلة، والحصول على إجابات مُحددة النوع مع احتمالات بدلاً من نص للتحليل، والدفع مقابل رموز الإدخال فقط.
تكلّف Decisions 0.10 دولار لكل مليون رمز إدخال، وهي في المرحلة التجريبية العامة، وتقبل النصوص والصور، وتعمل على GPT-6 Luna. أما Jev فتكلّف 0.042 دولار لكل مليون رمز إدخال، وهي متاحة في الوصول المبكر عبر حساب لوحة تحكم TypeSafe، وتدعم النصوص فقط، وتحد كل طلب بـ 64 ألف رمز.
للبدء بالأساسيات، ابدأ بـ ما هي واجهة برمجة تطبيقات Decisions وكيفية استخدام Jev. تقارن هذه المقالة بينهما صفًا بصف، ثم تربطهما معًا في مشروع Apidog واحد خلف قاعدة ثقة واحدة.
مقارنة جنبًا إلى جنب
كل خلية مأخوذة من صفحات البائعين في المراجع.
| OpenAI Decisions API | TypeSafe Jev | |
|---|---|---|
| نقطة النهاية | POST /v1/decisions |
POST /v1/systemone |
| النموذج | gpt-6-luna فقط |
jev-1.13.0 (jev-latest) |
| الحالة | إصدار تجريبي عام، توفر عام "في الأسابيع القادمة" | وصول مبكر (منشور الإطلاق)، الوصول المباشر مقيد بحساب لوحة تحكم |
| الإدخال | نص + صور (URL بيانات base64؛ المرجع يدرج أيضًا عناوين URL العامة) | نص فقط، 64 ألف رمز لكل طلب |
| أنواع الأسئلة | predicate / choice (2 إلى 255 خيارًا) / score |
noul / choice / score |
| شكل الأسئلة | مصفوفة مع name اختياري |
كائن مفهرس بواسطة id |
| حقول الإخراج | probability؛ choice أو score + probabilities + confidence؛ refusal |
noul؛ choice أو score + confidence + probabilities |
| السعر | 0.10 دولار لكل مليون رمز إدخال، لا توجد رسوم على الإخراج | 0.042 دولار لكل مليون رمز إدخال، لا توجد رسوم على الإخراج |
| التخزين المؤقت | لا يوجد حتى الآن (منتدى OpenAI) | لم يتم النشر |
| حدود المعدل | صفحة حدود لكل مؤسسة | 100 ألف معاملة في الثانية / 80 طلبًا في الثانية، ديناميكي |
| ادعاء السرعة | "أسرع بنحو 10 مرات من واجهة برمجة تطبيقات Responses" (OpenAI) | 70 إلى 500 مللي ثانية من البداية للنهاية (TypeSafe) |
| البيانات | احتفاظ صفر بالبيانات (ZDR) + HIPAA للعملاء المؤهلين؛ إقامة في الولايات المتحدة/الاتحاد الأوروبي | احتفاظ صفر بالبيانات (ZDR) للمؤسسات؛ لا يتم التدريب على الطلبات |
Decisions هي نقطة نهاية وليست نموذجًا؛ تعمل على GPT-6 Luna. أما Jev فهو "نموذج النظام الأول" من TypeSafe، تم تدريبه باستخدام RLCD لتقديم قرارات معايرة، وليس نموذج لغة كبير عام.
نفس طلب توجيه التذاكر في كلا الشكلين
تصل تذكرة دعم؛ وتريد قسمًا بالإضافة إلى نعم/لا حول ما إذا كان العميل يريد استردادًا. أولاً Decisions: الأسئلة هي مصفوفة، كل منها يحتوي على type وinstructions وname اختياري تعيده واجهة برمجة التطبيقات.
curl https://api.openai.com/v1/decisions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-luna",
"input": "لقد تم محاسبتي مرتين على طلبي.",
"questions": [
{
"type": "choice",
"name": "department",
"instructions": "أي فريق يجب أن يتعامل مع هذه التذكرة؟",
"choices": [
{"value": "billing", "description": "الرسوم، المبالغ المستردة"},
{"value": "technical", "description": "الأخطاء، الأعطال"},
{"value": "other"}
]
},
{
"type": "predicate",
"name": "wants_refund",
"instructions": "هل يطلب العميل استرداد أموال؟"
}
]
}'
الآن Jev: حقل الإدخال هو state، والأسئلة هي كائن مفتاحها بواسطة معرفات تختارها، ويأخذ choice خريطة criteria من الخيارات إلى الوصف، ونوع نعم/لا هو noul.
curl https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-latest",
"state": "لقد تم محاسبتي مرتين على طلبي.",
"questions": {
"department": {
"type": "choice",
"instructions": "أي فريق يجب أن يتعامل مع هذه التذكرة؟",
"criteria": {
"billing": "الرسوم، المبالغ المستردة",
"technical": "الأخطاء، الأعطال",
"other": "أي شيء آخر"
}
},
"wants_refund": {
"type": "noul",
"instructions": "هل يطلب العميل استرداد أموال؟"
}
}
}'
ماذا يعود
تعيد Decisions كلاً من model وanswers وusage. تصل الإجابات بالترتيب المطلوب، كل منها باسمه name؛ احتمالات كل خيار هي مصفوفة من الكائنات. لاحظ output_tokens: 0.
{
"model": "gpt-6-luna",
"answers": [
{
"type": "choice",
"name": "department",
"choice": "billing",
"probabilities": [
{"value": "billing", "probability": 0.95},
{"value": "technical", "probability": 0.02},
{"value": "other", "probability": 0.03}
],
"confidence": 0.93
},
{"type": "predicate", "name": "wants_refund", "probability": 0.95}
],
"usage": {
"input_tokens": 42,
"input_tokens_details": {"cached_tokens": 0, "cache_write_tokens": 0},
"output_tokens": 0,
"output_tokens_details": {"reasoning_tokens": 0},
"total_tokens": 42
}
}
تعيد Jev كلاً من model (المعرف ذو الإصدار)، وكائن answers مفتاحها بواسطة معرفات أسئلتك، وusage مع input_tokens وoutput_tokens. تقرأ answers.department.choice، وconfidence الخاصة بها، وprobabilities المفتاحها باسم الخيار، بالإضافة إلى answers.wants_refund.noul. في جانب OpenAI فقط، يمكن أن تظهر إجابة refusal لكل سؤال بينما لا تزال الأسئلة الأخرى تحصل على إجابات.
السعر لكل مليون، وتكلفة مليون تذكرة
صياغة OpenAI: مع gpt-6-luna، تبلغ تكلفة الإدخال 0.10 دولار لكل مليون رمز، بدون رسوم قراءة ذاكرة التخزين المؤقت أو كتابتها أو رسوم رموز الإخراج. تدرج TypeSafe 0.042 دولار لكل مليون رمز إدخال وإخراج مجاني.
خذ تذكرة بحجم 500 رمز مع السؤالين أعلاه:
- Decisions: 500 / 1,000,000 × 0.10 دولار = 0.00005 دولار لكل طلب. مليون تذكرة = 50 دولارًا.
- Jev: 500 / 1,000,000 × 0.042 دولار = 0.000021 دولار لكل طلب. مليون تذكرة = 21 دولارًا.
تنطبق مضاعِفان على جانب OpenAI: الإدخال ذو السياق الطويل (أكثر من 272 ألف رمز) هو 2x، لذا 0.20 دولار لكل مليون، مشتق من صفحة الأسعار، وتضيف المعالجة الإقليمية 10%. لا توجد مستويات Batch أو Flex أو Fast موثقة لـ /v1/decisions، ووفقًا لمنتدى OpenAI لا يوجد تخزين مؤقت للمطالبات حتى الآن، على الرغم من أن usage يحمل حقلي cached_tokens وcache_write_tokens. لا تنشر Jev أي شيء عن التخزين المؤقت.
المدخلات: الصور من جانب، والنص من الجانب الآخر
تأخذ Decisions سلسلة نصية أو مصفوفة من رسائل المستخدم تمزج أجزاء input_text وinput_image. يقول الدليل أن الصور يجب أن تكون عناوين URL لبيانات base64 مضمنة؛ وتدرج مرجع واجهة برمجة التطبيقات أيضًا عناوين URL عامة لـ HTTP(S) وما يصل إلى 128 صورة لكل طلب، لذا تعامل مع base64 كمسار آمن واختبر عناوين URL المستضافة قبل الاعتماد عليها. لا يتم دعم file_id، أو الملفات، أو الصوت.
Jev يدعم النصوص فقط: سلسلة نصية، أو كائن JSON، أو مصفوفة من النصوص، بدون إدخال صور أو صوت أو فيديو وفقًا لصفحة نماذج TypeSafe. في منتدى OpenAI، أوضح sam.saffron ببساطة: فهم الصور هو شيء لا يدعمه Jev بعد. إذا كان قرارك يعتمد على صورة، يمكن لـ Decisions فقط النظر إليها.
السياق وحدود المعدل
تنشر Jev حدًا يبلغ 64 ألف رمز لكل طلب، منها 32 ألف لـ state بالإضافة إلى أطول سؤال، وتقول إنها تستوعب الحالة مرة واحدة وتقيّم كل سؤال بالتوازي. تدرج صفحة النماذج الخاصة بها 100 ألف رمز في الثانية و80 طلبًا في الثانية، تتكيف ديناميكيًا، مع رمز 429 عند تجاوز الحد. تغيرت هذه الأرقام منذ سبتمبر، لذا اقرأ الصفحة المباشرة.
لا تنشر OpenAI رقم نافذة السياق ولا حدًا للمعدل خاصًا بـ Decisions؛ نافذة Luna البالغة 1,050,000 رمز هي رقم صفحة نموذج، وليست رقم نقطة نهاية. تحقق من الإعدادات > المؤسسة > الحدود (دليل حدود المعدل)؛ يغطي دليل حدود المعدل الخاص بنا التعامل مع رمز 429 على كلا الجانبين.
الحالة والوصول
دخلت Decisions المرحلة التجريبية العامة في 2026-10-06، ومتاحة لجميع المطورين وفقًا لـ الإعلان؛ يقول الدليل إن OpenAI تتوقع التوفر العام "في الأسابيع القادمة"، بدون تاريخ محدد.
Jev في مرحلة الوصول المبكر وفقًا لـ منشور إطلاق TypeSafe، الذي يذكر قائمة انتظار، ويتم الوصول المباشر إلى api.typesafe.ai خلف حساب لوحة تحكم TypeSafe؛ يوضح كيفية الوصول إلى Jev المسارات ويغطي مفتاح API الخاص بـ Jev إنشاء المفاتيح. المسار الثاني هو Vercel AI Gateway، حيث Jev هو typesafe-ai/jev، ويتم استدعاؤه عبر experimental_evaluate في AI SDK (الإصدار 7.0.105 أو أحدث)، وفقًا لـ سجل تغييرات Vercel؛ تقول وثائق تقييم Vercel إنه لا يتم كشفه على نقطة النهاية المتوافقة مع OpenAI الخاصة بالبوابة، وهناك نوع نعم/لا هو boolean، ويعيد احتمال True.
ضوابط البيانات
تقول OpenAI إن Decisions تدعم الاحتفاظ بالبيانات صفر (Zero Data Retention) واستخدام HIPAA للعملاء المؤهلين، مع توطين البيانات ومعالجة إقليمية في الولايات المتحدة وأوروبا (المنطقة الاقتصادية الأوروبية بالإضافة إلى سويسرا)؛ تضيف صفحة ضوابط البيانات أن سجلات مراقبة الانتهاكات لـ /v1/decisions تُحتفظ بها لمدة تصل إلى 30 يومًا افتراضيًا. تقول TypeSafe إن Jev لا يتم تدريبه على طلبات العملاء أو استجاباتهم، ويوفر ZDR لعملاء المؤسسات، ويشغل نفس الأوزان لكل حساب.
لا ينشر أي من البائعين أرقامًا دقيقة أو معايرة؛ يخبرك دليل OpenAI بضبط العتبات من أمثلتك المصنفة، وهذا ينطبق على Jev أيضًا.
السرعة، ثم أيهما تختار
تقول OpenAI إن Decisions أسرع بنحو 10 مرات من واجهة برمجة تطبيقات Responses ولا تنشر رقمًا مطلقًا للكمون؛ أبلغ أحد المطورين في منتدى OpenAI عن قرارات إدخال الصور في حوالي 0.8 ثانية على اتصال بطيء. تقتبس TypeSafe من 70 مللي ثانية إلى 500 مللي ثانية من البداية للنهاية لـ Jev. هذه ليست قياسات قابلة للمقارنة، لذا قم بتوقيت كليهما على تذاكرك الخاصة.
اختر Decisions عندما تتضمن المدخلات صورًا، أو عندما تكون بالفعل على OpenAI وتريد مفتاحًا واحدًا وفاتورة واحدة، أو عندما تحتاج إلى تغطية HIPAA بموجب اتفاقية شراكة أعمال (BAA) مع OpenAI. اختر Jev عندما يكون الإدخال نصًا، أو عندما يكون سعر الرمز الواحد الأقل مهمًا لحجم عملك، أو عندما تكون بالفعل على Vercel AI Gateway.
تشغيل كليهما لبضعة أسابيع أمر معقول: قم بتقييم كل منهما مقابل نفس المجموعة المصنفة، واحتفظ بمنحنى العتبة الأفضل، واحتفظ بالآخر كحل بديل. إذا كان السؤال الحقيقي هو Decisions مقابل تسمية المخرجات المنظمة (Structured Outputs)، فراجع Decisions مقابل Responses؛ إذا لم يتناسب أي من البائعين مع سياسة بياناتك، توجد بدائل Jev مفتوحة المصدر.
اختبار كليهما في مشروع Apidog واحد
بيئتان. أنشئ بيئة OpenAI مع OPENAI_API_KEY وبيئة TypeSafe مع TYPESAFE_API_KEY، كل منها بقيمتها في الحقل المحلي بحيث لا تتم مزامنتها مع الفريق أبدًا (البيئات والمتغيرات السرية تغطي نطاقها).
طلبان محفوظان. POST https://api.openai.com/v1/decisions مع Bearer {{OPENAI_API_KEY}} والجسم الأول أعلاه؛ POST https://api.typesafe.ai/v1/systemone مع Bearer {{TYPESAFE_API_KEY}} والثاني.
قاعدة تأكيد واحدة، مطبقة مرتين. القاعدة التجارية: الثقة فوق 0.8 توجه التذكرة تلقائيًا، وأي شيء أقل يذهب إلى قائمة انتظار المراجعة. في طلب Decisions، قم بالتأكيد على أن الحالة 200، وأن $.answers[0].choice يساوي billing، وأن $.answers[0].confidence أكبر من 0.8، وأن $.usage.output_tokens يساوي 0. في طلب Jev، قم بالتأكيد على أن $.answers.department.choice يساوي billing وأن $.answers.department.confidence أكبر من 0.8.
سيناريو مدفوع بالبيانات. ضع عشرين تذكرة مصنفة في ملف CSV بالقسم المتوقع، وقم بتشغيل كلا الطلبين عليها كسيناريو اختبار، وشاهد أي واجهة برمجة تطبيقات تنخفض ثقتها إلى أقل من 0.8 في الصفوف الغامضة. هكذا تختار العتبات، وهذا يكتشف تغيير النموذج قبل أن يتم توجيه التذاكر بشكل خاطئ.
محاكاة كلا الشكلين. احفظ استجابة Decisions واستجابة Jev كنماذج وهمية (mocks) حتى يمكن بناء الواجهة الأمامية (frontend) مقابل مصفوفة answers وكائن answers مستقر؛ محاكاة الاستجابات الشرطية تعيد حالة الثقة المنخفضة عند الطلب لممارسة فرع قائمة انتظار المراجعة.
تشغيله في CI. قم بتشغيل السيناريو باستخدام Apidog CLI (apidog run مع cli أو junit reporter) في كل عملية نشر، بحيث يؤدي تغيير حقل في التوفر العام (GA) أو تحديث jev-latest إلى فشل البناء، وليس قائمة انتظار الدعم. قم بتنزيل Apidog لإعداد ذلك.
الأسئلة الشائعة
هل Jev نموذج لغة كبير (LLM) مثل GPT-6 Luna؟ لا. تصف TypeSafe Jev بأنه نموذج System One تم تدريبه باستخدام RLCD لتقديم قرارات معايرة؛ إنه لا يولد نصًا. Decisions هي نقطة نهاية على نموذج Luna للأغراض العامة.
هل أنشأت OpenAI واجهة برمجة تطبيقات Decisions استجابةً لـ Jev؟ لا تذكر صفحات OpenAI ذلك، ونحن لا ندعي ذلك. كلاهما يقدم نفس الفكرة: إجابات مُحددة النوع مع احتمالات، يتم تحصيل الرسوم على الإدخال.
أيهما أرخص؟ Jev، بسعر 0.042 دولار لكل مليون رمز إدخال مقابل 0.10 دولار؛ لمليون تذكرة بحجم 500 رمز، 21 دولارًا مقابل 50 دولارًا.
هل يمكن لأي منهما إعادة مخطط JSON الخاص بي؟ لا. كلاهما يعيد أشكال إجابات ثابتة؛ للحقول المستخرجة أو الشرح المكتوب، استخدم المخرجات المنظمة (Structured Outputs) في واجهة برمجة تطبيقات Responses.
الخطوة التالية
أرسل طلبي curl أعلاه بنفس التذكرة، واحفظ كليهما في Apidog، وأضف تأكيد الثقة 0.8 لكل منهما. ثم استبدل بعشرين من تذاكرك الخاصة وشاهد أي واجهة برمجة تطبيقات تتجاوز عتبتك بشكل متكرر. يحتوي دليل كيفية الاستخدام على إصدارات Python وJavaScript.
