وضع JSON ومخرجات استدعاء الأدوات
استخدم response_format={'type':'json_object'} أو استدعاء أداة واحدًا لفرض مخرجات قابلة للتحليل آليًا.
وضع JSON ومخرجات استدعاء الأدوات درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.
الحاجة إلى البنية
النص الحر الناتج من LLM لا يلائم التعليمات البرمجية. تحتاج الوكلاء في الإنتاج إلى مخرجات قابلة للتحليل: JSON أو XML أو معاملات الدوال — وليس أبدًا «الإجابة هي...»
وضع JSON (OpenAI)
أخبر النموذج «أعد JSON دائمًا»:
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': 'Return a JSON object with name and age.'},
{'role': 'user', 'content': 'Alice, 30 years old.'}
],
response_format={'type': 'json_object'}
)
import json
data = json.loads(response.choices[0].message.content)حدود وضع JSON
يضمن وضع JSON صحة JSON فقط — ولا يضمن بنيتك. فقد يعيد النموذج {} أو {"foo": "bar"}. تحقّق دائمًا من البنية أيضًا.
Structured Outputs (الوضع الصارم)
يضمن OpenAI Structured Outputs أن يطابق الرد مخطط JSON:
schema = {
'name': 'person',
'schema': {
'type': 'object',
'properties': {
'name': {'type': 'string'},
'age': {'type': 'integer'}
},
'required': ['name', 'age'],
'additionalProperties': False
},
'strict': True
}
response = client.chat.completions.create(
model='gpt-4o-2024-08-06',
messages=...,
response_format={'type': 'json_schema', 'json_schema': schema}
)آلية عمل الوضع الصارم
يقيّد الوضع الصارم وحدة فك الترميز بحيث لا يستطيع النموذج حرفيًا إنتاج رمز غير صالح. ويطابق الناتج المخطط بنسبة 100%.
استدعاءات الأدوات كمخرجات مهيكلة
يمكنكم فرض استدعاء أداة محددة لاستخراج البيانات المهيكلة:
tools = [{'type': 'function', 'function': {
'name': 'submit_person',
'parameters': {
'type': 'object',
'properties': {'name': {'type': 'string'}, 'age': {'type': 'integer'}},
'required': ['name', 'age']
}
}}]
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=...,
tools=tools,
tool_choice={'type': 'function', 'function': {'name': 'submit_person'}}
)
args = json.loads(response.choices[0].message.tool_calls[0].function.arguments)استخدام أدوات Anthropic كمخرجات
تستخدم Anthropic النمط نفسه مع tool_choice="tool":
tool_choice = {'type': 'tool', 'name': 'submit_person'}
print(tool_choice)
JSON عبر الملء المسبق (Anthropic)
بالنسبة إلى Claude من دون أدوات، املؤوا دور المساعد مسبقًا بالرمز {
messages = [
{'role': 'user', 'content': 'Give me JSON for Alice, 30.'},
{'role': 'assistant', 'content': '{'}
]
# Output starts with { and likely produces valid JSON.
for m in messages:
print(f"{m['role']}: {m['content']}")
print("Output starts with { and likely produces valid JSON.")
Pydantic + الوضع الصارم
يوفر OpenAI Python SDK اختصارًا لاستخدام Pydantic:
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
response = client.beta.chat.completions.parse(
model='gpt-4o-2024-08-06',
messages=...,
response_format=Person
)
person = response.choices[0].message.parsed
# Pydantic instance, type-safeالأخطاء الشائعة
- استخدام وضع JSON من دون الوضع الصارم — يمكن للنموذج إرجاع بنية غير صحيحة
- نسيان
additionalProperties: falseفي الوضع الصارم - عدم إدراج الحقول المطلوبة في مصفوفة "required"
- الوضع الصارم متاح فقط في gpt-4o-2024-08-06 وما بعده
تكلفة المخرجات المهيكلة
يفرض الوضع الصارم تكلفة إضافية طفيفة بسبب فك الترميز المقيّد بالقواعد النحوية، لكنها تكاد لا تُذكر مقارنة بفائدة الجودة. استخدموه دائمًا عندما تكون البنية مهمة.
الدمج مع التحقق
حتى المخرجات الصارمة ينبغي التحقق منها باستخدام Pydantic بعد ذلك. هذا نهج دفاعي متعدد الطبقات يلتقط الحالات الطرفية، مثل الأعداد الصحيحة الخارجة عن النطاق.
ضمان الوضع الصارم
ما الذي يضمنه OpenAI Structured Outputs (الوضع الصارم)؟
مراجعة
يوفر وضع JSON بنية مرنة، بينما تضمن Structured Outputs البنى المحددة، وتحقق استدعاءات الأدوات التأثير نفسه، كما يتيح الملء المسبق في Anthropic ذلك مع Claude. احرصوا دائمًا على التحقق بعد ذلك.
الأسئلة الشائعة
هل درس «وضع JSON ومخرجات استدعاء الأدوات» مجاني؟
نعم — نص درس «وضع JSON ومخرجات استدعاء الأدوات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.
ماذا ستتعلم في «وضع JSON ومخرجات استدعاء الأدوات»؟
استخدم response_format={'type':'json_object'} أو استدعاء أداة واحدًا لفرض مخرجات قابلة للتحليل آليًا. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟
لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «وضع JSON ومخرجات استدعاء الأدوات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟
نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- وضع JSON ومخرجات استدعاء الأدوات
- التحقق من مخطط Pydantic
- حلقات إصلاح المخرجات المشوهة
- Instructor وOutlines لضمان البنية