Prompt Engineering

إتقان وضع JSON: مخرجات منظمة لتكاملات نماذج اللغة الكبيرة الموثوقة

بناء تطبيقات قوية باستخدام نماذج اللغة الكبيرة (LLMs) غالبًا ما ينطوي على تحدٍّ كبير: استخراج بيانات نظيفة وقابلة للاستخدام من الاستجابات بلغة طبيعية. على الرغم من أن نماذج اللغة الكبيرة ممتازة في توليد النصوص، إلا أنها قد تكون غير متوقعة عند الحاجة إلى تنسيق صارم. وهنا يأتي دور وضع JSON كأداة لا غنى عنها للمطورين. من خلال تقييد النموذج ليُخرج JSON صالحًا فقط، يمكنك تكامل نماذج اللغة الكبيرة بسلاسة في الخدمات الخلفية وواجهات برمجة التطبيقات (APIs) وخطوط أنابيب البيانات دون الحاجة إلى منطق تحليل هش.

ما هو وضع JSON؟

وضع JSON هو ميزة مدعومة من قبل العديد من واجهات برمجة التطبيقات الحديثة لنماذج اللغة الكبيرة (مثل OpenAI وAnthropic وGoogle) التي تجبر النموذج على توليد استجابة تكون JSON صالحًا بصرامة. على عكس الاعتماد على أوامر النظام التي تطلب فقط مخرجات JSON، فإن وضع JSON هو قيد صارم. يتم منع النموذج تقنيًا من تضمين كتل أكواد Markdown، أو النصوص التوضيحية، أو أي أحرف أخرى غير JSON في استجابته النهائية.

هذا الحتمية أمر حاسم في بيئات الإنتاج. إذا حاولت تطبيقك تنفيذ JSON.parse() على استجابة تحتوي على مسافات زائدة أو نصوص تمهيدية مثل "إليك البيانات التي طلبتها:", فإن العملية ستتعطل. وضع JSON يقضي على هذه الفئة من الأخطاء تمامًا.

كيفية تفعيل وضع JSON

تفعيل وضع JSON عادةً ما يكون مباشرًا عبر معاملات واجهة برمجة التطبيقات. أدناه مثال عملي باستخدام Python مع مكتبة OpenAI.

import openai
import json

client = openai.OpenAI()

completion = client.chat.completions.create(
    model="gpt-4o",
    response_format={"type": "json_object"},
    messages=[
        {
            "role": "system",
            "content": "You are a helpful assistant that extracts structured data."
        },
        {
            "role": "user",
            "content": "Extract the name, age, and occupation from this text: 'My name is John Doe, I am 30 years old, and I work as a Software Engineer.'"
        }
    ]
)

print(json.dumps(json.loads(completion.choices[0].message.content), indent=2))

في هذا المثال، تم تعيين معامل response_format إلى {"type": "json_object"}. هذا الأمر يخبر واجهة برمجة التطبيقات بالتحقق من أن المخرجات هي كائن JSON صالح.

تعريف المخطط (Schema) عبر أوامر النظام

على الرغم من أن وضع JSON يضمن الصلاحية، إلا أنه لا يضمن تلقائيًا أن الهيكل يتوافق مع احتياجات تطبيقك. يجب عليك تحديد المفاتيح وأنواع القيم المتوقعة صراحةً في أمر النظام الخاص بك.

أفضل الممارسات لتعريف المخطط

  • كن صريحًا: اذكر جميع الحقول المطلوبة.
  • حدد الأنواع: وضّح ما إذا كان الحقل نصًا (string)، أو عددًا صحيحًا (integer)، أو قيمة منطقية (boolean)، أو مصفوفة (array).
  • قدّم أمثلة: شمل مخرجات JSON نموذجية في أمر النظام لتوجيه النموذج.
system_prompt = """
You are a data extraction engine. Extract user information from the provided text.
Return a JSON object with the following structure:
{
    "name": "string",
    "age": "integer",
    "occupation": "string"
}
If a field is missing, use null.
"""

التعامل مع التحقق والحالات الحدّية

حتى مع استخدام وضع JSON، يجب عليك دائمًا تنفيذ التحقق على جانب العميل باستخدام مكتبات مثل Pydantic (لغة Python) أو Zod (لغة JavaScript). يعمل هذا كشبكة أمان ضد الحالات الحدّية حيث قد يولّد النموذج JSON صالحًا من حيث البنية لكنه غير صحيح من حيث الدلالة (مثل عمر 200 سنة أو مفتاح غير موجود).

from pydantic import BaseModel, ValidationError

class UserData(BaseModel):
    name: str
    age: int
    occupation: str

try:
    user_data = UserData(**json.loads(completion.choices[0].message.content))
    print("Validation passed:", user_data)
except ValidationError as e:
    print("Validation failed:", e)

أخطاء شائعة وحلولها

1. فخ "Null"

تتردد نماذج اللغة الكبيرة أحيانًا في استخدام null عندما تكون البيانات مفقودة، وتعيد بدلاً من ذلك نصوصًا فارغة "" أو النص "null". كن صريحًا في أمر النظام الخاص بك: "استخدم JSON null إذا لم تتوفر المعلومات."

2. التعقيد المتداخل

عندما تصبح هياكل JSON متداخلة بعمق، قد تنخفض دقة النموذج في الالتزام بالمخطط. للمخططات المعقدة للغاية، فكّر في تقسيم المهمة إلى عدة استدعاءات لنماذج اللغة الكبيرة أو استخدام أدوات مخرجات منظمة متخصصة تدعم قيود JSON Schema مباشرة.

الخلاصة

وضع JSON ليس مجرد ميزة مريحة؛ بل هو حجر أساس للتكامل الموثوق مع نماذج اللغة الكبيرة. من خلال الجمع بين وضع JSON وتعريفات المخطط الصريحة في أوامر النظام والتحقق الصارم على جانب العميل، يمكنك بناء تطبيقات قوية تستفيد من ذكاء نماذج اللغة الكبيرة دون التضحية بسلامة البيانات. سواء كنت تبني روبوت دعم عملاء بالذكاء الاصطناعي، أو خط أنابيب لاستخراج البيانات، أو محرك بحث دلالي، فإن المخرجات المنظمة هي المفتاح للتوسع الفعّال في ميزات الذكاء الاصطناعي الخاصة بك.

Share: