الموارد · Output Contracts

عقود مخرجات موحدة

مواصفة عقد استجابة إنتاجي يحافظ على ثبات المخرجات عبر مزودي النص والصوت والصورة والفيديو.

عقد الاستجابة القياسي

{
  "success": true,
  "content": "Primary human-readable output",
  "provider": "openai",
  "usage": {
    "input_tokens": 120,
    "output_tokens": 64
  },
  "metadata": {
    "model": "gpt-x",
    "latency_ms": 540,
    "trace_id": "trc_123"
  },
  "images": [],
  "files": [],
  "videos": []
}

مبادئ التصميم

  • Envelope واحد لكل الوسائط والمزودين.
  • أسماء الحقول ثابتة عبر إصدارات التشغيل.
  • تفاصيل المزود توضع داخل metadata بدون تغيير شكل الاستجابة الأساسي.
  • في حالة عدم وجود مخرجات وسيط، تُعاد مصفوفات فارغة بدل تغيير الشكل.
  • حقل success إلزامي لمعالجة عميل حتمية.

مرجع الحقول

  • success: نتيجة العملية بشكل boolean.
  • content: المخرج النصي الأساسي القابل للقراءة.
  • provider: معرف المزود بصيغة موحدة.
  • usage: كائن محاسبة موحد.
  • metadata: معلومات تشخيص وسياق التنفيذ.
  • images/files/videos: مصفوفات مخرجات الوسائط.
  • error: كائن خطأ منظم عندما success=false.

أمثلة متعددة المزودين

استجابة موحدة بأسلوب OpenAI

{
  "success": true,
  "content": "Generated response",
  "provider": "openai",
  "usage": { "input_tokens": 90, "output_tokens": 52 },
  "metadata": { "latency_ms": 480 },
  "images": [],
  "files": [],
  "videos": []
}

استجابة موحدة بأسلوب Replicate

{
  "success": true,
  "content": "Image generation completed",
  "provider": "replicate",
  "usage": { "input_tokens": 0, "output_tokens": 0 },
  "metadata": { "duration_ms": 2300 },
  "images": [{ "url": "https://..." }],
  "files": [],
  "videos": []
}

قواعد توافق العميل

  • منطق العرض في الواجهة يجب أن يعتمد على شكل Envelope لا على تفاصيل المزود.
  • العميل يجب أن يتحمل مفاتيح metadata غير المعروفة لضمان التوافق المستقبلي.
  • المصفوفات الفارغة مخرجات صحيحة للوسائط غير المنطبقة.
  • التحليل يجب أن يعتمد على فحص الحقول الصريحة بدل التفرع حسب المزود.

عقد الأخطاء

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid request payload",
    "details": {}
  },
  "provider": "system",
  "metadata": {
    "trace_id": "trc_123"
  }
}
  • عقد الخطأ يجب أن يحتوي code قابل للآلة و message مفهومة للبشر.
  • يجب تمرير trace identifiers لأغراض التشخيص.
  • استجابات success=false لا يجب أن تعيد استخدام حقول النجاح فقط.
  • حالة HTTP وكود الخطأ المنظم يجب أن يظلا متسقين.