وصف الأداة وربط الدالة المنفذة جانبان منفصلان في إعداد مساعد يستعمل دوال. قد يقرأ النموذج عبارة «اجمع العددين»، بينما يحتاج التطبيق إلى كود ينجز الحساب ويعيد الناتج. نحدد صاحب التنفيذ في مسار Functions الخاص بـAgents API ثم نؤلف دالة صغيرة للشرح، دون تشغيلها.
الخلاصة السريعة
في المسار الموثق يطلب الوكيل الاستدعاء ويعيد كود التطبيق الناتج؛ الوصف يخبره بالوظيفة، لكنه ليس دليلا على وجود معالج يعمل أو على مكان تشغيله.
- توضح OpenAI أن المعالج قد يعمل في خادم التطبيق أو عامل أو بيئة يتحكم بها المطور؛ إرفاق بيئة بالجلسة لا يشغل الدوال فيها تلقائيا. [1]
- لدالتنا المؤلفة وصف «اجمع عددين» ومعالج معلن يحسب 2 + 3 = 5. الوصف والمدخلان وقاعدة الحساب أجزاء مختلفة، ولم ننفذ استدعاء.
- إذا ربط الإعداد الاسم بمعالج يطرح بدلا من الجمع، فلن يصححه الوصف وحده في فرضنا. افحص الربط والقيم التي نفذها الكود بدلا من استنتاج السلوك من الاسم.
- احفظ هوية المعالج ونسخة الإعداد ودليل الناتج عند التنفيذ الفعلي. لا نستنتج خادما أو صندوق تشغيل من عبارة «أداة متاحة»، ولا نعد حساب المثال اختبارا.
من ينجز العملية في المسار المسمي؟
تشرح OpenAI أن الوكيل يطلب استدعاء دالة وينتج كود التطبيق نتيجتها. قد يعمل المعالج في خادم أو عامل أو بيئة يتحكم بها المطور؛ إرفاق بيئة بالجلسة لا يشغل الدوال فيها تلقائيا. [1]
نحصر المقال في هذا النوع من الدوال التي يتولاها التطبيق. لا ننقل مكان التشغيل إلى كل أداة مدمجة أو خدمة خارجية. المعالج هنا هو الجزء البرمجي الذي يستقبل الطلب وينجز وظيفة الدالة، لا فقرة وصف الوظيفة.
عندما يسأل المحرر «أين حصل الحساب؟» يحتاج إلى إعداد التنفيذ أو سجل موثوق له. لا تستخرج اسم الجهاز من جودة الجواب، ولا تجعل مكان تشغيل واجهة المحادثة مكانا مفترضا لكل عملية.
كيف نفصل مكونات دالة بسيطة؟
نعلن مثالا تعليميا اسمه add_pair. وصفه «جمع عددين معطيين»، ومدخلاه العددان 2 و 3. نكتب معالجا افتراضيا يطبق الجمع وحده، فيكون الناتج الحسابي المتوقع 5. الرقم نتيجة حساب يدوي داخل الفرض، وليس جواب خدمة.
لو احتفظنا بالوصف والمدخلين دون تعيين جزء ينفذ، نملك شرحا للوظيفة المطلوبة ولا نملك دليلا على نتيجة تنفيذ. وقد يكون الربط موجودا عند صاحب تطبيق فعلي لكننا لم نره؛ غياب علمنا به يظل نقصا في المراجعة.
لا نخلط أيضا بين العددين وبين جملة تصفهما. اخترنا نوع المدخل وقاعدة الحساب صراحة حتى يستطيع القارئ فحص العملية، دون تحويل المثال إلى شرح شامل لمخططات البيانات.
ماذا لو اختلف الربط عن الوصف؟
نؤلف إعدادا ثانيا يحمل الاسم نفسه، لكننا نعلن أن المعالج المرتبط به يحسب الأول ناقص الثاني. وفق المدخلين نفسيهما يعطي سالب 1، مع بقاء وصف «الجمع» مكتوبا. السبب المفترض اختلاف القاعدة المنفذة، لا تغير المسألة الحسابية.
لا نصلح هذا الإعداد التعليمي بإعادة كتابة «اجمع» مرات كثيرة في الطلب. ينبغي أن يراجع صاحب الربط أي معالج اختاره. لا تزعم مقارنة الإعدادين أنها عيب رصدناه في منتج؛ كتبنا القاعدتين لتوضيح ما ينبغي أن يتوافق.
وإذا لم يصرح السجل بالقاعدة أو بالقيم التي استقبلها المعالج، لا نشخص الطرح من رقم واحد. قد توجد أسباب أخرى لم نحددها؛ ننسب الاستنتاج إلى الفرض المتاح.
ما الذي تسجله مراجعة التنفيذ؟
نقترح فصل وصف الدالة عن اسم المعالج ونسخته ومدخليه والناتج الذي عاد فعلا. إتاحة الاسم للنموذج لا تكمل هذه البطاقة. كذلك اختيار معالج صحيح لا يثبت أن محاولة بعينها وصلته أو انتهت.
إن تغير الربط في نسخة جديدة، يراجع الناتج مع تلك النسخة بدلا من استعمال سجل قديم. لم نرسل طلبا أو نربط خادما؛ المثال يشرح مسؤولية جزء تنفيذي منفصل عن اللغة التي تعرفه للمساعد.
المصادر ومتابعة القراءة
- OpenAI: Functions — Agents API (يفتح في نافذة جديدة)developers.openai.com
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
