Prompt Engineering

ما وراء الدردشة: إتقان استخدام الأدوات في تطبيقات الذكاء الاصطناعي الحديثة

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

ما هو استخدام الأدوات؟

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

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

هندسة استدعاء الدوال

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

عند تعريف الأدوات، من الضروري توفير بيانات وصفية غنية. يعمل مخطط الوصف كجسر بين اللغة الطبيعية والكود. تؤدي الأوصاف الغامضة إلى استدعاءات واجهة برمجة التطبيقات (API) غير الصحيحة.

تعريف مخطط الأداة

فيما يلي مثال على كيفية ظهور تعريف أداة نموذجي في إطار عمل حديث مثل LangChain أو مكتبة عميل OpenAI. لاحظ التركيز على أوصاف المعلمات الواضحة والكتابة الصارمة.

tool_definition = {
    "name": "get_current_weather",
    "description": "Get the current weather in a given location",
    "parameters": {
        "type": "object",
        "properties": {
            "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA"
            },
            "unit": {
                "type": "string",
                "enum": ["celsius", "fahrenheit"],
                "description": "The temperature unit to use"
            }
        },
        "required": ["location"]
    }
}

أفضل الممارسات للتنفيذ القوي

1. التحقق الصارم من الصحة

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

2. تقليل تعقيد الأدوات

اجعل الأدوات الفردية مركزة. يجب أن تقوم الأداة بشيء واحد بشكل جيد. الإجراءات المعقدة والمتعددة الخطوات تربك النموذج وتزيد من زمن الاستجابة. إذا كانت المهمة تتطلب خطوات متعددة، فقم بتقسيمها إلى دوال ذرية منفصلة. يتيح ذلك لنموذج اللغة الكبيرة الاستدلال خطوة بخطوة، وهي تقنية تُعرف باسم التوجيه بتسلسل الأفكار (chain-of-thought prompting).

3. معالجة الأخطاء بلطف

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

  1. يطرح المستخدم سؤالاً.
  2. يستدعي نموذج اللغة الكبيرة search_docs.
  3. يعيد الخادم خطأً: "انتهت مهلة الاتصال بالمؤشر."
  4. يرى نموذج اللغة الكبيرة الخطأ ويعيد المحاولة أو يعتذر للمستخدم.

مثال عملي: مساعد الطقس

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

system_message = """
You are a helpful weather assistant. 
If the user asks about the weather, use the get_current_weather tool.
Do not make up weather data.
"""

عندما يستفسر المستخدم: "ما هو الطقس في برلين؟"، يتعرف النموذج على النية ويخرج حمولة JSON مهيكلة لاستدعاء الدالة، بدلاً من فقرة نصية. يقوم الخلفية (Backend) بالتقاط هذا، وتشغيل دالة بايثون، وإدراج النتيجة في سجل المحادثة.

الخاتمة

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

Share: