استدعاء الدوال في النماذج المفتوحة (Hermes وFunctionary)
لا تستطيع معظم النماذج المفتوحة الأساسية استدعاء الأدوات جيدًا؛ أما Hermes وFunctionary فمضبوطان بدقة لهذا الغرض.
استدعاء الدوال في النماذج المفتوحة (Hermes وFunctionary) درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.
لا تستطيع النماذج الأساسية استدعاء الأدوات بشكل موثوق
يمكن توجيه نماذج Llama أو Mistral أو Qwen الأساسية العادية لإرجاع "JSON مثل {...}"، لكنها غالبًا ما تنتج مخرجات غير صحيحة البنية، أو تُسقط الوسائط، أو تختلق أدوات.
تحل عمليات الضبط الدقيق لاستدعاء الدوال هذه المشكلة.
عائلة Hermes
تُعد نماذج Hermes من NousResearch من أفضل النماذج المضبوطة دقيقًا لاستدعاء الدوال:
- Hermes 3 Llama 3.1 8B / 70B
- دقة عالية في استدعاء الأدوات
- ترخيص متساهل على نمط Apache
Functionary
تُدرَّب نماذج Functionary من MeetKai خصيصًا لاستدعاء الدوال المتوافق مع OpenAI:
- Functionary v3، المبني على Llama 3.1
- دعم استدعاءات الأدوات المتوازية
- متاحة على HuggingFace وTogether AI
الاستخدام الأصلي للأدوات في Llama 3.1+
تتضمن إصدارات instruct الحديثة من Llama 3.1 وLlama 3.3 وLlama 4 إمكانات مدمجة لاستدعاء الأدوات. وهي كافية للعديد من المهام؛ أما الحالات الصعبة فاستخدموا Hermes أو Functionary.
استخدام الأدوات في Qwen 2.5
يتمتع Qwen 2.5 بقدرة أصلية قوية على استدعاء الأدوات، وينافس النماذج المغلقة. وغالبًا ما يكون الخيار الافتراضي للوكلاء متعددي اللغات المستضافين ذاتيًا.
استدعاء النماذج المفتوحة القادرة على استخدام الأدوات
يقبل أي خادم متوافق مع OpenAI، مثل Ollama أو vLLM أو Together AI، المعامل tools نفسه:
from openai import OpenAI
client = OpenAI(base_url='http://localhost:11434/v1', api_key='ollama')
tools = [{'type': 'function', 'function': {
'name': 'get_weather',
'description': 'Current weather',
'parameters': {'type': 'object', 'properties': {'city': {'type': 'string'}}, 'required': ['city']}
}}]
response = client.chat.completions.create(
model='hermes3:8b',
messages=[{'role': 'user', 'content': 'Weather in Paris?'}],
tools=tools
)تحققوا من المخرجات بعناية
تفشل استدعاءات الأدوات في النماذج المفتوحة بوتيرة أعلى من النماذج المغلقة. احرصوا دائمًا على ما يلي:
- تحليل JSON داخل try/except
- التحقق باستخدام Pydantic
- إضافة حلقة لإصلاح المخرجات
فرض استدعاءات الأدوات باستخدام Outlines
لضمان الحصول على مخرجات منظمة من النماذج المفتوحة، استخدموا Outlines لفك الترميز المقيّد بالقواعد النحوية:
import outlines
model = outlines.models.transformers('meta-llama/Llama-3.1-8B-Instruct')
generator = outlines.generate.json(model, ToolCall)
result = generator(prompt)استخدام الأدوات في Hugging Face TGI
يدعم TGI استخدام الأدوات بأسلوب OpenAI للعديد من النماذج المفتوحة — وهو بديل مباشر.
قياس جودة استخدام الأدوات
يُقاس استدعاء الأدوات باستخدام ما يلي:
- Berkeley Function Calling Leaderboard (BFCL) — التصنيف المرجعي
- ToolBench — تغطية أوسع
- API-Bank — سيناريوهات متعددة الأدوات
حزمة افتراضية معقولة
التركيبة التي تستقر عليها معظم الفرق:
- Llama 3.1 8B Instruct للعمل العام للوكلاء
- Qwen 2.5 Coder لوكلاء التعليمات البرمجية
- Hermes 3 للوكلاء الذين يعتمدون بكثافة على الأدوات
- Outlines أو Instructor لضمان المخرجات المنظمة
التشغيل عبر مورّد مُدار
لعدم استخدام أي بنية تحتية: تستضيف Together AI وFireworks وAnyscale نماذج Hermes وFunctionary وLlama وQwen عبر واجهات API متوافقة مع OpenAI. وتكون التكلفة أقل من OpenAI لجودة مماثلة.
مثال على مقارنة التكلفة
التكلفة التقريبية لكل مليون رمز، في منتصف عام 2025:
- GPT-4o: $2.50 للإدخال، و$10 للإخراج
- Llama 3.1 70B (Together AI): $0.88 للإدخال، و$0.88 للإخراج
- Llama 8B مستضاف ذاتيًا: $0، أي تكلفة الكهرباء لديكم
لماذا نستخدم النماذج المضبوطة دقيقًا لاستدعاء الدوال؟
لماذا نستخدم Hermes أو Functionary بدلًا من Llama الأساسي لاستدعاء الأدوات؟
خلاصة
يوفر Llama وQwen الحديثان استخدامًا أصليًا مقبولًا للأدوات. وللحصول على موثوقية أعلى، استخدموا Hermes أو Functionary. واجمعوا ذلك مع Outlines أو Instructor لضمان البنية.
الأسئلة الشائعة
هل درس «استدعاء الدوال في النماذج المفتوحة (Hermes وFunctionary)» مجاني؟
نعم — نص درس «استدعاء الدوال في النماذج المفتوحة (Hermes وFunctionary)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.
ماذا ستتعلم في «استدعاء الدوال في النماذج المفتوحة (Hermes وFunctionary)»؟
لا تستطيع معظم النماذج المفتوحة الأساسية استدعاء الأدوات جيدًا؛ أما Hermes وFunctionary فمضبوطان بدقة لهذا الغرض. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟
لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «استدعاء الدوال في النماذج المفتوحة (Hermes وFunctionary)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟
نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- نظرة عامة على Llama وMistral وQwen
- تشغيل النماذج المحلية باستخدام Ollama وllama.cpp
- استدعاء الدوال في النماذج المفتوحة (Hermes وFunctionary)
- المفاضلات: زمن الاستجابة والتكلفة والقدرة