تنسيق JSON لأدوات LLM

طريقة محمولة لمشاركة الأدوات

المقدمة

مشاركة أداة بطريقة يمكن إضافتها بسرعة إلى برنامج أو محرر الأدوات ستتحسن إلى حد كبير مع وجود طريقة قياسية لتمثيل الأداة وكيفية استخدامها. نرغب في تمكين الميزات مثل التالي:

  • رمز لتمثيل الأداة بصريا

  • بيانات تعريفية للرمز:

    • اسم للأداة

    • وصف للأداة

    • ملاحظات الاستخدام للأداة

  • المعاملات النائبة المدرجة في سلسلة الأداة

  • الإخراج المتوقع

  • الإصدارات و الطوابع الزمنية.

مواصفات تنسيق JSON

{
  "version": "string أو integer",
  "model_prompt": "string تحتوي على {{variable_name}} كعناصر نائبة",
  "metadata": {
    "prompt_name": "string",
    "description": "string",
    "usage_notes": "string",
    "model_version": ["string", "string", …],
    "creator": {
      "name": "string",
      "email": "string",
      "organization": "string"
    },
    "parameters": {
      "temperature": "float",
      "max_tokens": "integer",
      "top_p": "float",
      "frequency_penalty": "float",
      "presence_penalty": "float"
    },
    "variables": [
      {
        "name": "اسم المتغير 1",
        "type": "text",
        "description": "string",
        "default": "string",
      },
      {
        "name": "اسم المتغير 2",
        "type": "single-select",
        "description": "string",
        "default": "value1",
        "allowed_values": ["value1", "value2", "value3"]
      },
      {
        "name": "اسم المتغير 3",
        "type": "multi-select",
        "description": "string",
        "default": ["value1", "value2"]
        "allowed_values": ["value1", "value2", "value3"]
      },
      ...
    ],
    "expected_output": {
      "type": "string (مثلاً، text, code, limited)",
      "format": "string (اختياري، مثلاً، JSON, XML, CSV)",
      "language": "string (اختياري، مثلاً، Python, JavaScript)",
      "allowed_values": ["string1", "string2", ...] (اختياري)
    },
    "avatar_type": "string (مثلاً، url, base64)",
    "avatar": "string (URL أو صورة مشفّرة بbase64)، يُفضل أن تكون بحجم 256x256 بكسل",
    "timestamp": "string بتنسيق (ISO 8601)"
  }
}

يمكنك تنزيل نموذج JSON لدينا هنا.

وصف الحقول

  • model_prompt: نص يحتوي على المطلب الأولي لنموذج GPT.

  • metadata: كائن يحتوي على معلومات إضافية عن المطلب الأولي لنموذج GPT، بما في ذلك الحقول الفرعية التالية:

    • model_version: نص يشير إلى إصدار نموذج GPT المستخدم.

    • creator: كائن يحتوي على معلومات حول منشئ المطلب الأولي لنموذج GPT، مع الحقول الفرعية التالية:

      • name: نص يمثل اسم الخالق.

      • email: نص يمثل البريد الإلكتروني للمنشئ.

      • organization: نص يمثل المنظمة التي ينتمي إليها المنشئ.

    • parameters: كائن يحتوي على معلومات حول معاملات نموذج GPT، مع الحقول الفرعية التالية:

      • temperature: عدد عشري يشير إلى الحرارة المستخدمة للتحكم في عشوائية الخرج.

      • max_tokens: رقم صحيح يشير إلى الحد الأقصى لعدد الرموز في الاستجابة المُنشأة.

      • top_p: عدد عشري يمثل عتبة احتمال بروب النواة.

      • frequency_penalty: عدد عشري يمثل العقوبة المطبقة على الرموز بناءً على تواترها في المجموعة المعطاة.

      • presence_penalty: عدد عشري يمثل العقوبة المطبقة على الرموز الجديدة بناءً على وجودها في المطلب الأولي.

    • timestamp: نص بتنسيق ISO 8601 يمثل التاريخ والوقت عندما تم إنشاء المطلب الأولي لنموذج GPT أو تعديله لآخر مرة.

    • expected_output (اختياري): كائن يحتوي على حقول متعلقة بالمخرج المتوقع من model_prompt، بما في ذلك الحقول الفرعية التالية:

      • type: نص يشير إلى نوع الخرج المتوقع من model_prompt.

      • format (اختياري): نص يمثل تنسيق الخرج المتوقع إذا كان قابلاً للتطبيق.

      • language (اختياري): نص يمثل لغة البرمجة للخرج المتوقع إذا كان النوع هو code.

      • allowed_values (اختياري): مصفوفة من النصوص تحتوي على قائمة بالقيم المخرجة المسموح بها إذا كان النوع هو limited.

    • variables (اختياري): قائمة تحتوي على متغيرات قد تُدرج في النص model_prompt بطراقة f-string. كل متغير يحتوي على الحقول الفرعية التالية:

      • name: نص يمثل اسم المتغير.

      • type: نص يظهر نوع المتغير. القيم الممكنة الحالية لـ type هي text للمتغير الافتراضي، و single-select أو multi-select لمتغيرات الاختيار.

      • description: نص يظهر وصف المتغير، بما في ذلك الاستخدامات والأمثلة.

      • default: قيمة تظهر القيمة الافتراضية للمتغير. هذه القيمة هي نص إذا كان type هو text أو single-select، ومصفوفة من النصوص لـ multi-select.

      • allowed_values: مصفوفة من النصوص تحتوي على قائمة القيم المسموح بها إذا كان نوع المتغير هو single-select أو multi-select

    • avatar (اختياري): كائن يحتوي على حقول مرتبطة بالصورة الرسومية التي تعمل كأفاتار أو رمز للمطلب الأولي، تتضمن الحقول الفرعية التالية:

      • avatar_type: نص يحدد نوع بيانات الأفاتار المدرجة.

      • avatar: نص يحتوي على عنوان URL يشير إلى الصورة إذا كان نوع الأفاتار هو url، أو نص يمثل الصورة المترمزة ضمن كود base64 إذا كان نوع الأفاتار هو base64.

    • prompt_name (اختياري): نص يمثل اسم المطلب الأولي.

    • description (اختياري): نص يوفر وصفاً موجزاً للأداة وغرضها.

    • usage_notes (اختياري): نص يحتوي على ملاحظات غير رسمية من المبدع حول الاستخدام أو أي اعتبارات معينة تتعلق بالأداة.

لتحديد تنسيق الإخراج المتوقع من model_prompt، يمكنك إضافة كائن expected_output ضمن كائن metadata. اعتمادًا على نوع الإخراج المتوقع، يمكنك تضمين الحقول الفرعية ذات الصلة في كائن expected_output.

لتضمين حقول للمتغيرات التي قد تدرج في سلسلة النص model_prompt بطريقتها الخاصة، يمكنك إضافة قائمة variables منفصلة ضمن كائن metadata.

لتضمين صورة رسومية تعمل كأفاتار أو رمز للمطلب الأولي، يمكنك إضافة حقل avatar ضمن كائن metadata.

تضمين الحقول expected_output، variables، avatar، prompt_name، description، و usage_notes ضمن كائن metadata يساعد على الحفاظ على جميع المعلومات السياقية حول الفورمات الأولي في مكان واحد، مما يجعل من الأسهل إدارته وفهمه.

يمكنك استخدام حقل version في أعلى مستوى لكائن JSON لتتبع صراحة إصدار ملف JSON بأكمله

Last updated