العودة إلى الرئيسية

المخرجات المنظمة مع نماذج اللغة الكبيرة: وضع JSON، استدعاء الدوال، ومتى تستخدم كل منهما

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

القراءة الصوتية غير متاحة في هذا المتصفح
المخرجات المنظمة مع نماذج اللغة الكبيرة: وضع JSON، استدعاء الدوال، ومتى تستخدم كل منهما

الوسوم

ملخص سريع

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

المخرجات المنظمة مع نماذج اللغة الكبيرة: وضع JSON، استدعاء الدوال، ومتى تستخدم كل منهما

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

فهم التحدي

تولد نماذج اللغة الكبيرة النص رمزاً تلو الآخر، مما يعني أن مخرجاتها غير منظمة بطبيعتها. قد يؤدي أمر بسيط مثل "اذكر العواصم الأوروبية" إلى قائمة نقطية أو جدول أو فقرة اعتماداً على تدريب النموذج والعشوائية. بالنسبة للأنظمة الإنتاجية، هذا التباين غير مقبول. أنت بحاجة إلى مخطط - هيكل محدد مسبقاً يجب أن يلتزم به النموذج. وضع JSON واستدعاء الدوال هما طريقتان تفرضان مثل هذه المخططات، لكنهما يعملان بشكل مختلف ويناسبان سيناريوهات مختلفة.

المتطلبات

قبل البدء في التنفيذ، تأكد من توفر ما يلي:

  • Python 3.8 أو أحدث مثبت على نظامك.
  • الوصول إلى واجهة برمجة تطبيقات نموذج لغة كبير تدعم المخرجات المنظمة. GPT-4 و GPT-4 Turbo من OpenAI هما الأكثر شيوعاً، لكن مقدمي خدمات آخرين (مثل Anthropic و Google) يقدمون إمكانيات مماثلة. سنستخدم OpenAI كمرجع للتنفيذ.
  • مفتاح API من مزود نموذج اللغة الكبير الخاص بك. بالنسبة لـ OpenAI، سجل في platform.openai.com وأنشئ مفتاحاً.
  • إلمام أساسي بـ Python وأدوات سطر الأوامر.

التثبيت خطوة بخطوة

سنقوم بإعداد بيئة Python وتثبيت المكتبات اللازمة. تفترض هذه الخطوات أنك تستخدم محطة طرفية شبيهة بـ Unix (Linux أو macOS أو WSL على Windows).

1. إنشاء بيئة افتراضية

عزل التبعيات يمنع التعارض مع المشاريع الأخرى. قم بتشغيل الأوامر التالية:

python3 -m venv llm-structured
source llm-structured/bin/activate

الأمر الأول ينشئ بيئة افتراضية باسم `llm-structured`. الثاني ينشطها، بحيث تكون أي حزم Python تقوم بتثبيتها محصورة داخل هذه البيئة.

2. تثبيت مكتبة OpenAI Python

توفر مكتبة OpenAI واجهة نظيفة للتفاعل مع واجهة برمجة التطبيقات الخاصة بهم. قم بتثبيتها باستخدام pip:

pip install openai

هذا يقوم بتثبيت أحدث إصدار من حزمة `openai`، والتي تتضمن دعم وضع JSON واستدعاء الدوال.

3. تعيين مفتاح API الخاص بك

تحتاج إلى المصادقة مع OpenAI. قم بتعيين مفتاح API الخاص بك كمتغير بيئة للأمان:

export OPENAI_API_KEY="your-api-key-here"

استبدل `your-api-key-here` بمفتاحك الفعلي. للاستخدام الدائم، أضف هذا السطر إلى ملف `.bashrc` أو `.zshrc` الخاص بك.

4. التحقق من التثبيت

اختبر أن كل شيء يعمل عن طريق تشغيل سكربت بسيط:

python3 -c "import openai; print('تم تثبيت مكتبة OpenAI بنجاح')"

إذا لم تظهر أي أخطاء، فأنت جاهز للمتابعة.

وضع JSON: مخرجات منظمة بدون دوال

يوجه وضع JSON النموذج للرد بكائن JSON صالح يطابق مخططاً تقدمه. إنه بسيط ومرن ويعمل مع مكالمات الدردشة القياسية.

كيف يعمل وضع JSON

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

مثال استخدام: استخراج معلومات المنتج

افترض أنك تريد استخراج تفاصيل المنتج من وصف المستخدم. إليك سكربت Python كامل:

import openai
import json

client = openai.OpenAI()

response = client.chat.completions.create(
    model="gpt-4-turbo",
    response_format={"type": "json_object"},
    messages=[
        {"role": "system", "content": "استخرج معلومات المنتج إلى JSON بمفاتيح: name, price, category, in_stock."},
        {"role": "user", "content": "اشتريت ماوس لاسلكي ممتاز بسعر 49.99 دولاراً من قسم الإلكترونيات. وهو متوفر حالياً في المخزون."}
    ]
)

# تحليل رد JSON
product_data = json.loads(response.choices[0].message.content)
print(product_data)

**الشرح:**

  • المعامل `response_format={"type": "json_object"}` ينشط وضع JSON.
  • رسالة النظام تخبر النموذج بهيكل JSON المتوقع.
  • يعيد النموذج سلسلة نصية يمكنك تحليلها باستخدام `json.loads`.

متى تستخدم وضع JSON

وضع JSON مثالي عندما:

  • تحتاج إلى هيكل بيانات بسيط ومسطح (مثل كائن واحد مع بضعة حقول).
  • مخطط الإخراج ثابت ولا يعتمد على إدخال المستخدم.
  • تريد الحد الأدنى من الحمل الزائد - لا حاجة لتعريف دوال أو معالجة استدعاءات الأدوات.
  • رد النموذج هو الإخراج النهائي، وليس خطوة وسيطة.

**القيود:** لا يمكن لوضع JSON فرض مخططات معقدة مثل الكائنات المتداخلة أو المصفوفات ذات الهياكل الشرطية. قد ينتج النموذج أحياناً JSON غير صحيح، مما يتطلب معالجة الأخطاء.

استدعاء الدوال: تنفيذ إجراءات منظمة

استدعاء الدوال (المعروف أيضاً باستخدام الأدوات) يسمح لنموذج اللغة الكبير بطلب تنفيذ دوال محددة مسبقاً. يعيد النموذج كائن JSON منظم يحدد أي دالة يجب استدعاؤها وبأي وسائط. هذا أقوى من وضع JSON لأن النموذج يمكنه تحديد متى يستدعي دالة بناءً على سياق المحادثة.

كيف يعمل استدعاء الدوال

تقوم بتعريف دوال مع معاملات وأوصاف. يقيم النموذج المحادثة، وإذا كان مناسباً، يعيد طلب استدعاء دالة. ثم ينفذ كودك الدالة ويمرر النتيجة مرة أخرى إلى النموذج لمزيد من المعالجة.

مثال استخدام: استرجاع بيانات الطقس

لنقم بإنشاء مساعد طقس يستخدم استدعاء الدوال:

import openai
import json

client = openai.OpenAI()

# تعريف دالة للنموذج لاستدعائها
functions = [
    {
        "name": "get_weather",
        "description": "احصل على الطقس الحالي لمدينة",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {
                    "type": "string",
                    "description": "اسم المدينة، مثلاً: San Francisco"
                },
                "unit": {
                    "type": "string",
                    "enum": ["celsius", "fahrenheit"],
                    "description": "وحدة درجة الحرارة"
                }
            },
            "required": ["city"]
        }
    }
]

def get_weather(city, unit="celsius"):
    """محاكاة استدعاء واجهة برمجة تطبيقات الطقس"""
    return f"الطقس في {city} هو 22° {unit}."

# إرسال المحادثة
response = client.chat.completions.create(
    model="gpt-4-turbo",
    messages=[
        {"role": "user", "content": "كيف الطقس في باريس؟"}
    ],
    functions=functions,
    function_call="auto"
)

message = response.choices[0].message

# التحقق مما إذا كان النموذج يريد استدعاء دالة
if message.function_call:
    function_name = message.function_call.name
    arguments = json.loads(message.function_call.arguments)
    
    # تنفيذ الدالة
    result = get_weather(arguments["city"], arguments.get("unit", "celsius"))
    
    # إرسال نتيجة الدالة مرة أخرى إلى النموذج
    second_response = client.chat.completions.create(
        model="gpt-4-turbo",
        messages=[
            {"role": "user", "content": "كيف الطقس في باريس؟"},
            message,
            {
                "role": "function",
                "name": function_name,
                "content": result
            }
        ],
        functions=functions
    )
    
    print(second_response.choices[0].message.content)
else:
    print(message.content)

**الشرح:**

  • قائمة `functions` تعرف دالة واحدة مع معاملاتها وأوصافها.
  • `function_call="auto"` يسمح للنموذج بتحديد متى يستدعي الدالة.
  • يعيد النموذج كائن `function_call` مع اسم الدالة والوسائط.
  • تنفذ الدالة وتغذي النتيجة مرة أخرى للنموذج للحصول على رد قابل للقراءة البشرية.

متى تستخدم استدعاء الدوال

استدعاء الدوال هو الأفضل عندما:

  • تحتاج النموذج للتفاعل مع أنظمة خارجية (مثل واجهات برمجة التطبيقات، قواعد البيانات).
  • مخطط الإخراج ديناميكي أو يعتمد على سياق المحادثة.
  • تريد من النموذج أداء استدلال متعدد الخطوات (مثل استدعاء دالة، ثم استخدام النتيجة في استدعاء متابعة).
  • الإخراج المنظم هو خطوة وسيطة في سير عمل أكبر.

**القيود:** يتطلب استدعاء الدوال كوداً أكثر لمعالجة دورة الاستدعاء والإرجاع. كما يضيف زمن استجابة لأنك تقوم باستدعاءات API متعددة.

مقارنة وضع JSON واستدعاء الدوال

| الميزة | وضع JSON | استدعاء الدوال | |------------------------|------------------------------------|--------------------------------------| | هيكل الإخراج | كائن JSON واحد | كائن JSON + تنفيذ دالة | | فرض المخطط | عبر تعليمات الأمر | عبر تعريفات دالة صريحة | | التعقيد | منخفض | متوسط إلى عالي | | زمن الاستجابة | استدعاء API واحد | استدعاءان API أو أكثر | | المخططات الديناميكية | محدود | مدعوم بالكامل | | التفاعلات الخارجية | لا | نعم (عبر تنفيذ الدالة) | | معالجة الأخطاء | يدوي (تحليل JSON) | مدمج (التحقق من صحة استدعاء الدالة) |

اختيار النهج الصحيح

القرار يعتمد على حالة الاستخدام الخاصة بك:

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

النهج الهجين

يمكنك الجمع بين كلا التقنيتين. على سبيل المثال، استخدم استدعاء الدوال لاسترجاع البيانات من API، ثم اطلب من النموذج تنسيق النتيجة كهيكل JSON محدد باستخدام وضع JSON. هذا يمنحك أفضل ما في العالمين: التفاعل الخارجي بالإضافة إلى التنسيق المتسق.

أفضل الممارسات

1. **تحقق دائماً من الإخراج**: حتى مع الأوضاع المنظمة، يمكن للنماذج ارتكاب الأخطاء. استخدم كتل `try-except` عند تحليل JSON وتحقق من الحقول مقابل مخططك. 2. **قدم تعليمات واضحة**: كلما كنت أكثر تحديداً حول الهيكل المتوقع، كلما كان الإخراج أكثر موثوقية. قم بتضمين أمثلة في رسالة النظام. 3. **تعامل مع الحالات الحدودية**: قد يعيد استدعاء الدوال استدعاءات متعددة أو لا شيء. يجب أن يتعامل كودك مع جميع السيناريوهات بشكل أنيق. 4. **راقب التكاليف**: يتطلب استدعاء الدوال استدعاءات API متعددة، مما يزيد من استخدام الرموز. قم بتحليل تطبيقك لضمان بقائه ضمن الميزانية. 5. **اختبر مع نماذج متعددة**: قد تختلف موثوقية النماذج المختلفة (مثل GPT-3.5 مقابل GPT-4). اختبر بدقة قبل النشر في الإنتاج.

الخلاصة

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

المصادر

أسئلة شائعة

عن ماذا يتحدث هذا المقال؟

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

لمن يفيد هذا المقال؟

يفيد القراء المهتمين بفهم أدوات وتقنيات الذكاء الاصطناعي بطريقة عملية وواضحة.

ما الخطوة التالية؟

اقرأ المقال كاملاً، راجع المصادر المرفقة، ثم جرّب الأفكار المناسبة لاحتياجك بحذر.