أبرز النقاط
أطلقت Novita AI إصدار DeepSeek R1 Turbo، الذي يوفر إنتاجية أكبر بـ 3 مرات وخصمًا محدودًا بـ 60%. بالإضافة إلى ذلك، يدعم هذا الإصدار بالكامل استدعاء الدوال (Function Calling).
إذا كنت ترغب في اختبار أدائه، ابدأ تجربة مجانية مباشرة على Novita AI Playground!

ما هو استدعاء الدوال؟
استدعاء الدوال هي ميزة قوية تسمح لنماذج اللغة الكبيرة (LLMs) بالتفاعل مع الأنظمة الخارجية والكود الخاص بك بطريقة منظمة. بالإضافة إلى توليد النصوص، يمكن لنماذج LLM المزودة باستدعاء الدوال التعرف على متى يلزم إجراء محدد، وتوليد المعاملات المطلوبة، وتنفيذ المهام الواقعية. وهذا يجعل نماذج الذكاء الاصطناعي أكثر ديناميكية وعملية، مما يتيح التكامل السلس مع الأدوات الخارجية وواجهات API.
كيف يعمل استدعاء الدوال وما المشكلات التي يمكنه حلها؟
تتبع العملية تدفقًا بسيطًا ومنظمًا:
- يرسل المستخدم طلبًا إلى النموذج.
- يحلل النموذج الطلب ويقرر ما إذا كان استدعاء دالة مطلوبًا.
- إذا لزم الأمر، يولد النموذج استدعاء JSON منظم للدالة المناسبة، بما في ذلك اسم الدالة والمعاملات.
- يستقبل التطبيق هذا الاستدعاء وينفذ الدالة.
- تُعاد النتيجة إلى النموذج.
- يستخدم النموذج النتيجة لتوليد رد نهائي للمستخدم.
يمكن أن تتكرر هذه الدورة للمهام متعددة الخطوات أو المعقدة. يجب تعريف الأدوات (الدوال) بأسماء وأوصاف ومخططات JSON تحدد معاملاتها. لمزيد من التحقق، يمكن استخدام نماذج Pydantic لفرض سلامة الأنواع.
يوسع استدعاء الدوال قدرات نماذج LLM، ويعالج العديد من حالات الاستخدام العملية:
- استرجاع البيانات: تحويل الاستفسارات اللغوية إلى استدعاءات API للحصول على بيانات في الوقت الفعلي (مثل: “ما هي طلباتي الأخيرة؟”).
- تنفيذ الإجراءات: أداء مهام محددة (مثل: “جدولة اجتماع” يؤدي إلى استدعاء API التقويم).
- الحسابات: التعامل مع العمليات الحسابية أو التحليل الإحصائي (مثل: الفائدة المركبة).
- خطوط البيانات: ربط الدوال في سير عمل معقدة (مثل: جلب → معالجة → تخزين البيانات).
- التكامل مع واجهة المستخدم: تشغيل تحديثات الواجهة مثل علامات الخريطة أو الرسوم البيانية.
- العملاء التحادثيون: تمكين روبوتات المحادثة من استدعاء APIs للحصول على ردود ذات صلة (مثل: تحديثات الطقس).
- فهم اللغة الطبيعية: تحويل النص إلى بيانات منظمة أو استخراج المعلومات (مثل: تحليل المشاعر، التعرف على الكيانات المسماة).

كيفية استخدام استدعاء الدوال في DeepSeek R1 عبر Novita AI
أطلقت Novita AI دعمًا لوصف إمكانيات كل نموذج LLM، ويمكنك الاطلاع عليها مباشرة في وحدة التحكم والوثائق.


1. تهيئة العميل
أولاً، تحتاج إلى تهيئة العميل باستخدام مفتاح API الخاص بـ Novita.
from openai import OpenAI
import json
client = OpenAI(
base_url="https://api.novita.ai/v3/openai",
# احصل على مفتاح API من: https://novita.ai/settings/key-management.
api_key="<YOUR Novita AI API Key>",
)
model = "deepseek/deepseek_r1"
- تعريف الدالة التي سيتم استدعاؤها
بعد ذلك، قم بتعريف دالة Python التي يمكن للنموذج استدعاؤها. في هذا المثال، دالة للحصول على معلومات الطقس.
# دالة مثال لمحاكاة جلب بيانات الطقس.
def get_weather(location):
"""يسترد الطقس الحالي لموقع معين."""
print("Calling get_weather function with location: ", location)
# في التطبيق الحقيقي، ستقوم هنا باستدعاء API خارجي للطقس.
# هذا مثال مبسط يعيد بيانات ثابتة.
return json.dumps({"location": location, "temperature": "60 degrees Fahrenheit"})
2. بناء طلب API مع الأدوات ورسالة المستخدم
الآن، قم بإنشاء طلب API إلى نقطة نهاية Novita. يشمل هذا الطلب معامل tools، الذي يحدد الدوال التي يمكن للنموذج استخدامها، ورسالة المستخدم.
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather of an location, the user shoud supply a location first",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
}
},
"required": ["location"]
},
}
},
]
messages = [
{
"role": "user",
"content": "What is the weather in San Francisco?"
}
]
# لنرسل الطلب ونطبع الرد.
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())
3. المخرجات
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}
4. الرد بنتيجة استدعاء الدالة والحصول على الإجابة النهائية
الخطوة التالية هي معالجة استدعاء الدالة، وتنفيذ دالة 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)
5. المخرجات
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}
الأسئلة الشائعة
ما أنواع الدوال التي يمكن استدعاؤها؟
يمكنك تعريف أي دالة تقريبًا يمكن لتطبيقك تنفيذها، مما يسمح لنماذج LLM بالتفاعل مع قواعد البيانات وواجهات API والمنطق الداخلي.
هل يقوم استدعاء الدوال بتنفيذ الكود فعليًا؟
لا، عندما يقرر النموذج استدعاء دالة، فإنه يخرج فقط كائن JSON منظمًا يحتوي على اسم الدالة والمعاملات الضرورية.
هل يدعم DeepSeek R1 استدعاء الدوال؟
نعم! أطلقت Novita AI إصدار DeepSeek R1 Turbo، الذي يوفر إنتاجية أكبر بـ 3 مرات وخصمًا محدودًا بـ 20%. بالإضافة إلى ذلك، يدعم هذا الإصدار بالكامل استدعاء الدوال.
Novita AI هي منصة سحابية شاملة تمكن طموحاتك في الذكاء الاصطناعي. واجهات API متكاملة، خوادم بدون خادم، مثيلات GPU — الأدوات الفعالة من حيث التكلفة التي تحتاجها. تخلص من البنية التحتية، ابدأ مجانًا، وحقق رؤيتك في الذكاء الاصطناعي.
