استدعاء الدوال في OpenAI API: ما الذي يفعله فعلاً وكيفية استخدامه بالطريقة الصحيحة

CometAPI
Zoom JohnApr 20, 2026
استدعاء الدوال في OpenAI API: ما الذي يفعله فعلاً وكيفية استخدامه بالطريقة الصحيحة

أنت تمرّر رسالة المستخدم إلى واجهة GPT API، وبدلاً من إجابة باللغة الطبيعية، يعيد إليك النموذج كائن JSON منظماً يخبرك تحديداً بأي دالة يجب استدعاؤها وبأي معاملات. هذا هو استدعاء الدوال — وهو يغيّر نوع التطبيقات التي يمكنك بناؤها باستخدام LLMs.

استدعاء الدوال

يفهم معظم المطوّرين عبارة "استدعاء الدوال" ويفترضون أن النموذج ينفّذ الشيفرة نيابةً عنهم. لكنه لا يفعل ذلك.

عند استخدام استدعاء الدوال، لا يقوم الـ LLM بتنفيذ الدالة. بدلاً من ذلك، يحدّد الدالة المناسبة، ويجمع جميع المعاملات المطلوبة، ويقدّم المعلومات ضمن صيغة JSON منظّمة.

لا تزال تطبيقاتك مسؤولة عن تشغيل المنطق الفعلي. فالنموذج يحدّد فقط ما الذي يجب تشغيله وبأي مدخلات.

هذا الفارق أهم مما يبدو، وهو يؤثّر في كل شيء بدءاً من كيفية تصميم التكامل وصولاً إلى التفكير في الأمان.

ما هو استدعاء الدوال فعلياً — وما الذي يُساء فهمه غالباً

يوفّر استدعاء الدوال (ويُعرف أيضاً باستدعاء الأدوات) طريقة قوية ومرنة لتمكين نماذج OpenAI من التفاعل مع الأنظمة الخارجية والوصول إلى بيانات خارج نطاق تدريبها.

الاسم هو أول مصدر للالتباس. يظن الناس أن النموذج ينفّذ شيئاً ما. لكنه لا يفعل.

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

الالتباس الثاني يتعلّق بواجهة البرمجة القديمة.

تم إهمال المعلمتين functions وfunction_call مع إصدار نسخة 2023-12-01-preview من الواجهة. الاستبدال لـ functions هو المعلمة tools.

إذا كنت تتّبع دليلاً يستخدم المعلمة القديمة functions، فأنت تستخدم صياغة مهملة. استخدم tools وtool_choice بدلاً منها.

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

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

كيف يعمل استدعاء الدوال في واجهة OpenAI — خطوة بخطوة

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

إليك كيف تبدو كل واحدة من تلك الخطوات عملياً.

Step 1: Define your function schemas. تصف كل دالة متاحة ككائن JSON داخل المعلمة tools. يتضمن المخطط اسم الدالة، ووصفاً باللغة الطبيعية يستخدمه النموذج لتقرير متى يستدعيها، وقسم parameters الذي يتبع قواعد JSON Schema.

كلما كان وصفك أكثر تفصيلاً — من حيث الحالات التي يمكن ويجب فيها استدعاء الدالة — كان أفضل. لاحظ، مع ذلك، أن أوصاف الدوال جزء من المُدخلات ولذلك تستهلك رموزاً.

Step 2: Send the request. تستدعي واجهة Chat Completions مع رسالة المستخدم وقائمة tools الخاصة بك. يرى النموذج الاثنين معاً.

Step 3: The model decides whether to call a function.

يشير استدعاء الدالة إلى نوع خاص من الاستجابة يمكنك الحصول عليه من النموذج إذا فحص المُدخل وقرّر أنه بحاجة إلى استدعاء إحدى الأدوات المتاحة له للامتثال للتعليمات. إذا تلقّى النموذج مُدخلاً مثل "ما حالة الطقس في باريس؟" فيمكن أن يرد باستدعاء أداة get_weather مع باريس كوسيط للموقع.

Step 4: Your code executes the function. تقوم شيفرتك بتحليل استجابة النموذج، واستخراج اسم الدالة والمعاملات، وتشغيل الشيفرة الفعلية في بيئتك. تُعيد الواجهة JSON منظّماً — وأنت تقرر ما الذي تفعله به.

Step 5: Send the result back.

بعد ذلك ترسل تعريفات الأدوات، والمُدخل الأصلي، واستدعاء الأداة الذي ولّده النموذج، ومخرجات استدعاء الأداة مرة أخرى إلى النموذج لتتلقى في النهاية استجابة نصية

— مثل "الطقس في باريس اليوم هو 25°C."

مخطط انسيابي لاستدعاء الدوال

تفصيل يتجاهله معظم الشروحات:

عندما تضبط strict: true في تعريف الدالة، تضمن المخرجات المهيكلة أن الوسائط التي يولّدها النموذج لاستدعاء الدالة تطابق تماماً مخطط JSON الذي قدّمته.

إعداد strict إلى true سيضمن التزام استدعاءات الدوال بالمخطط بشكل موثوق، بدلاً من كونه جهداً أفضل ما يمكن. توصي OpenAI دائماً بتمكين الوضع الصارم.

دائماً. لا يوجد سبب وجيه لعدم فعل ذلك.

هناك أيضاً الاستدعاء الموازي للدوال.

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

هذا يعني أن طلباً واحداً مثل "ما حالة الطقس في لندن وطوكيو؟" يمكن أن يطلق استدعاء أداتين متزامنتين بدلاً من ربطهما تسلسلياً.

حالات استخدام حقيقية لاستدعاء الدوال

مثال الطقس منتشر لأنه نظيف. أما حالات الإنتاج الواقعية فأكثر تعقيداً وإثارة للاهتمام.

خطوط دعم العملاء مع بيانات حيّة

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

يستنتج النموذج النية، ويستخرج معرّف العميل من السياق، ويستدعي واجهة برمجة تطبيقات الـ CRM الداخلي لديك. بلا تعابير منتظمة هشة. بلا قوالب توجيه تنكسر بسبب فاصلة مفقودة.

استخراج بيانات منظّمة على نطاق واسع

يُعد خط أنابيب لاستخراج البيانات يجلب نصوصاً خاماً، ويحوّلها إلى بيانات منظّمة، ويحفظها في قاعدة بيانات حالة استخدام قوية أخرى. تحصل على مخططات ثابتة عبر آلاف المستندات دون ضبط يدوي للمنطق التحليلي لكل نوع مستند.

الترجمة من اللغة الطبيعية إلى استدعاءات API

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

سير عمل وكيلي بأدوات متعددة

بالنسبة للمطورين، يمكّن استدعاء الدوال الوصول إلى البيانات في الوقت الفعلي لتجاوز حدود تاريخ التدريب بجلب أسعار الأسهم الحيّة، والطقس، أو إدخالات قواعد البيانات الحديثة. كما يتيح تنفيذ الإجراءات — بتحويل الـ LLM من مراقب سلبي إلى مشارك فعّال يعدّل الحالة، مثل إرسال رسائل البريد الإلكتروني، وتحديث أنظمة الـ CRM، أو نشر الشيفرة.

التمييز الرئيسي عن روبوت دردشة عادي: النموذج لا يكتفي بتوليد نص، بل ينسّق عمليات فعلية عبر أنظمتك.

أفضل ممارسات استدعاء الدوال — ما الذي يخطئ فيه المطوّرون عادةً

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

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

كشف عدد كبير جداً من الدوال دفعة واحدة

يمكن أن تستهلك أوصاف الدوال عدداً كبيراً من الرموز في المُدخل.

إن تحميل تعريفات لأكثر من 50 أداة في رسالة النظام يخلق مشكلتين: التكلفة والزمن، لأن تعريفات الأدوات تستهلك رموز مُدخل؛ وتدهور الدقة، لأن قدرة النموذج على اختيار الأداة الصحيحة تنخفض مع زيادة عدد الخيارات.

ابدأ بأصغر مجموعة من الدوال التي تحتاجها حالتك فعلياً.

افتراض أن النموذج لن يهلوس المعاملات. سيفعل ذلك.

قد يهلوس النموذج معاملات

— وخاصةً للحقول الاختيارية التي لا تحدها قيمة معدودة بوضوح. وهذا بالضبط سبب أهمية strict: true: فهي تزيل قدرة النموذج على اختراع حقول خارج مخططك.

عدم التعامل مع الحلقة متعددة الأدوار. غالباً ما يبني المطوّرون المسار المثالي — يسأل المستخدم، يستدعي النموذج دالة، انتهى.

قد تولّد النماذج استدعاءات دوال لا تطابق المخطط الذي عرّفته أو تحاول استدعاء دالة لم تقم بتضمينها. إذا كان النموذج يولّد استدعاءات غير متوقّعة، فجرّب تضمين جملة في رسالة النظام تقول "Only use the functions you have been provided with."

ابنِ مع الأخذ في الاعتبار الحالات الحدّية.

تجاوز خطوة التأكيد قبل عمليات الكتابة.

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

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

اعتبارات الأمان والموثوقية

يوسّع استدعاء الدوال ما يمكن لـ LLM فعله. كما يوسّع ما يمكن لمهاجم أن يدفعه لفعله.

التهديد الأساسي هنا هو حقن التعليمات.

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

عندما يمكن لاستدعاءاتك إرسال رسائل بريد إلكتروني، استعلام قواعد بيانات، أو إطلاق webhooks، فإن هجوماً بالحقن لا يعني مجرد خروج روبوت الدردشة عن النص — بل اختراقاً محتملاً.

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

استراتيجية التخفيف لها عدّة طبقات ملموسة.

صمّم سير العمل بحيث لا تقود البيانات غير الموثوقة سلوك الوكيل مباشرةً. استخرج فقط حقولاً منظّمة محددة — مثل القيم المعدودة أو JSON مُتحقق منه — للحد من مخاطر الحقن أثناء انتقالها بين العقد.

وفوق ذلك،

تحقق دائماً من استدعاءات الدوال التي يولّدها النموذج. يشمل ذلك التحقق من المعاملات، والدالة المستدعاه، والتأكد من أن الاستدعاء يتماشى مع الإجراء المقصود.

حقيقة غير مريحة:

"حقن التعليمات، تماماً مثل الاحتيال والهندسة الاجتماعية على الويب، من غير المرجّح أن يُحل بالكامل."

هذا تقييم OpenAI نفسها. الدلالة العملية هي أنه لا ينبغي لك تصميم أنظمة استدعاء دوال وكيليّة على افتراض أن النموذج سيتصرف دائماً كما هو مقصود. الدفاع بالعمق — التحقق، أذونات محدودة النطاق، وجود إنسان في الحلقة للعمليات المدمّرة — هو النهج الوحيد المعقول.

استدعاء الدوال مقابل هندسة التوجيهات — متى تستخدم أيهما

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

استدعاء الدوال مقابل هندسة التوجيهات

تنطوي هندسة التوجيهات على صياغة مُدخلات نصية لإرشاد تفكير النموذج الداخلي — كأن تطلب منه "think step-by-step"، مثلاً.

إنها تشكّل كيفية تفكير النموذج. أما استدعاء الدوال، من ناحية أخرى، فيشكّل ما ينتجه النموذج كمخرجات ويوجّهه مباشرةً إلى نظامك.

استدعاء الأدوات هو القدرة التي تتيح للـ LLM التفاعل مع الأنظمة الخارجية. وبينما تستخدم هندسة التوجيهات لمساعدة النموذج على تقرير أي أداة يستخدم، فإن استدعاء الأدوات هو الآلية التي تنفّذ الإجراء فعلياً. من المرجّح أنك ستحتاج إلى كليهما، لكنهما يؤديان أغراضاً مختلفة.

ميزة تقنية رئيسية لاستدعاء الدوال مقارنة بمخرجات منظّمة تستند إلى التوجيهات:

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

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

واجهات استدعاء الدوال، المدعومة الآن أصلاً في العديد من منصات LLM، توفّر واجهة مدفوعة بالمخطط تُمكّن من التحقق الصارم من البيانات والتكامل مع سير عمل برمجي.

هذا هو السبب الواقعي لاختيارها على هندسة التوجيهات لأي بيانات يجب أن تتدفق إلى أنظمة لاحقة: الموثوقية ليست اختيارية بمجرد أن تكون في الإنتاج.

DimensionPrompt EngineeringFunction Calling
Primary purposeتشكيل تفكير النموذج ونبرتهإنتاج مخرجات منظّمة للتكامل مع الأنظمة
Output formatنص حر (أو JSON يُشبه النص)مخطط JSON مفروض
Schema reliabilityجهدٌ أفضل ما يمكن؛ معرّض للانحرافمضمون مع strict: true
Token costأقل للخرج البسيطأعلى (تعريفات الدوال تضيف رموزاً)
When to useمهام الاستدلال، توليد النص، التحكّم بالأسلوباستخراج بيانات منظّمة، تنسيق استدعاءات API، إجراءات وكيليّة
Prompt injection exposureأقل (لا استدعاء لأدوات خارجية)أعلى (استدعاءات الدوال قد تطلق إجراءات في العالم الحقيقي)

القاعدة العملية: إذا كان المخرج سيقود نظاماً لاحقاً — كتابة إلى قاعدة بيانات، استدعاء API، أو تفرّع قرار في شيفرتك — فاستخدم استدعاء الدوال. إذا كان المخرج موجهاً للقراءة من قبل الإنسان، تكون هندسة التوجيهات عادةً كافية وأقل تكلفة.

الخلاصة

TopicWhat to Remember
What it isيعيد النموذج JSON منظّماً يصف أي دالة يجب استدعاؤها — ولا ينفّذ الدالة بنفسه
Current API surfaceاستخدم tools وtool_choice؛ المعلمتان functions وfunction_call مهملتان
Strict modeاضبط دائماً strict: true في تعريفات الدوال لفرض الالتزام بالمخطط
Parallel callingمدعوم في النماذج الصادرة بعد نوفمبر 2023؛ يمكن لطلب واحد إطلاق استدعاءات متعددة بالتوازي
Token costتستهلك مخططات الدوال رموز المُدخل؛ قلّل عدد الدوال المكشوفة
Securityتحقّق من جميع استدعاءات الدوال؛ لا تسمح لمدخلات خارجية غير موثوقة بأن تقود الاستدعاءات مباشرةً
vs. Prompt Engineeringيفرض استدعاء الدوال بنية المخرجات على مستوى الواجهة؛ هندسة التوجيهات تشكّل التفكير الداخلي
Confirmation stepsأي دالة لها آثار في العالم الحقيقي (كتابة، إرسال، حذف) يجب أن تتطلب تأكيد المستخدم قبل التنفيذ

إذا أردت تجربة استدعاء الدوال عبر نماذج مختلفة — GPT-5.4، claude opus 4.7، gemini 3.1 pro — دون الحفاظ على بيانات اعتماد منفصلة لكل منها، فإن CometAPI يوفّر لك الوصول إلى جميعها عبر نقطة نهاية ومفتاح واحد، ما يجعل الاختبار عبر النماذج أقل احتكاكاً بكثير.

CometAPI يحل عبء البنية التحتية:

بناء جملة موحد لاستدعاء الدوال عبر أكثر من 15 نموذجاً

مفتاح API واحد — بلا حسابات منفصلة لـ OpenAI/Anthropic/Google

ترجمة مخططات تلقائية — اكتب مرةً واحدة، واختبر في كل مكان

تتبع تكلفة مدمج — قارن استخدام الرموز لكل نموذج في الوقت الفعلي

ابدأ الاختبار بأرصدة مجانيةاحصل على الوصول

هل أنت مستعد لخفض تكاليف تطوير الذكاء الاصطناعي بنسبة 20%؟

ابدأ مجاناً في دقائق. رصيد تجريبي مجاني مدرج. لا حاجة لبطاقة ائتمانية.

اقرأ المزيد