الجمع بين الأدوات المضمّنة واستدعاء الدوال

يتيح Gemini الجمع بين الأدوات المضمّنة، مثل google_search، وميزة استدعاء الدوال (المعروفة أيضًا باسم الأدوات المخصّصة) في تفاعل واحد من خلال الاحتفاظ بسجلّ سياق طلبات الأدوات وعرضه. تسمح مجموعات الأدوات المضمّنة والمخصّصة بإنشاء عمليات سير عمل معقّدة ووكيلية، حيث يمكن للنموذج، على سبيل المثال، أن يستند إلى بيانات الويب في الوقت الفعلي قبل استدعاء منطق نشاطك التجاري المحدّد.

في ما يلي مثال يوضّح كيفية تفعيل مجموعات الأدوات المضمّنة والمخصّصة باستخدام google_search ودالة مخصّصة getWeather:

Python

# This will only work for SDK newer than 2.0.0
from google import genai

client = genai.Client()

getWeather = {
    "type": "function",
    "name": "getWeather",
    "description": "Gets the weather for a requested city.",
    "parameters": {
        "type": "object",
        "properties": {
            "city": {
                "type": "string",
                "description": "The city and state, e.g. Utqiaġvik, Alaska",
            },
        },
        "required": ["city"],
    },
}

# The Interactions API manages context automatically across tool calls.
# The model will first use Google Search, then call getWeather.
interaction = client.interactions.create(
    model="gemini-3.6-flash",
    input="What is the northernmost city in the United States? What's the weather like there today?",
    tools=[
        {"type": "google_search"},
        getWeather,
    ],
)

# Process steps: the interaction contains search results and a function call
for step in interaction.steps:
    if step.type == "function_call":
        print(f"Function call: {step.name} with args: {step.arguments}")
        # In a real application, you would execute the function here
        # and provide the result back to the model.

JavaScript

// This will only work for SDK newer than 2.0.0
import { GoogleGenAI } from '@google/genai';

const client = new GoogleGenAI({});

const getWeather = {
    type: "function",
    name: "getWeather",
    description: "Get the weather in a given location",
    parameters: {
        type: "object",
        properties: {
            location: {
                type: "string",
                description: "The city and state, e.g. San Francisco, CA"
            }
        },
        required: ["location"]
    }
};

// The Interactions API manages context automatically across tool calls.
// The model will first use Google Search, then call getWeather.
const interaction = await client.interactions.create({
    model: "gemini-3.6-flash",
    input: "What is the northernmost city in the United States? What's the weather like there today?",
    tools: [
        { type: "google_search" },
        getWeather,
    ],
});

// Process steps: the interaction contains search results and a function call
for (const step of interaction.steps) {
    if (step.type === "function_call") {
        console.log(`Function call: ${step.name} with args: ${JSON.stringify(step.arguments)}`);
        // In a real application, you would execute the function here
        // and provide the result back to the model.
    }
}

REST

# Specifies the API revision to avoid breaking changes when they become default
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
  "model": "gemini-3.6-flash",
  "input": "What is the northernmost city in the United States? What'\''s the weather like there today?",
  "tools": [
    { "type": "google_search" },
    {
      "type": "function",
      "name": "getWeather",
      "description": "Get the weather in a given location",
      "parameters": {
          "type": "object",
          "properties": {
              "location": {
                  "type": "string",
                  "description": "The city and state, e.g. San Francisco, CA"
              }
          },
          "required": ["location"]
      }
    }
  ]
}'

آلية العمل

تستخدم نماذج Gemini 3 ميزة تداول سياق الأداة لتفعيل مجموعات الأدوات المضمّنة والمخصّصة. تتيح ميزة تداول سياق الأداة الاحتفاظ بسياق الأدوات المضمّنة وعرضه ومشاركته مع الأدوات المخصّصة في التفاعل نفسه.

تفعيل ميزة الجمع بين الأدوات

  • يمكنك تضمين function_declarations، بالإضافة إلى الأدوات المضمّنة التي تريد استخدامها، لتفعيل سلوك الجمع بين الأدوات.

الخطوات التي تعرضها واجهة برمجة التطبيقات

في ردّ التفاعل، تعرض واجهة برمجة التطبيقات خطوات منفصلة لطلبات الأدوات المضمّنة وطلبات الدوال (الأدوات المخصّصة):

  • خطوات الأداة المضمّنة: تدير واجهة برمجة التطبيقات هذه الخطوات تلقائيًا، مع الاحتفاظ بـ السياق خلال الردود.
  • خطوات استدعاء الدالة: تعرض واجهة برمجة التطبيقات خطوات function_call لدوالك المخصّصة. يمكنك تنفيذ الدالة وتقديم النتيجة مرة أخرى.

الحقول المهمة في الخطوات المعروضة

تتسم بعض الحقول في الخطوات المعروضة بأهمية بالغة للحفاظ على سياق الأداة وتفعيل مجموعات الأدوات:

  • id: يظهر في خطوات function_call وfunction_response. وهو معرّف فريد يربط الطلب بالردّ.
  • signature: يظهر في خطوات thought، بالإضافة إلى جميع خطوات طلب الأداة (مثل function_call) وخطوات النتيجة (مثل function_response) لنماذج Gemini 3 والإصدارات الأحدث. يتيح هذا السياق المشفّر تداول سياق الأداة بين التفاعلات.

إدارة هذه الحقول:

  • الوضع الذي يحفظ الحالة (يُنصح به): عند استخدام previous_interaction_id، يعالج الخادم تلقائيًا كلاً من الحقلَين id وsignature.
  • الوضع الذي لا يحفظ الحالة: عند إدارة سجلّ المحادثات يدويًا، يجب التأكّد من تمرير الحقلَين id وsignature مرة أخرى إلى النموذج في الطلبات اللاحقة للتحقق من صحة المحتوى والحفاظ على السياق. تتعامل حِزم تطوير البرامج الرسمية مع هذه الخطوة تلقائيًا إذا مرّرت عنصر الردّ الكامل مرة أخرى إلى السجلّ.

البيانات الخاصة بالأداة

تعرض بعض الأدوات المضمّنة وسيطات بيانات مرئية للمستخدم خاصة بنوع الأداة.

الأداة وسيطات طلب الأداة المرئية للمستخدم (إن وُجدت) ردّ الأداة المرئي للمستخدم (إن وُجد)
google_search queries search_suggestions
google_maps queries places
google_maps_widget_context_token
url_context urls
عناوين URL التي سيتم تصفّحها
status: حالة التصفّح
retrieved_url: عناوين URL التي تم تصفّحها
file_search بدون بدون

الرموز والأسعار

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

تُستثنى أداة "بحث Google" من هذه القاعدة. تطبّق "بحث Google" نموذج التسعير الخاص بها على مستوى طلب البحث، لذا لا يتم تحصيل رسوم مضاعفة على الرموز (راجِع صفحة الأسعار).

لمزيد من المعلومات، يُرجى قراءة صفحة الرموز.

القيود

  • يتم تلقائيًا استخدام وضع validated (وضع auto غير متاح) عند تفعيل ميزة تداول سياق الأداة.
  • تعتمد الأدوات المضمّنة، مثل google_search، على معلومات الموقع الجغرافي والوقت الحالي، لذا إذا كانت system_instruction أو function_declaration.description تتضمّن معلومات متضاربة عن الموقع الجغرافي والوقت، قد لا تعمل ميزة الجمع بين الأدوات بشكل جيد.

الأدوات المتوافقة

ينطبق تداول سياق الأداة العادي على الأدوات من جهة الخادم (المضمّنة). تُعدّ ميزة "تنفيذ الرموز البرمجية" أيضًا أداة من جهة الخادم، ولكنها تتضمّن حلاً خاصًا بها لتداول السياق. تُعدّ ميزتا "استخدام الكمبيوتر" و"استدعاء الدوال" أداتَين من جهة العميل، وتتضمّنان أيضًا حلولاً مضمّنة لتداول السياق.

الأداة جهة التنفيذ إتاحة تداول السياق
بحث Google جهة الخادم متاح
خرائط Google جهة الخادم متاح
سياق عنوان URL جهة الخادم متاح
البحث عن الملفات جهة الخادم متاح
تنفيذ الرموز البرمجية جهة الخادم متاح (مضمّن، يستخدم خطوات code_execution وcode_execution_result)
استخدام الكمبيوتر من جهة العميل متاح (مضمّن، يستخدم خطوات function_call وfunction_response)
الدوال المخصّصة من جهة العميل متاح (مضمّن، يستخدم خطوات function_call وfunction_response)

الخطوات التالية