ناتج الأداة والإجابة النهائية قد يتشابهان على الشاشة، لكنهما ليسا المرحلة نفسها. قد تختار جهة التطبيق عرض قيمة كما عادت، أو استعمالها في طلب تال للنموذج. نميز المسارين على ورقة معلنة، حتى لا ننسب جملة محررة إلى الأداة أو نفترض أن كل ناتج مر بدور إضافي.
الخلاصة السريعة
يتوقف ذلك على المسار الفعلي: في مثالنا يعود ناتج الأداة مباشرة في فرع، ويصل إلى النموذج ليصوغ ردا في فرع آخر. وجود القيمة وحده لا يبين أيهما حدث.
- في المسار الموثق لاستدعاء الدوال يرسل التطبيق ناتج الأداة إلى النموذج، وقد يأتي رد نهائي أو استدعاء إضافي. [1] هذا لا يثبت أن كل تطبيق يتبع المسار نفسه.
- في فرعنا المباشر تعرض الخدمة القيمة المؤلفة «عدد البطاقات: 3» كما هي؛ لا ننسبها إلى صياغة نموذج لاحقة، ولا نجعل مباشرة العرض ضمانا لصحتها.
- في الفرع الثاني تصل القيمة إلى النموذج ثم نفترض ردا «توجد ثلاث بطاقات زرقاء»؛ أضاف «زرقاء» مع أن الناتج لم يذكر لونا، ولا نثبت الإضافة من مجرد وصول القيمة.
- احفظ الناتج والرد ومسار الانتقال فعليا؛ لا تستنتج دورا إضافيا من تشابه النص، ولا تعد قيمة عن العدد إجابة كاملة لسؤال عن العدد واللون.
ماذا يحدث بعد عودة القيمة؟
يوضح دليل OpenAI للاستدعاء إرسال ناتج الأداة في طلب تال للنموذج، ثم تلقي رد نهائي أو استدعاءات أخرى. [1]
هذه نقطة في مسار المحادثة، وليست قاعدة أن الأداة تكتب دائما الجملة التي يقرأها المستخدم. يختار التطبيق ما يعرضه وكيف يمرر ما لديه. سنعلن تصميمين افتراضيين بدلا من نسبة إعداد لم نوثقه إلى مكتبة برمجية.
نثبت في التصميمين أداة اسمها count_cards تعيد نصا عن عدد بطاقات. لا نغير عملية العد أو مصدرها كي نفسر الفرق؛ السؤال هنا عن وجهة الناتج بعد عودته، وليس عن طريقة حساب العدد أو تدريب النموذج.
ما معنى العرض المباشر في مثالنا؟
نضع في الورقة ناتجا مؤلفا هو «عدد البطاقات: 3». وفي الفرع د نعلن أن التطبيق ينقل النص نفسه إلى خانة الجواب، ثم ينهي هذا المسار دون إرسال القيمة إلى نموذج مرة أخرى. هذا شرط تصميم للشرح، لا سجل برنامج شغلناه.
الجملة الظاهرة في د هي النص الذي حددناه للأداة، وليست إعادة صياغة من النموذج. لو تغيرت القيمة لاحقا في المصدر، فلا يثبت هذا أن النص المعروض حدث نفسه؛ يلزم تتبع النسخة التي أخذها المسار.
ولا يعني النقل المباشر أن العدد صحيح. ربما كانت بطاقة المثال ناقصة أو كان تعريف ما يعد غير مناسب لسؤال القارئ. فصلنا طريقة العرض عن قيمة الدليل، فلا يتحول اسم «مباشر» إلى شهادة جودة.
ماذا يضاف في فرع الصياغة؟
في الفرع ص نعلن أن التطبيق يرسل «عدد البطاقات: 3» إلى النموذج. ونؤلف ردا لاحقا: «توجد ثلاث بطاقات زرقاء». لم نقدم اللون في الناتج، لذلك لا نجد لهذه الصفة سندا في المادة المعلنة.
قد يصوغ الرد العدد نفسه بعبارة مختلفة دون أن يضيف صفة. مجرد اختلاف اللفظ لا يثبت خطأ، كما أن تشابه الجملة الأصلية لا يثبت غياب دور النموذج. نحتاج وصف الانتقال أو سجل المرحلة إذا أردنا معرفة صاحب الصياغة.
لم نرسل الطلب أو نقارن نظامين. جعلنا اللون الإضافي ظاهرا حتى يستطيع القارئ فصل ما جاء في القيمة عما افترضه الرد، دون حساب نسبة هلوسة أو الادعاء أن إعادة الصياغة تضيف أخطاء دائما.
كيف نراجع نهاية المسار؟
نقترح ثلاث خانات: الناتج الذي عاد، والجهة التي استقبلته تاليا، والنص الذي عرض في النهاية. تحفظ الخانات نسبة الألفاظ إلى مراحلها، وتسمح بمراجعة الإضافات من غير تخمين المسار من شكل واجهة المحادثة.
إذا كان السؤال «كم بطاقة وما لونها؟»، فلا يجيب عدد 3 وحده عن اللون. في مثالنا يحافظ الرد الأمين على العدد المؤلف ويترك اللون غير معلوم، سواء نقل النص مباشرة أو صيغ في دور آخر.
نراجع ما سجل فعلا لكل فرع، ثم اكتمال السؤال وصحة المعلومات. توقف المسار، أو عودة قيمة، أو ظهور جملة نهائية أمور لا تعوض الدليل الناقص عن اللون؛ ولم ننفذ أي فرع في خدمة حقيقية.
المصادر ومتابعة القراءة
- OpenAI: Function calling (يفتح في نافذة جديدة)developers.openai.com
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
