اختبر استدعاء الدوال والمخرجات المنظمة فورًا

اختبر استدعاء الدوال والمخرجات المنظمة فورًا

نماذج الذكاء الاصطناعي الحديثة تتطور لتتجاوز مجرد توليد النصوص. بفضل ميزات مثل Function Calling وStructured Outputs، يمكن للمطورين الآن بناء تطبيقات أكثر ذكاءً وموثوقية. في Novita AI، يمكنك الآن التحقق بسرعة مما إذا كان النموذج يدعم هذه الإمكانيات مباشرة داخل لوحة التحكم، مما يجعل التكامل أسرع وأكثر كفاءة.

ما هو Function Calling؟

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

https://www.youtube.com/watch?v=aqdWSYWC\_LI

كيف يعمل Function Calling؟

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

ما هي فوائد Function Calling؟

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

ما هو Structured Outputs؟

المخرجات المنظمة تشير إلى قدرة نماذج اللغات الكبيرة (LLMs) على توليد ردود تتوافق مع تنسيق محدد مسبقًا بدلاً من إنتاج نصوص حرة. هذه المخرجات عادةً ما تكون بتنسيقات قابلة للقراءة آليًا مثل JSON أو XML أو قوالب معبأة أو بيانات جدولية، مما يسهل تحليلها والتحقق من صحتها ودمجها في أنظمة البرمجيات أو سير العمل.

https://youtu.be/NGEZsqEUpC0

كيف يتم توليد Structured Outputs؟

  • تقنيات التوجيه (Prompting): يتم توجيه النموذج من خلال استفسارات مصممة بعناية لإنتاج مخرجات بالتنسيق المطلوب.
  • واجهات استدعاء الدوال (Function Calling APIs): بشكل أكثر متانة، يمكن توليد مخرجات منظمة باستخدام واجهات استدعاء الدوال حيث يُرجع النموذج وسائط تتوافق بدقة مع مخطط الدالة، وغالبًا ما يتم فرض ذلك عن طريق تعيين معاملات مثل strict: true.
  • توجيه آلة الحالات المحدودة (FSM): داخليًا، يمكن تقييد التوليد بحيث يلتزم كل رمز مميز (token) يتم إنتاجه بقواعد تنسيق المخرجات، مما يقلل الأخطاء في البنية.

حالات الاستخدام والفوائد

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

Function Calling و Structured Outputs

الجانب 🛠️ Function Calling 🗂️ Structured Outputs
الغرض تشغيل دالة خارجية إرجاع معلومات منظمة
التوجه موجه نحو الإجراء موجه نحو المعلومات
المخرجات اسم الدالة + الوسائط بيانات منظمة محددة مسبقًا (مثل JSON)
مثال استدعاء واجهة برمجة تطبيقات الطقس للحصول على التوقعات إرجاع تقرير طقس بتنسيق JSON
سيناريو الاستخدام عندما تحتاج النموذج لاتخاذ إجراء عندما تحتاج بيانات نظيفة وقابلة للتحليل بدون إجراء

كيفية التحقق من Function Calling و Structured Outputs على Novita AI؟

1: تسجيل الدخول إلى Novita AI

بمجرد وصولك إلى الصفحة الرئيسية لـ Novita AI، اضغط على زر “Log In” أو “Get Started” في الأعلى على اليمين. يمكنك تسجيل الدخول بسهولة باستخدام Google أو GitHub أو Hugging Face أو فقط بريدك الإلكتروني — الخيار لك!

تسجيل الدخول

تسجيل الدخول إلى Novita AI

جرب Novita AI الآن!

انقر على “Model API” في لوحة التحكم!

بعد تسجيل الدخول، سيتم توجيهك إلى لوحة تحكم Novita. من الأعلى، انقر على “Model API”. هذا القسم يمنحك الوصول إلى قائمة كاملة بالنماذج المتاحة، بالإضافة إلى معلومات مفصلة حول إمكانياتها — بما في ذلك ما إذا كانت تدعم Function Calling وStructured Outputs.

الخطوة 2: انقر على "Model API" في لوحة التحكم

اختر النموذج الخاص بك وتحقق منه!

ما عليك سوى العثور على النموذج الذي يهمك، والنقر عليه، وستظهر لوحة على اليمين. ضمن “Supported Capabilities”، سترى على الفور ما إذا كانت Function Calling وStructured Outputs مدعومة.

الخطوة 3: اختر النموذج الخاص بك وتحقق منه!

استدعاء الدوال على Novita AI

كيفية استخدام Function Calling على Novita AI؟

1. تهيئة العميل (Client)

أولاً، تحتاج إلى تهيئة العميل باستخدام مفتاح 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 = "meta-llama/llama-4-maverick-17b-128e-instruct-fp8"
  • تعريف الدالة التي سيتم استدعاؤها

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

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

2. إنشاء طلب 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'}

كيفية استخدام Structured Outputs على Novita AI؟

1. تهيئة العميل (Client)

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

from openai import OpenAI

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

# اذهب إلى صفحة [Models](https://novita.ai/models) لرؤية النماذج التي تدعم `Structured Outputs`.
model = "mistralai/mistral-7b-instruct"

2. تعريف مخطط JSON (Schema)

هذا المثال ينشئ مخططًا لاستخراج معلومات المصروفات من إدخال المستخدم.

# تعريف موجه النظام لتتبع المصروفات.
system_prompt = """You are an expense tracking assistant. 
Extract expense information from the user's input and format it according to the provided schema."""

# تعريف مخطط JSON للرد المنظم.
response_format = {
    "type": "json_schema",
    "json_schema": {
        "name": "expense_tracking_schema",
        "schema": {
            "type": "object",
            "properties": {
                "expenses": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "description": {
                                "type": "string",
                                "description": "Description of the expense"
                            },
                            "amount": {
                                "type": "number",
                                "description": "Amount spent in dollars"
                            },
                            "date": {
                                "type": "string",
                                "description": "When the expense occurred"
                            },
                            "category": {
                                "type": "string",
                                "description": "Category of expense (e.g., food, office, travel)"
                            }
                        },
                        "required": [
                            "description",
                            "amount"
                        ]
                    }
                },
                "total": {
                    "type": "number",
                    "description": "Total amount of all expenses"
                }
            },
            "required": [
                "expenses",
                "total"
            ],
        },
    },
}

3. طلب واجهة الدردشة (Chat Completion API)

الآن، قم بتقديم طلب إكمال الدردشة إلى نقطة نهاية Novita.

يتضمن هذا الطلب معامل response_format، الذي يحدد مخطط JSON الذي عرّفناه في الخطوة السابقة.

chat_completion = client.chat.completions.create(
    model=model,
    messages=[
        {
            "role": "system",
            "content": system_prompt,
        },
        {
            "role": "user",
            "content": """I spent $120 on dinner at an Italian restaurant last Friday with my colleagues.
Also bought office supplies for $45 on Monday.""",
        },
    ],
    max_tokens=1024,
    temperature=0.8,
    stream=False,
    response_format=response_format,
)

response_content = chat_completion.choices[0].message.content

# تحليل وتجميل JSON
try:
    json_response = json.loads(response_content)
    prettified_json = json.dumps(json_response, indent=2)
    print(prettified_json)
except json.JSONDecodeError:
    print("Could not parse response as JSON. Raw response:")
    print(response_content)

4. المخرجات:

{
  "expenses": [
    {
      "date": "2023-03-17",
      "description": "Dinner at Italian restaurant",
      "amount": 120,
      "category": "Food & Dining"
    },
    {
      "date": "2023-03-13",
      "description": "Office supplies",
      "amount": 45,
      "category": "Office Supplies"
    }
  ],
  "total": 165
}

Function Calling و Structured Outputs يوسعان بشكل كبير ما يمكن لنماذج الذكاء الاصطناعي فعله. سواء كنت بحاجة إلى أتمتة سير العمل، جلب بيانات في الوقت الفعلي، أو استخراج معلومات منظمة، فإن Novita AI تجعل من السهل العثور على نماذج تناسب احتياجاتك. ابدأ في بناء تطبيقات أذكى اليوم من خلال استكشاف النماذج في لوحة تحكم Novita!

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

ما هو Function Calling في نماذج الذكاء الاصطناعي؟

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

ما هو Structured Outputs؟

يشير Structured Outputs إلى ردود النموذج بتنسيقات صارمة قابلة للقراءة آليًا مثل JSON، وهي مثالية للتكامل السهل.

كيف يختلف Function Calling عن Structured Outputs؟

Function Calling موجه نحو الإجراء (مثل جلب الطقس)، بينما يركز Structured Outputs على إرجاع بيانات نظيفة ومنسقة.

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

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