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

تعريف الأداة الأساسي

عرّف الأدوات باستخدام مصفوفة tools المتوافقة مع OpenAI:
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["VENICE_API_KEY"],
    base_url="https://api.venice.ai/api/v1",
)

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather in a location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "City and state, such as San Francisco, CA",
                    }
                },
                "required": ["location"],
            },
        },
    }
]

response = client.chat.completions.create(
    model="zai-org-glm-5",
    messages=[{"role": "user", "content": "What is the weather in San Francisco?"}],
    tools=tools,
)

print(response.choices[0].message.tool_calls)
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.VENICE_API_KEY,
  baseURL: "https://api.venice.ai/api/v1",
});

const tools = [
  {
    type: "function",
    function: {
      name: "get_weather",
      description: "Get the current weather in a location",
      parameters: {
        type: "object",
        properties: {
          location: {
            type: "string",
            description: "City and state, such as San Francisco, CA",
          },
        },
        required: ["location"],
      },
    },
  },
];

const response = await client.chat.completions.create({
  model: "zai-org-glm-5",
  messages: [{ role: "user", content: "What is the weather in San Francisco?" }],
  tools,
});

console.log(response.choices[0].message.tool_calls);
curl https://api.venice.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "zai-org-glm-5",
    "messages": [
      {"role": "user", "content": "What is the weather in San Francisco?"}
    ],
    "tools": [
      {
        "type": "function",
        "function": {
          "name": "get_weather",
          "description": "Get the current weather in a location",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "City and state, such as San Francisco, CA"
              }
            },
            "required": ["location"]
          }
        }
      }
    ]
  }'

تنفيذ الأداة

عندما يختار النموذج أداة، افحص message.tool_calls، وحلّل المعامِلات، ونفّذ دالة تطبيقك، ثم أرسل النتيجة مرة أخرى بوصفها رسالة tool.
Python
import json

message = response.choices[0].message
tool_call = message.tool_calls[0]
arguments = json.loads(tool_call.function.arguments)

weather = get_weather(arguments["location"])

follow_up = client.chat.completions.create(
    model="zai-org-glm-5",
    messages=[
        {"role": "user", "content": "What is the weather in San Francisco?"},
        message.model_dump(),
        {
            "role": "tool",
            "tool_call_id": tool_call.id,
            "content": json.dumps(weather),
        },
    ],
    tools=tools,
)

print(follow_up.choices[0].message.content)

اختيار النموذج

يعتمد دعم استدعاء الدوال على النموذج. استخدم صفحة النماذج النصية أو واجهة برمجة تطبيقات النماذج للعثور على النماذج التي تحمل supportsFunctionCalling.
تعامَل مع معامِلات الأدوات على أنها مدخلات غير موثوقة. تحقّق من صحّة المعامِلات قبل استخدامها في استعلامات قاعدة البيانات، أو أوامر الصدَفة، أو المدفوعات، أو أي عمليات ذات آثار جانبية.

نصائح للتصميم

  • اجعل أسماء الأدوات وأوصافها قصيرة وحرفية.
  • استخدم JSON Schema لتسهيل إنتاج معامِلات صحيحة من قِبل النموذج.
  • فضّل الأدوات الضيّقة ذات المدخلات الواضحة على أداة واحدة عريضة ذات سلوكيات اختيارية كثيرة.
  • أعِد نتائج أدوات موجزة بحيث يمتلك الجواب النهائي سياقًا كافيًا دون هدر الرموز.

موارد ذات صلة