0Pricing
AI Agents · درس

تعريف مخططات الأدوات (JSON Schema)

اكتب تعريفات JSON Schema لمعاملات الأدوات، مع الأنواع والأوصاف والقيم المعدّدة والحقول المطلوبة.

تعريف مخططات الأدوات (JSON Schema) درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.

مخططات الأدوات هي JSON Schema

يستخدم OpenAI وAnthropic ومعظم المزودين الآخرين JSON Schema لمعلمات الأدوات.

إذا سبق لكم استخدام OpenAPI / Swagger، فأنتم تعرفون 90% من هذا الموضوع بالفعل.

الحقول الثلاثة المطلوبة

يحتوي كل تعريف أداة على:

  1. name — معرّف فريد (snake_case)
  2. description — ما الذي تفعله الأداة ومتى تُستخدم
  3. parameters — مخطط JSON للمدخلات

مخطط مبسّط

كائن يحتوي على حقل سلسلة نصية مطلوب واحد:

schema = {
    'name': 'search_orders',
    'description': 'Find orders by customer email',
    'parameters': {
        'type': 'object',
        'properties': {
            'email': {
                'type': 'string',
                'description': 'Customer email address'
            }
        },
        'required': ['email']
    }
}
import json
print(json.dumps(schema, indent=2))

أنواع JSON Schema

  • string — نص
  • integer، number — أرقام
  • boolean — صواب/خطأ
  • array — قائمة (تحتاج أيضًا إلى items)
  • object — قاموس (يحتاج أيضًا إلى properties)

التعدادات للمجموعات المغلقة

استخدموا enum عندما يكون هناك عدد N من القيم المسموح بها بالضبط:

unit_param = {
    'unit': {
        'type': 'string',
        'enum': ['C', 'F'],
        'description': 'Temperature unit'
    }
}
# The model will only ever output C or F
print(unit_param)
print("Allowed values:", unit_param['unit']['enum'])

معلمات المصفوفات

بالنسبة إلى مدخلات القوائم، اضبطوا items:

tags_param = {
    'tags': {
        'type': 'array',
        'items': {'type': 'string'},
        'description': 'List of tags to filter by'
    }
}
print(tags_param)

الكائنات المتداخلة

يمكنكم تداخل الكائنات — لكن حافظوا على ضحالة المخططات (مستويان إلى ثلاثة كحد أقصى) لضمان موثوقية النموذج:

filter_param = {
    'filter': {
        'type': 'object',
        'properties': {
            'min_price': {'type': 'number'},
            'in_stock': {'type': 'boolean'}
        }
    }
}
print(filter_param)

حقول الوصف مهمة للغاية

يختار النموذج الأدوات ويملأ الوسيطات بناءً على description. تعاملوا مع الأوصاف كما تتعاملون مع توثيق API:

# Bad
bad = {'description': 'gets data'}

# Good
good = {'description': 'Fetch the most recent 50 orders for the given customer email. Returns order_id, status, total. Use this when the user asks about their order history or order status.'}
print("Bad description:", bad['description'])
print("Good description:", good['description'])

مصفوفة required

حدّدوا الحقول المطلوبة صراحةً. سيملأها النموذج دائمًا؛ أما الحقول الاختيارية فلن يملأها إلا عند ارتباطها بالسياق:

tool_params = {
    'parameters': {
        'properties': {
            'city': {'type': 'string'},
            'unit': {'type': 'string', 'enum': ['C', 'F']}
        },
        'required': ['city']
    }
}
print(tool_params)
print("Required fields:", tool_params['parameters']['required'])

Pydantic -> JSON Schema

يمكنكم إنشاء المخططات تلقائيًا من نماذج Pydantic:

from pydantic import BaseModel, Field

class SearchArgs(BaseModel):
    email: str = Field(description='Customer email')
    limit: int = Field(50, description='Max orders to return')

schema = SearchArgs.model_json_schema()

الوضع الصارم (Structured Outputs في OpenAI)

تضمن إضافة strict: true وadditionalProperties: false تطابق مخرجات النموذج مع المخطط تمامًا:

tools = [{
    'type': 'function',
    'function': {
        'name': 'get_weather',
        'strict': True,
        'parameters': {
            'type': 'object',
            'properties': {'city': {'type': 'string'}},
            'required': ['city'],
            'additionalProperties': False
        }
    }
}]
import json
print(json.dumps(tools, indent=2))

أهمية الوصف

لماذا يُعدّ description الخاص بالأداة مهمًا إلى هذه الدرجة؟

مراجعة

المخططات هي التي توجّه النموذج. الأوصاف الجيدة، والتعدادات للمجموعات المغلقة، ومصفوفات required، والوضع الصارم هي أدواتكم لتحسين الموثوقية.

الأسئلة الشائعة

هل درس «تعريف مخططات الأدوات (JSON Schema)» مجاني؟

نعم — نص درس «تعريف مخططات الأدوات (JSON Schema)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.

ماذا ستتعلم في «تعريف مخططات الأدوات (JSON Schema)»؟

اكتب تعريفات JSON Schema لمعاملات الأدوات، مع الأنواع والأوصاف والقيم المعدّدة والحقول المطلوبة. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟

لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «تعريف مخططات الأدوات (JSON Schema)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟

نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. كيف يعمل استدعاء الدوال
  2. تعريف مخططات الأدوات (JSON Schema)
  3. اختيار الأدوات أثناء التشغيل
  4. إرجاع النتائج إلى النموذج
← العودة إلى AI Agents