النقاط الرئيسية
ما يفعله: تنفيذ استرجاع البيانات في الوقت الفعلي، وعمليات النظام، وسير العمل الآلي.
أي النماذج تدعمه: سلسلة Llama 3، سلسلة GPT، Gemma 2، وMistral nemo.
كيفية التنفيذ: تثبيت واجهات API عبر “مكتبة النماذج” في Novita AI، ثم تنفيذها باستخدام إطار Langchain.
استدعاء الوظائف هو تقنية تعزز بشكل كبير قدرات نماذج اللغة الكبيرة (LLMs) من خلال تمكينها من التفاعل مع العالم الخارجي. بدلاً من مجرد إنشاء النص، يمكن لنماذج اللغة الكبيرة استخدام استدعاء الوظائف لتنفيذ مهام محددة، والوصول إلى المعلومات في الوقت الفعلي، وإجراء عمليات معقدة. ستستكشف هذه المقالة مفهوم استدعاء الوظائف، وتطبيقاته العملية، وكيف أن نماذج مثل Llama 3.3 70B تجعله أكثر سهولة.
ما المشكلات التي يمكن أن يحلها استدعاء الوظائف؟
- الوصول إلى المعلومات في الوقت الفعلي
- التحقق من أحدث أسعار الأسهم
- الحصول على بيانات الطقس الحالية
- الوصول إلى الأخبار العاجلة
- التفاعلات مع الأنظمة
- إرسال رسائل البريد الإلكتروني
- النشر على وسائل التواصل الاجتماعي
- الاستعلام عن قواعد البيانات والكتابة إليها
- أتمتة سير العمل
- استخراج البيانات ومعالجتها
- تنفيذ المهام متعددة الخطوات
- أتمتة التحليلات المعقدة
- دقة البيانات
- ضمان توقيت المعلومات
- توفير نتائج استعلام دقيقة
- تقليل أخطاء البيانات القديمة
ما هو استدعاء الوظائف؟
في جوهره، استدعاء الوظائف هو قدرة نموذج اللغة الكبير على التعرف عندما تتطلب مهمة محددة وظيفة أو أداة خارجية، ثم إخراج بيانات منظمة (عادةً بتنسيق JSON) لتنفيذ الوظيفة. تتضمن هذه البيانات المنظمة اسم الوظيفة وأي وسائط ضرورية. بشكل أساسي، يعمل استدعاء الوظائف كجسر بين المعرفة الواسعة للذكاء الاصطناعي والإجراءات الملموسة. إنه يمكّن وكلاء الذكاء الاصطناعي أو روبوتات المحادثة من أداء مهام محددة أو الوصول إلى البيانات والخدمات الخارجية.
النماذج المدعومة لاستدعاء الوظائف
العديد من نماذج اللغة الكبيرة والمنصات تدعم الآن استدعاء الوظائف. يمكنك تثبيت واجهة API عبر صفحة “مكتبة النماذج” في Novita AI، وتنفيذ استدعاء الوظائف عبر langchain.

- Llama 3.3: إصدار 70 مليار معلمة أظهر أداءً قويًا في اختبارات استدعاء الوظائف من خلال تحديد متى وأي الوظائف يجب استدعاؤها بناءً على طلبات المستخدم.
- Mistral: نماذج مثل Mistral-Large-2 تظهر نجاحًا في استدعاء الوظائف ضمن بيئات مثل watsonx.ai.
- Gemini: نماذج Gemini من Google تدعم أيضًا استدعاء الوظائف مع أمثلة استخدام متنوعة متاحة.
كيف يعمل استدعاء الوظائف؟
- إعلان الوظيفة: تبدأ العملية بتعريف كتل قابلة لإعادة الاستخدام من الكود تُعرف بالوظائف، إلى جانب أوصاف لقدراتها ومدخلاتها ومخرجاتها.
- إرسال المطالبة: يقدم المستخدم مطالبة إلى نموذج اللغة الكبير مع مجموعة من إعلانات الوظائف. وهذا يخبر النموذج عن الأدوات المتاحة.
- تحليل النموذج: يحلل نموذج اللغة الكبير المطالبة ويحدد ما إذا كان يحتاج إلى استدعاء أي من الوظائف المقدمة لتلبية الطلب.
- إخراج منظم: إذا كانت هناك حاجة إلى استدعاء وظيفة، يُنشئ نموذج اللغة الكبير إخراجًا منظمًا بتنسيق JSON يتضمن اسم الوظيفة وقيم معلماتها.
- استدعاء الوظيفة: يستخدم التطبيق أو النظام هذا الإخراج المنظم لاستدعاء الوظيفة المحددة مع تمرير المعلمات.
- تنفيذ الوظيفة: تنفذ الخدمة الخارجية أو واجهة API الوظيفة باستخدام المعلمات المقدمة.
- إخراج الرد: ترسل الخدمة الخارجية تأكيدًا أو نتيجة إلى الذكاء الاصطناعي.
- استجابة النموذج: يستخدم نموذج اللغة الكبير هذا الإخراج لإنشاء رد باللغة الطبيعية للمستخدم أو لمزيد من المعالجة.
- لاحظ أن النموذج لا يستدعي الوظيفة مباشرة؛ بدلاً من ذلك، يتم استخدام إخراجه المنظم بواسطة برنامج خارجي للقيام بذلك.
https://www.youtube.com/watch?v=Qor2VZoBib0
استدعاء الوظائف مقابل وضع JSON

فوائد استدعاء الوظائف
- زيادة الكفاءة: يؤدي استدعاء الوظائف مباشرة إلى أوقات معالجة أسرع وتقليل زمن الوصول، وهو أمر بالغ الأهمية للتطبيقات التي تتطلب إجراءً فوريًا.
- مرونة محسنة: يمكن للمطورين تحديث الوظائف أو تعديلها بسهولة دون إعادة هيكلة التطبيقات بأكملها، مما يتيح التعديلات السريعة على المتطلبات الجديدة.
- قابلية التوسع: يسهل قابلية التوسع من خلال السماح بإضافة وظائف جديدة دون تغييرات واسعة في البنية التحتية الحالية.
- تفاعلات مخصصة: يسمح بتجارب مستخدم مخصصة؛ على سبيل المثال، الوصول إلى تقويم المستخدم لاقتراح أوقات الاجتماعات التي لا تتعارض مع المواعيد الحالية.
- جسر بين الذكاء الاصطناعي والإجراءات الواقعية: يمكن الذكاء الاصطناعي من أداء مهام عملية مثل إرسال رسائل البريد الإلكتروني أو النصوص نيابة عن المستخدمين.
- وكلاء محادثة معقدون: يمكن إنشاء روبوتات محادثة متطورة تجيب على الأسئلة المعقدة باستخدام واجهات API الخارجية وقواعد المعرفة للحصول على ردود ذات صلة.
التطبيقات العملية لاستدعاء الوظائف
- وكلاء المحادثة: تستخدم في روبوتات المحادثة المتقدمة التي تستخدم واجهات API خارجية للحصول على معلومات محدثة.
- فهم اللغة الطبيعية: يستخرج البيانات المنظمة من النص لمهام مثل التعرف على الكيانات وتحليل المشاعر.
- تكامل واجهة API: يمكن نماذج اللغة الكبيرة من التكامل مع واجهات API الخارجية لجلب البيانات أو تنفيذ الإجراءات بناءً على إدخال المستخدم.
- المساعدة المالية: بناء مستشارين ماليين بالذكاء الاصطناعي يصلون إلى البيانات المالية في الوقت الفعلي ويقدمون نصائح مخصصة.
- أتمتة تذاكر الدعم: أتمتة تعيين تذاكر الدعم من خلال معالجة التذاكر باستخدام قواعد تعتمد على السياق.
- استرجاع المعرفة: يساعد في استرجاع المعلومات من قواعد المعرفة عن طريق إنشاء وظائف تلخص المقالات الأكاديمية للإجابة على الأسئلة وتقديم الاقتباسات.
- التطبيقات متعددة الوسائط: يؤدي إلى تشغيل الوظائف بناءً على الصور ومقاطع الفيديو والصوت وملفات PDF.
كيفية استخدام استدعاء الوظائف لـ Llama 3.3 70B عبر Novita AI
الخطوة 1: احصل على مفتاح API وقم بتثبيته!
ادخل إلى صفحة “إدارة المفاتيح”، يمكنك نسخ مفتاح API كما هو موضح في الصورة.

يمكنك العثور على صفحة “مكتبة النماذج” في Novita AI. قم بتثبيت واجهة API الخاصة بـ Novita AI باستخدام مدير الحزم المخصص للغة البرمجة الخاصة بك.

عند التسجيل، تمنحك Novita AI رصيدًا بقيمة 0.5 دولار لتبدأ!
إذا نفد الرصيد المجاني، يمكنك الدفع لمواصلة الاستخدام.
الخطوة 2: استخدم Langchain لتنفيذ استدعاء الوظائف
سنقوم بإنشاء تطبيق رياضي بسيط يمكنه إجراء عمليات الجمع والضرب.
💡 على الرغم من أن هذا الدليل يستخدم LangChain للراحة، فإن تنفيذ استدعاء الوظائف لا يتطلب أي إطار عمل محدد. المفتاح هو في تصميم المطالبات الصحيحة لجعل النموذج يفهم ويستدعي الوظائف بشكل صحيح. يُستخدم LangChain هنا فقط لتبسيط التنفيذ.
المتطلبات الأساسية
أولاً، قم بتثبيت الحزم المطلوبة:
pip install langchain-openai python-dotenv
إعداد البيئة
أنشئ ملف .env في جذر مشروعك وأضف مفتاح API الخاص بـ Novita AI:
NOVITA_API_KEY=your_api_key_here
خطوات التنفيذ
1. تعريف الأدوات
أولاً، لنقم بإنشاء أداتين رياضيتين بسيطتين باستخدام مزخرف @tool من LangChain:
from langchain_core.tools import tool
@tool
def multiply(x: float, y: float) -> float:
"""ضرب رقمين معًا."""
return x * y
@tool
def add(x: int, y: int) -> int:
"""جمع رقمين."""
return x + y
tools = [multiply, add]
2. إنشاء دالة تنفيذ الأداة
بعد ذلك، قم بتنفيذ دالة لتنفيذ الأدوات:
from typing import Any, Dict, Optional, TypedDict
from langchain_core.runnables import RunnableConfig
class ToolCallRequest(TypedDict):
name: str
arguments: Dict[str, Any]
def invoke_tool(
tool_call_request: ToolCallRequest,
config: Optional[RunnableConfig] = None
):
"""تنفيذ الأداة المحددة مع الوسائط المعطاة."""
tool_name_to_tool = {tool.name: tool for tool in tools}
name = tool_call_request["name"]
requested_tool = tool_name_to_tool[name]
return requested_tool.invoke(tool_call_request["arguments"], config=config)
3. إعداد سلسلة LangChain
قم بإنشاء سلسلة تستخدم نموذج اللغة الكبير من Novita AI لاختيار وإعداد استدعاءات الأدوات:
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.tools import render_text_description
def create_chain():
"""إنشاء سلسلة تستخدم نموذج اللغة المحدد لاختيار وإعداد استدعاءات الأدوات."""
model = ChatOpenAI(
model="meta-llama/llama-3.3-70b-instruct",
api_key=os.getenv("NOVITA_API_KEY"),
base_url="https://api.novita.ai/v3/openai",
)
rendered_tools = render_text_description(tools)
system_prompt = f"""\
أنت مساعد لديه إمكانية الوصول إلى مجموعة الأدوات التالية.
فيما يلي أسماء وأوصاف كل أداة:
{rendered_tools}
بالنظر إلى إدخال المستخدم، أعد اسم الأداة ومدخلاتها لاستخدامها.
أعد ردك كقطعة JSON تحتوي على المفتاحين 'name' و 'arguments'.
يجب أن تكون `arguments` قاموسًا، بحيث تتوافق المفاتيح مع أسماء الوسائط
والقيم مع القيم المطلوبة.
"""
prompt = ChatPromptTemplate.from_messages(
[("system", system_prompt), ("user", "{input}")]
)
return prompt | model | JsonOutputParser()
4. إنشاء دالة المعالجة الرئيسية
قم بتنفيذ الدالة الرئيسية التي تعالج الاستعلامات الرياضية:
def process_math_query(query: str):
"""معالجة استعلام رياضي باستخدام نموذج لغوي كبير لاختيار الأداة المناسبة وتنفيذها."""
chain = create_chain()
message = chain.invoke({"input": query})
result = invoke_tool(message, config=None)
return message, result
5. مثال الاستخدام
إليك كيفية استخدام التنفيذ:
if __name__ == "__main__":
message, result = process_math_query(
"meta-llama/llama-3.3-70b-instruct",
"what's 3 plus 1132"
)
print(result) # Output: 1135
في الختام، يُحدث استدعاء الوظائف تحولًا سريعًا في كيفية تفاعل أنظمة الذكاء الاصطناعي مع بيئتها، مما يتيح تطبيقات أكثر عملية وكفاءة وسهولة في الاستخدام. نماذج مثل Llama 3.3 70B تمهد الطريق لوصول أسهل إلى هذه التكنولوجيا القوية، مما يفتح العديد من الاحتمالات لتطوير الذكاء الاصطناعي.
الأسئلة الشائعة
ما هو استدعاء الوظائف في سياق نماذج اللغة الكبيرة؟
استدعاء الوظائف هو تقنية تسمح لنماذج اللغة الكبيرة بالتعرف عندما تتطلب مهمة محددة وظيفة أو أداة خارجية وإنشاء بيانات منظمة لتنفيذ تلك الوظيفة.
ما هي الفوائد الرئيسية لاستخدام استدعاء الوظائف؟
تشمل الفوائد الرئيسية زيادة الكفاءة في معالجة المهام، ومرونة محسنة للمطورين لتحديث الوظائف بسهولة، وقابلية التوسع لإضافة وظائف جديدة دون تغييرات واسعة، وتفاعلات مستخدم مخصصة.
ما اللغات التي يدعمها Llama 3.3؟
الإنجليزية، الفرنسية، الألمانية، الهندية، الإيطالية، البرتغالية، الإسبانية، والتايلاندية
Novita AI هي منصة سحابية للذكاء الاصطناعي تقدم للمطورين طريقة سهلة لنشر نماذج الذكاء الاصطناعي باستخدام واجهة API البسيطة الخاصة بنا، مع توفير سحابة GPU ميسورة التكلفة وموثوقة للبناء والتوسع.
