يمكن لروبوت الدردشة الخاص بخدمة عملاء ShopEasy الإجابة على سؤال “أين طلبي؟” من خلال استدعاء دالة برمجية في الخلفية (مثل lookup_order)، ثم تحويل النتيجة إلى جملة مفيدة يمكن للمستخدم قراءتها.
في سياق هذه الدورة التدريبية، يمكن تعريف النموذج اللغوي الكبير (LLM) ببساطة على أنه نموذج يأخذ النص الذي نرسله ويتنبأ بالنص التالي الذي يجب إعادته؛ فهو يشبه ميزة “الإكمال التلقائي” القوية للغاية والقادرة على صياغة فقرات كاملة.
حتى في حالة سؤال بسيط عن الطلب، تتعامل ShopEasy مع عدة مدخلات متميزة. موجه النظام (System prompt) هو التعليمات الخاصة التي ترسلها ShopEasy مع كل طلب، مثل: “أنت تمثل خدمة عملاء ShopEasy. كن موجزاً. اطلب رقم الطلب إذا كان مفقوداً”. سجل المحادثة (Conversation history) هو السجل المتتابع للمبادلات السابقة الذي تدرجه ShopEasy لضمان اتساق النموذج في ردوده. مدخلات المستخدم (User input) هي الرسالة الجديدة، مثل “أين طلبي؟”. أما الأدوات (Tools) فهي دوال برمجية تعمل من جهة الخادم ويمكن لـ ShopEasy تشغيلها — مثل lookup_order و request_refund — عندما يحتاج الروبوت إلى بيانات أو يحتاج لتنفيذ إجراء معين.
بمجرد توفر هذه المكونات لدى ShopEasy، يمر الطلب الواحد عبر دورة عمل قابلة للتكرار. تصل رسالة المستخدم إلى واجهة برمجة التطبيقات (API) الخاصة بـ ShopEasy، فيقوم التطبيق بتجميع “موجه” (prompt) واحد للنموذج عن طريق دمج موجه النظام، وسجل المحادثة، ومدخلات المستخدم الجديدة. يرسل التطبيق هذا الموجه إلى مزود خدمة النماذج اللغوية الكبيرة (LLM)، فيعيد المزود مخرجات النموذج التي تكون إما رداً نصياً مباشراً أو اقتراحاً لاستدعاء أداة معينة مع تمرير المعاملات (arguments) اللازمة لها.
عندما يقترح النموذج استدعاء أداة، يقرر كود تطبيق ShopEasy ما إذا كان سيقوم بتشغيلها أم لا، ثم ينفذ دالة فعلية مثل lookup_order لجلب حالة الشحن أو request_refund لبدء عملية استرداد المبلغ. بعد ذلك، تعيد ShopEasy نتيجة الأداة إلى النموذج في رسالة أخرى ليتمكن النموذج من صياغة الرد النهائي الموجه للمستخدم، حيث يتم إرسال هذا الرد النهائي فقط إلى المستخدم. هناك تفصيل مهم يتعلق بالأمن وتصحيح الأخطاء لاحقاً: لا يمتلك النموذج ذاكرة مدمجة تحتفظ بالمعلومات بين عمليات الاستدعاء المختلفة، لذا يتعين على ShopEasy إعادة إرسال سجل المحادثة في كل مرة، وإلا فإن النموذج سيستجيب وكأنه لم يسبق له التعامل مع هذا المستخدم من قبل. لنقم بتوضيح هذه الدورة في مخطط يبيّن مسار الطلب.
يوضح هذا الرسم البياني حدود الثقة؛ فمدخلات المستخدم غير موثوقة لأن أي طرف مستدعٍ يمكنه كتابة نصوص عشوائية، كما أن نتائج الأدوات غير موثوقة لأن الأداة قد تعيد محتوى غير متوقع يُعاد تغذيته لاحقاً إلى النموذج.
تتمثل إحدى دلالات السلامة المهمة في هذه الحلقة في أن النموذج لا يقرأ قاعدة البيانات، ولا يصدر مبالغ مستردة، ولا يفرض السياسات؛ إذ يقتصر دور النموذج على توليد نصوص تقترح الخطوات التالية، بينما يتولى كود تطبيق ShopEasy تنفيذ الإجراءات الفعلية وإعادة البيانات عبر الأدوات.
يظل هذا الفصل واضحاً فقط إذا حافظنا على تمييز ثلاث هويات: المستخدم النهائي (العميل الذي يستفسر عن طلب ما)، حيث يجب أن تحدد صلاحياته الطلبات التي يمكنه رؤيتها والإجراءات التي يمكنه طلبها؛ وخدمة ShopEasy (النظام الخلفي أو “الباك إند”)، التي تتمتع بقدرات أوسع مثل الوصول إلى قاعدة البيانات وتنفيذ دالة request_refund؛ وبيانات اعتماد مزود النموذج اللغوي الكبير (LLM)، وهي مفتاح واجهة برمجة التطبيقات (API key) أو رمز الخدمة الذي تستخدمه ShopEasy لاستدعاء نقطة نهاية النموذج، حيث تمنح هذه البيانات الإذن باستخدام النموذج فقط، وليس تنفيذ إجراءات العميل. يؤدي الخلط بين هذه الهويات إلى حدوث إخفاقات يقوم فيها النظام الخلفي بإنفاق الأموال، أو كشف البيانات، أو تنفيذ إجراءات نيابة عن مستخدم لا ينبغي أن يمتلك صلاحية تفعيلها. وفي حال حدوث خطأ ما، يبرز السؤال: أي جزء يمكنه فرض القواعد فعلياً؟ هل هو نص التوجيه (prompt)، أم النموذج اللغوي الكبير، أم كود تطبيق ShopEasy؟