المخرجات المنظمة من نماذج الذكاء الاصطناعي: وضع JSON واستدعاء الدوال

نماذج اللغة الكبيرة تولّد نصوصاً. تطبيقك يحتاج هياكل بيانات. الفجوة بين هاتين الحقيقتين هي المكان الذي تعيش فيه أخطاء الإنتاج — JSON مشوّه، حقول مفقودة، أنواع خاطئة، وتنسيق غير متسق يكسر واجهتك في الساعة الثانية صباحاً.
في عام 2026، يقدم كل مزود ذكاء اصطناعي رئيسي إمكانيات مخرجات منظمة أصلية تضمن التوافق مع المخطط على مستوى الرمز. إذا كنت لا تزال تحلل استجابات النماذج باستخدام التعبيرات النمطية أو تأمل أن هندسة الأوامر ستصمد، فهذا الدليل سيريك الطريقة الصحيحة.
المستويات الثلاثة للتحكم في المخرجات
ليست كل طرق الحصول على بيانات منظمة من نماذج اللغة الكبيرة متساوية. فهم المقايضات يساعدك على اختيار الأداة المناسبة لحالتك.
المستوى الأول: هندسة الأوامر
الطريقة الأبسط — تطلب من النموذج إرجاع JSON في الأمر:
أرجع كائن JSON بالحقول: name (نص)، age (رقم)، skills (مصفوفة نصوص).
يعمل هذا بنسبة 80–95% من الوقت، لكن لا يقدم ضمانات للأنواع ويفشل بصمت. قد يرجع النموذج JSON صالحاً باسم حقل غير متوقع، أو يغلف JSON في أسوار كود Markdown. مقبول للنماذج الأولية، خطير للإنتاج.
المستوى الثاني: استدعاء الدوال (استخدام الأدوات)
يتيح لك استدعاء الدوال تعريف مخططات مكتوبة يستخدمها النموذج لتنظيم مخرجاته. يقوم النموذج بـ"استدعاء" دالة تعرّفها، ويرجع معاملات تتطابق مع مخططك:
const tools = [{
type: "function",
function: {
name: "extract_contact",
description: "استخراج معلومات الاتصال من النص",
parameters: {
type: "object",
properties: {
name: { type: "string" },
email: { type: "string", format: "email" },
company: { type: "string" }
},
required: ["name", "email"]
}
}
}];ترتفع الموثوقية إلى 95–99%. يعمل المخطط كتلميح قوي، لكن النموذج قد ينتج أحياناً قيماً لا تتطابق مع التنسيق المتوقع داخل الحقل.
المستوى الثالث: المخرجات المنظمة الأصلية
المعيار الذهبي. يستخدم فك التشفير المقيّد آلة حالات محدودة لحجب الرموز غير الصالحة وقت التوليد. بدلاً من الثقة بالتحقق اللاحق، لا يمكن للنموذج توقع سوى رموز صالحة وفق المخطط في كل خطوة.
import OpenAI from "openai";
import { z } from "zod";
import { zodResponseFormat } from "openai/helpers/zod";
const ContactSchema = z.object({
name: z.string(),
email: z.string().email(),
company: z.string().optional(),
role: z.enum(["developer", "designer", "manager", "other"]),
});
const client = new OpenAI();
const response = await client.beta.chat.completions.parse({
model: "gpt-4o",
messages: [
{ role: "user", content: "Extract contact: John Smith, john@acme.co, CTO at Acme Inc" }
],
response_format: zodResponseFormat(ContactSchema, "contact"),
});
const contact = response.choices[0].message.parsed;
// TypeScript يعرف: contact.name هو string، contact.role هو "developer" | "designer" | ...التوافق مع المخطط 100%. هذا هو المكان الذي يجب أن تكون فيه تطبيقات الإنتاج في 2026.
مقارنة المزودين: من يدعم ماذا
كل مزود رئيسي يتعامل مع المخرجات المنظمة بشكل مختلف:
OpenAI تقدم الدعم الأصلي الأكثر نضجاً. معامل response_format مع نوع json_schema يفرض توافقاً صارماً مع المخطط. حزم SDK الخاصة بها في Python وTypeScript تتكامل مباشرة مع Pydantic وZod.
Anthropic (Claude) تحقق المخرجات المنظمة من خلال استخدام الأدوات. تعرّف أداة بـ input_schema، ويرجع Claude معاملات منظمة:
import Anthropic from "@anthropic-ai/sdk";
import { zodTool } from "@anthropic-ai/sdk/helpers/zod";
import { z } from "zod";
const client = new Anthropic();
const ProductSchema = z.object({
name: z.string(),
price: z.number(),
currency: z.enum(["USD", "EUR", "TND"]),
inStock: z.boolean(),
});
const response = await client.messages.create({
model: "claude-sonnet-4-6-20260320",
max_tokens: 1024,
tools: [
zodTool({
name: "extract_product",
description: "استخراج تفاصيل المنتج من الوصف",
schema: ProductSchema,
}),
],
tool_choice: { type: "tool", name: "extract_product" },
messages: [
{ role: "user", content: "سماعات الرأس الجديدة تكلف 89.99 يورو ومتاحة حالياً" }
],
});Google Gemini يدعم المخرجات المنظمة الأصلية من خلال response_schema في تكوين API.
نمط شطيرة التحقق
حتى مع ضمان المخرجات المنظمة الأصلية لـ JSON صالح وأنواع صحيحة، تحتاج إلى التحقق من منطق الأعمال. نمط "شطيرة التحقق" يضع ثلاث طبقات:
import { z } from "zod";
// الطبقة 1: المخطط يحدد البنية
const OrderSchema = z.object({
productId: z.string().uuid(),
quantity: z.number().int().positive(),
unitPrice: z.number().positive(),
total: z.number().positive(),
});
// الطبقة 2: تحسين منطق الأعمال
const ValidatedOrder = OrderSchema.refine(
(order) => Math.abs(order.total - order.quantity * order.unitPrice) < 0.01,
{ message: "الإجمالي يجب أن يساوي الكمية × سعر الوحدة" }
);
// الطبقة 3: فحص على مستوى التطبيق
async function processOrder(raw: unknown) {
const order = ValidatedOrder.parse(raw);
const product = await db.products.find(order.productId);
if (!product) throw new Error("المنتج غير موجود");
if (order.quantity > product.stockCount) throw new Error("مخزون غير كافٍ");
return order;
}النموذج يضمن الشكل. Zod يتحقق من القيود. منطق تطبيقك يتحقق من الحالة الفعلية. لا تثق بطبقة واحدة وحدها.
متى تستخدم ماذا
الاختيار بين المخرجات المنظمة واستدعاء الدوال ووضع JSON يعتمد على حالة الاستخدام:
استخدم المخرجات المنظمة الأصلية عندما تحتاج لاستخراج بيانات من نص، أو توليد استجابات منظمة لواجهتك، أو بناء خطوط أنابيب بيانات.
استخدم استدعاء الدوال عندما يحتاج نموذجك للتفاعل مع أنظمة خارجية، أو الاختيار بين أدوات متعددة، أو العمل ضمن حلقة وكيل ذكي.
تجنب وضع JSON وحده. يضمن صيغة JSON صالحة لكن ليس التوافق مع المخطط.
أفضل ممارسات تصميم المخططات
حافظ على تركيز المخططات. أدرج فقط الحقول التي تستخدمها فعلاً. المخططات الأكبر تزيد استهلاك الرموز.
استخدم أسماء حقول وأوصاف واضحة. النموذج يقرأ أسماء الخصائص والأوصاف لفهم المحتوى المطلوب.
فضّل التعدادات على النصوص المفتوحة. عندما يكون للحقل مجموعة معروفة من القيم، استخدم التعداد:
// ضعيف: النموذج قد يرجع "High"، "HIGH"، "أولوية عالية"
priority: z.string()
// قوي: مضمون أن يكون أحد هذه القيم
priority: z.enum(["low", "medium", "high", "critical"])قسّم الاستخراجات المعقدة إلى استدعاءات أصغر. استدعاء واحد بـ 20 حقلاً أقل موثوقية وأكثر تكلفة من استدعاءين بـ 10 حقول لكل منهما.
مثال واقعي: استخراج بيانات الفواتير
مثال كامل يستخرج بيانات الفواتير من نص غير منظم — حاجة شائعة لـأنظمة الفوترة الإلكترونية وأتمتة الأعمال:
import Anthropic from "@anthropic-ai/sdk";
import { zodTool } from "@anthropic-ai/sdk/helpers/zod";
import { z } from "zod";
const InvoiceSchema = z.object({
invoiceNumber: z.string().describe("رقم الفاتورة أو الإيصال"),
vendor: z.string().describe("الشركة أو الشخص الذي أصدر الفاتورة"),
date: z.string().describe("تاريخ الفاتورة بتنسيق YYYY-MM-DD"),
lineItems: z.array(z.object({
description: z.string(),
quantity: z.number().positive(),
unitPrice: z.number().positive(),
})),
subtotal: z.number(),
taxRate: z.number().describe("نسبة الضريبة كنسبة مئوية"),
taxAmount: z.number(),
total: z.number(),
currency: z.enum(["USD", "EUR", "TND", "SAR", "AED"]),
});
const client = new Anthropic();
async function extractInvoice(text: string) {
const response = await client.messages.create({
model: "claude-sonnet-4-6-20260320",
max_tokens: 2048,
tools: [
zodTool({
name: "extract_invoice",
description: "استخراج بيانات الفاتورة المنظمة من النص",
schema: InvoiceSchema,
}),
],
tool_choice: { type: "tool", name: "extract_invoice" },
messages: [{ role: "user", content: text }],
});
const toolBlock = response.content.find((b) => b.type === "tool_use");
return InvoiceSchema.parse(toolBlock?.input);
}اعتبارات التكلفة
المخرجات المنظمة ليست مجانية. المخططات المعقدة تضيف رموزاً لكل طلب. ضع في اعتبارك:
- قلل الحقول الاختيارية. كل حقل اختياري يكلف رموزاً.
- استخدم تخزين المخططات مؤقتاً. مع تمكين التخزين المؤقت للأوامر، تُخزّن تعريفات المخططات عبر الطلبات مما يقلل التكاليف بنسبة تصل إلى 90%. اطلع على دليلنا حول تحسين تكاليف واجهات الذكاء الاصطناعي.
- استخدم أرخص نموذج يعمل. للمهام البسيطة، النماذج الأصغر مثل Claude Haiku تتعامل مع المخرجات المنظمة بنفس الموثوقية — بجزء من التكلفة.
ما القادم
منظومة المخرجات المنظمة تتطور بسرعة. البث المباشر للمخرجات المنظمة — حيث تُسلّم كائنات JSON جزئية أثناء توليدها — مدعوم الآن ويتيح واجهات تعرض البيانات المستخرجة تدريجياً.
المخرجات المنظمة متعددة الوسائط، حيث تستخرج النماذج بيانات منظمة مباشرة من الصور وملفات PDF والصوت، تنضج أيضاً. مع أتمتة الأعمال بالذكاء الاصطناعي، تصبح هذه القدرات ممكنة لبناء خطوط معالجة مستندات شاملة دون تدخل بشري.
الخلاصة: إذا كنت تبني ميزات مدعومة بالذكاء الاصطناعي في 2026، فالمخرجات المنظمة ليست اختيارية. إنها الأساس الذي يجعل كل شيء آخر — الوكلاء، الأتمتة، خطوط البيانات — يعمل فعلاً في الإنتاج.
ناقش مشروعك معنا
نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.
دعنا نجد أفضل الحلول لاحتياجاتك.