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

## المقدمة

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

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

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

```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 لدينا [هنا](https://skydeck-public-assets.s3.amazonaws.com/sample_tool.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 بأكمله


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.skydeck.ai/ar/developers/develop-your-own-tools/json-format-for-llm-tools.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
