Yerleşik araçları ve işlev çağrılarını birleştirme
Gemini, araç çağrılarının bağlam geçmişini koruyup ortaya çıkararak google_search gibi yerleşik araçların ve işlev çağrılarının (özel araçlar olarak da bilinir) tek bir etkileşimde birleştirilmesine olanak tanır. Yerleşik ve özel araç kombinasyonları, karmaşık ve etkili iş akışlarına olanak tanır. Örneğin, model, belirli iş mantığınızı çağırmadan önce kendisini gerçek zamanlı web verileriyle temellendirebilir.
Aşağıda, google_search ile yerleşik ve özel araç kombinasyonlarının ve özel bir işlevin getWeather etkinleştirildiği bir örnek verilmiştir:
Python
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-flash-preview",
input="What is the northernmost city in the United States? What's the weather like there today?",
tools=[
{"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
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-flash-preview",
input: "What is the northernmost city in the United States? What's the weather like there today?",
tools: [
{ googleSearch: {} },
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
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-flash-preview",
"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"]
}
}
]
}'
İşleyiş şekli
Gemini 3 modelleri, yerleşik ve özel araç kombinasyonlarını etkinleştirmek için araç bağlamı dolaşımını kullanır. Araç bağlamı dolaşımı, yerleşik araçların bağlamının korunmasını ve ortaya çıkarılmasını, aynı etkileşimdeki özel araçlarla paylaşılmasını sağlar.
Araç kombinasyonunu etkinleştirme
- Birleştirme davranışını tetiklemek için kullanmak istediğiniz yerleşik araçlarla birlikte
function_declarations'ı ekleyin.
API ile iade adımları
API, etkileşim yanıtında yerleşik araç çağrıları ve işlev (özel araç) çağrıları için ayrı adımlar döndürür:
- Yerleşik araç adımları: API, bu adımları otomatik olarak yönetir ve dönüşler arasında bağlamı korur.
- İşlev çağrısı adımları: API, özel işlevleriniz için
function_calladım döndürür. İşlevi yürütür ve sonucu geri gönderirsiniz.
Döndürülen adımlardaki kritik alanlar
Döndürülen adımlardaki belirli alanlar, araç bağlamının korunması ve araç kombinasyonlarının etkinleştirilmesi için kritik öneme sahiptir:
id:function_callvefunction_responseadımlarında bulunur. Bir aramayı yanıtıyla eşleyen benzersiz tanımlayıcı.signature:thoughtadımlarının yanı sıra Gemini 3 ve sonraki modeller için tüm araç çağrısı (ör.function_call) ve sonuç (ör.function_response) adımlarında bulunur. Bu şifrelenmiş bağlam, etkileşimler arasında araç bağlamı dolaşımını sağlar.
Bu alanları yönetme:
- Durumlu Mod (Önerilen):
previous_interaction_idkullandığınızda sunucu hemidhem designaturealanlarını otomatik olarak işler. - Durum Bilgisiz Mod: Konuşma geçmişini manuel olarak yönetirken, kimliği doğrulamak ve bağlamı korumak için sonraki isteklerde hem
idhem designaturealanlarını modele geri ilettiğinizden emin olmanız gerekir. Tam yanıt nesnesini geçmişe geri iletirseniz resmi SDK'lar bunu otomatik olarak işler.
Araca özgü veriler
Bazı yerleşik araçlar, araç türüne özel ve kullanıcı tarafından görülebilen veri bağımsız değişkenleri döndürür.
| Araç | Kullanıcının görebileceği araç çağrısı bağımsız değişkenleri (varsa) | Kullanıcı tarafından görülebilen araç yanıtı (varsa) |
|---|---|---|
| google_search | queries |
search_suggestions |
| google_maps | queries |
placesgoogle_maps_widget_context_token |
| url_context | urlsGöz atılacak URL'ler |
status: Göz atma durumuretrieved_url: Göz atılan URL'ler |
| file_search | Yok | Yok |
Token'lar ve fiyatlandırma
İsteklerdeki yerleşik araç çağrısı bölümlerinin prompt_token_count sınırına dahil edildiğini unutmayın. Bu ara araç adımları artık görünür olduğundan ve size geri döndürüldüğünden sohbet geçmişinin bir parçasıdır. Bu durum yalnızca istekler için geçerlidir, yanıtlar için geçerli değildir.
Google Arama aracı bu kuralın istisnasıdır. Google Arama, sorgu düzeyinde kendi fiyatlandırma modelini zaten uyguladığından jetonlar iki kez ücretlendirilmez (Fiyatlandırma sayfasına bakın).
Daha fazla bilgi için Parçalar sayfasını okuyun.
Sınırlamalar
- Araç bağlamı dolaşımı etkinleştirildiğinde varsayılan olarak
validatedmodu kullanılır (automodu desteklenmez). google_searchgibi yerleşik araçlar konum ve mevcut saat bilgilerini kullandığındansystem_instructionveyafunction_declaration.descriptioncihazınızda çakışan konum ve saat bilgileri varsa araç kombinasyonu özelliği iyi çalışmayabilir.
Desteklenen araçlar
Standart araç bağlamı dolaşımı, sunucu tarafı (yerleşik) araçlar için geçerlidir. Kod Yürütme de sunucu tarafı bir araçtır ancak bağlam dolaşımı için kendi yerleşik çözümüne sahiptir. Bilgisayar Kullanımı ve işlev çağırma, istemci tarafı araçlardır. Ayrıca bağlam dolaşımı için yerleşik çözümleri vardır.
| Araç | Yürütme tarafı | Bağlam Dolaşımı Desteği |
|---|---|---|
| Google Arama | Sunucu tarafı | Destekleniyor |
| Google Haritalar | Sunucu tarafı | Destekleniyor |
| URL Bağlamı | Sunucu tarafı | Destekleniyor |
| Dosya Arama | Sunucu tarafı | Destekleniyor |
| Kod Yürütme | Sunucu tarafı | Desteklenir (yerleşik, code_execution ve code_execution_result adımları kullanılır) |
| Bilgisayar Kullanımı | İstemci tarafı | Desteklenir (yerleşik, function_call ve function_response adımları kullanılır) |
| Özel işlevler | İstemci tarafı | Desteklenir (yerleşik, function_call ve function_response adımları kullanılır) |
Sırada ne var?
- Gemini API'deki işlev çağrısı hakkında daha fazla bilgi edinin.
- Desteklenen araçları keşfedin: