كيفية استخدام استدعاء الدوال (Function Calling) لـ DeepSeek V3؟

كيفية استخدام استدعاء الدوال (Function Calling) لـ DeepSeek V3؟

النقاط الرئيسية

ما يفعله: يتيح استدعاء الدوال لنماذج الذكاء الاصطناعي التفاعل مع الأدوات الخارجية وواجهات برمجة التطبيقات (APIs)، وأداء مهام محددة، والوصول إلى البيانات في الوقت الفعلي لعمليات النظام وسير العمل الآلي.

النماذج المدعومة: سلسلة DeepSeek V3، وسلسلة GPT، وGemma 2، وMistral Nemo.

كيفية التنفيذ؟ يمكنك تثبيت API عبر Novita AI والتعلم من الوثائق.

يعزز استدعاء الدوال قدرة نماذج اللغات الكبيرة (LLMs) من خلال تمكين التفاعل مع العالم الخارجي. فإلى جانب توليد النصوص، يمكن لنماذج LLM تنفيذ المهام، والوصول إلى البيانات في الوقت الفعلي، وأداء عمليات معقدة. يعمل استدعاء الدوال كجسر بين المعرفة الذكاء الاصطناعي والمهام القابلة للتنفيذ، مما يمكّن وكلاء الذكاء الاصطناعي أو روبوتات الدردشة من التفاعل مع الأدوات والخدمات الخارجية. يتميز DeepSeek V3، وهو نموذج مفتوح المصدر قوي، بأدائه القوي وكفاءته.

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

يعزز استدعاء الدوال قدرة نماذج اللغات الكبيرة (LLMs) من خلال تمكين التفاعل مع العالم الخارجي. فإلى جانب توليد النصوص، يمكن لنماذج LLM تنفيذ المهام، والوصول إلى البيانات في الوقت الفعلي، وأداء عمليات معقدة. يعمل استدعاء الدوال كجسر بين المعرفة الذكاء الاصطناعي والمهام القابلة للتنفيذ، مما يمكّن وكلاء الذكاء الاصطناعي أو روبوتات الدردشة من التفاعل مع الأدوات والخدمات الخارجية. يتميز DeepSeek V3، وهو نموذج مفتوح المصدر قوي، بأدائه القوي وكفاءته.

كيف يعمل استدعاء الدوال

من Google Cloud

  1. إعلان الدالة: تعريف كتل قابلة لإعادة الاستخدام (دوال) مع وصف واضح لقدراتها ومدخلاتها ومخرجاتها.
  2. إرسال الطلب: تزويد النموذج اللغوي الكبير (LLM) بطلب ومجموعة من إعلانات الدوال لإبلاغه بالأدوات المتاحة.
  3. تحليل النموذج: يقيم النموذج اللغوي الكبير الطلب ويحدد ما إذا كان يجب استدعاء أي من الدوال المقدمة لتنفيذ الطلب.
  4. إخراج منظم: إذا كان استدعاء الدالة مطلوبًا، يولد النموذج اللغوي الكبير إخراجًا منظمًا بتنسيق JSON، مع تحديد اسم الدالة وقيم المعاملات.
  5. استدعاء الدالة: يستخدم التطبيق أو النظام الإخراج المنظم لاستدعاء الدالة المحددة، وتمرير المعاملات المطلوبة.
  6. تنفيذ الدالة: تقوم الخدمة الخارجية أو API بتنفيذ الدالة بناءً على المعاملات المقدمة.
  7. إخراج الرد: تعيد الخدمة الخارجية النتيجة أو التأكيد إلى الذكاء الاصطناعي.
  8. استجابة النموذج: يستخدم النموذج اللغوي الكبير الإخراج المستلم لإنشاء رد بلغة طبيعية للمستخدم أو لمزيد من المعالجة.

ما المشكلات التي يمكن أن يحلها استدعاء الدوال

الوصول إلى المعلومات في الوقت الفعلي

  • تحديثات أسعار الأسهم
  • استرجاع بيانات الطقس الحالية
  • الوصول إلى الأخبار العاجلة

التفاعلات مع الأنظمة

  • إرسال البريد الإلكتروني
  • النشر على وسائل التواصل الاجتماعي
  • الاستعلام عن قواعد البيانات والكتابة فيها

أتمتة سير العمل

  • تجريف البيانات ومعالجتها
  • تنفيذ المهام متعددة الخطوات
  • أتمتة التحليلات المعقدة

دقة البيانات

  • ضمان توقيت المعلومات
  • توفير نتائج استعلام دقيقة
  • تقليل أخطاء البيانات القديمة

تعزيز قدرات الذكاء الاصطناعي

  • تكامل API الديناميكي
  • تنفيذ المهام السياقية
  • أداء إجراءات في العالم الحقيقي

تحسين تجربة المستخدم

  • ردود مخصصة
  • إكمال المهام دون مغادرة المحادثة
  • دمج سلس للخدمات الخارجية

كيفية استخدام استدعاء الدوال في DeepSeek V3 عبر Novita AI

يشرح هذا الدليل كيفية استخدام استدعاء الدوال لاسترجاع معلومات الطقس الحالية لموقع يحدده المستخدم. سنمر عبر مثال كامل لرمز Python. للحصول على تنسيق API المحدد لاستدعاء الدوال، يُرجى الرجوع إلى مرجع API Create Chat Completion.

إحالة

احصل على رصيد بقيمة 20 دولارًا في Novita AI الآن!

  • تهيئة العميل

أولاً، تحتاج إلى تهيئة العميل باستخدام مفتاح Novita API الخاص بك.

from openai import OpenAI
import json

client = OpenAI(
    base_url="https://api.novita.ai/v3/openai",
    # احصل على مفتاح Novita AI API من: https://novita.ai/settings/key-management.
    api_key="<مفتاح Novita AI API الخاص بك>",
)

model = "deepseek/deepseek_v3"
  • تعريف الدالة المطلوب استدعاؤها

بعد ذلك، حدد دالة Python التي يمكن للنموذج استدعائها. في هذا المثال، هي دالة للحصول على معلومات الطقس.

# دالة مثال لمحاكاة جلب بيانات الطقس.
def get_weather(location):
    """يسترجع الطقس الحالي لموقع معين."""
    print("جاري استدعاء دالة get_weather مع الموقع: ", location)
    # في تطبيق حقيقي، ستستدعي API طقس خارجية هنا.
    # هذا مثال مبسط يعيد بيانات ثابتة.
    return json.dumps({"location": location, "temperature": "60 درجة فهرنهايت"})
  • بناء طلب API مع الأدوات ورسالة المستخدم

الآن، أنشئ طلب API إلى نقطة نهاية Novita. يتضمن هذا الطلب معامل tools، الذي يحدد الدوال التي يمكن للنموذج استخدامها، ورسالة المستخدم.

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "احصل على طقس موقع معين، يجب على المستخدم توفير موقع أولاً",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "المدينة والولاية، مثال: San Francisco, CA"
                    }
                },
                "required": ["location"]
            },
        }
    },
]

messages = [
    {
        "role": "user",
        "content": "ما هو الطقس في سان فرانسيسكو؟"
    }
]

# لنرسل الطلب ونطبع الرد.
response = client.chat.completions.create(
    model=model,
    messages=messages,
    tools=tools,
)

# يُرجى التحقق مما إذا كان الرد يحتوي على استدعاءات أدوات في حالة الإنتاج.
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.model_dump())
  • الإخراج
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}
  • الرد بنتيجة استدعاء الدالة والحصول على الإجابة النهائية

الخطوة التالية هي معالجة استدعاء الدالة، وتنفيذ دالة get_weather، وإرسال النتيجة مرة أخرى إلى النموذج لتوليد الرد النهائي للمستخدم.

# تأكد من تعريف tool_call من الخطوة السابقة
if tool_call:
    # توسيع سجل المحادثة برسالة استدعاء الأداة من المساعد
    messages.append(response.choices[0].message)

    function_name = tool_call.function.name
    if function_name == "get_weather":
        function_args = json.loads(tool_call.function.arguments)
        # تنفيذ الدالة والحصول على الرد
        function_response = get_weather(
            location=function_args.get("location"))
        # إلحاق رد الدالة بالرسائل
        messages.append(
            {
                "tool_call_id": tool_call.id,
                "role": "tool",
                "content": function_response,
            }
        )

    # الحصول على الرد النهائي من النموذج، الآن مع نتيجة الدالة
    answer_response = client.chat.completions.create(
        model=model,
        messages=messages,
        # ملاحظة: لا تقم بتضمين معامل tools هنا.
    )
    print(answer_response.choices[0].message)
  • الإخراج
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}

المشكلات الشائعة وأفضل الممارسات لاستدعاء الدوال

يمثل استدعاء الدوال في نماذج الذكاء الاصطناعي تحديات وفرصًا في نفس الوقت. فيما يلي مقارنة بين المشكلات الشائعة وأفضل الممارسات المقابلة:

  • التفسير غير الدقيق والطلبات الواضحة

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

أفضل ممارسة: قدم طلبات نظام واضحة وموجزة تصف غرض chatbot والوظائف المتاحة. استخدم جولات متعددة لإظهار كل من الردود المباشرة واستدعاءات الدوال المناسبة.

  • إدارة سير العمل المعقدة

المشكلة: صعوبة في إدارة سير العمل المعقدة بخطوات متعددة ومترابطة.

أفضل ممارسة: ابدأ بهندسة الطلبات قبل الانتقال إلى طرق أكثر تعقيدًا. ركز على الجودة بدلاً من الكمية عند الضبط الدقيق، وابدأ بمجموعة صغيرة من الأمثلة عالية الجودة.

  • اتخاذ القرار الدقيق

المشكلة: تحديات في تفسير مخرجات الدوال والبيانات الخارجية لاتخاذ القرارات الدقيقة.

أفضل ممارسة: استخدم التوليد المعزز بالاسترجاع (RAG) لحقن السياق عند الضرورة. اجمع بين تقنيات مثل الضبط الدقيق و RAG لموازنة نقاط القوة والضعف لكل منهما.

  • تعقيد بنية البيانات

المشكلة: قيود في العمل على هياكل بيانات معقدة ومتطورة مثل الرسوم البيانية والكائنات المتداخلة.

أفضل ممارسة: اختر المستوى المناسب من التجريد، مع موازنة الكود النظيف والأداء. حافظ على الدوال بسيطة ومركزة لتحسين الكفاءة وقابلية القراءة.

  • تكامل الأنظمة القديمة

المشكلة: صعوبات في التكامل عبر الأنظمة القديمة الفوضوية والغامضة.

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

  • مخاوف السلامة

المشكلة: مخاوف السلامة عند تنفيذ دوال مميزة دون حكم متطور.

أفضل ممارسة: تنفيذ آليات قوية لمعالجة الأخطاء لإدارة استجابات API غير المتوقعة. تأكد من تدابير قوية لحماية البيانات والامتثال للوائح لحماية ثقة المستخدم والمعلومات الحساسة.

  • قابلية التوسع والأداء

المشكلة: موثوقية غير مثبتة في تلبية احتياجات قابلية التوسع والتوافر والأداء الصارمة للأنظمة الحيوية.

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

  • الاعتماد المفرط على استدعاءات الدوال

المشكلة: قد تستدعي النماذج الدوال بشكل غير ضروري أو غير مناسب، حتى عندما لا تكون هناك حاجة.

أفضل ممارسة: إدارة كيفية تنفيذ استدعاءات الدوال بعناية. تأكد من وجود آليات مناسبة لمعالجة الأخطاء والرجوع للحفاظ على موثوقية النظام، حتى عندما تكون الخدمات الخارجية غير متوفرة.

  • مخاوف الخصوصية والشفافية

المشكلة: مخاوف أخلاقية حول الشفافية وموافقة المستخدم عندما تتخذ نماذج LLM قرارات أو إجراءات نيابة عن المستخدمين.

أفضل ممارسة: تنفيذ آليات واضحة للتوثيق وموافقة المستخدم. تأكد من أن معالجة البيانات مسؤولة ومتوافقة مع لوائح الخصوصية مثل GDPR أو HIPAA.

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

الأسئلة الشائعة

ما هو استدعاء الدوال في سياق نماذج LLM؟

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

ما هي الفوائد الرئيسية لاستخدام استدعاء الدوال؟

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

Novita AI هي المنصة السحابية الشاملة التي تمكن طموحاتك في الذكاء الاصطناعي. APIs متكاملة، بدون خوادم، مثيلات GPU — الأدوات الفعالة من حيث التكلفة التي تحتاجها. تخلص من البنية التحتية، ابدأ مجانًا، واجعل رؤيتك للذكاء الاصطناعي حقيقة.

قراءة موصى بها