Combinar ferramentas integradas e chamada de função
O Gemini permite a combinação de ferramentas integradas, como
google_search, e a chamada de função
(também conhecida como ferramentas personalizadas) em uma única interação, preservando e expondo
o histórico de contexto das chamadas de ferramenta. As combinações de ferramentas integradas e personalizadas permitem fluxos de trabalho complexos e de agentes em que, por exemplo, o modelo pode se basear em dados da Web em tempo real antes de chamar sua lógica de negócios específica.
Confira um exemplo que permite combinações de ferramentas integradas e personalizadas com google_search e uma função personalizada getWeather:
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"]
}
}
]
}'
Como funciona
Os modelos do Gemini 3 usam a circulação de contexto de ferramentas para permitir combinações de ferramentas integradas e personalizadas. A circulação de contexto de ferramentas permite preservar e expor o contexto de ferramentas integradas e compartilhá-lo com ferramentas personalizadas na mesma interação.
Ativar a combinação de ferramentas
- Inclua os
function_declarations, junto com as ferramentas integradas que você quer usar, para acionar o comportamento de combinação.
Etapas retornadas pela API
Em uma resposta de interação, a API retorna etapas separadas para chamadas de ferramentas integradas e chamadas de função (ferramenta personalizada):
- Etapas de ferramentas integradas: a API gerencia essas etapas automaticamente, preservando o contexto em todas as rodadas.
- Etapas de chamada de função: a API retorna etapas
function_callpara suas funções personalizadas. Você executa a função e fornece o resultado.
Campos críticos nas etapas retornadas
Alguns campos nas etapas retornadas são essenciais para manter o contexto da ferramenta e permitir combinações de ferramentas:
id: encontrado nas etapasfunction_callefunction_response. Um identificador exclusivo que mapeia uma chamada para a resposta.signature: encontrado nas etapasthought, bem como em todas as etapas de chamada de ferramenta (por exemplo,function_call) e resultado (por exemplo,function_response) para modelos do Gemini 3 e mais recentes. Esse contexto criptografado permite a circulação de contexto de ferramentas em todas as interações.
Como gerenciar esses campos :
- Modo com estado (recomendado): quando você usa
previous_interaction_id, o servidor processa automaticamente os camposidesignature. - Modo sem estado: ao gerenciar o histórico de conversas manualmente, é necessário transmitir os campos
idesignaturede volta ao modelo em solicitações subsequentes para validar a autenticidade e manter o contexto. Os SDKs oficiais processam isso automaticamente se você transmitir o objeto de resposta completo de volta ao histórico.
Dados específicos da ferramenta
Algumas ferramentas integradas retornam argumentos de dados visíveis ao usuário específicos do tipo de ferramenta.
| Ferramenta | Argumentos de chamada de ferramenta visíveis ao usuário (se houver) | Resposta da ferramenta visível ao usuário (se houver) |
|---|---|---|
| google_search | queries |
search_suggestions |
| google_maps | queries |
placesgoogle_maps_widget_context_token |
| url_context | urlsURLs a serem navegados |
status: status de navegaçãoretrieved_url: URLs navegados |
| file_search | Nenhum | Nenhum |
Tokens e preços
Observe que as partes de chamada de ferramenta integrada nas solicitações são contadas para prompt_token_count. Como essas etapas intermediárias da ferramenta agora estão visíveis e são retornadas para você, elas fazem parte do histórico de conversas. Isso só acontece para
o caso de solicitações, não respostas.
A ferramenta Pesquisa Google é uma exceção a essa regra. A Pesquisa Google já aplica o próprio modelo de preços no nível da consulta, então os tokens não são cobrados duas vezes (consulte a página de Preços).
Leia a página Tokens para mais informações.
Limitações
- O modo
validatedé o padrão (o modoautonão é compatível) quando a circulação de contexto de ferramentas está ativada. - Ferramentas integradas, como
google_search, dependem de informações de localização e hora atual. Portanto, sesystem_instructionoufunction_declaration.descriptiontiver informações de localização e hora conflitantes, o recurso de combinação de ferramentas poderá não funcionar bem.
Ferramentas compatíveis
A circulação de contexto de ferramentas padrão se aplica a ferramentas do lado do servidor (integradas). A execução de código também é uma ferramenta do lado do servidor, mas tem a própria solução integrada para a circulação de contexto. O uso do computador e a chamada de função são ferramentas do lado do cliente e também têm soluções integradas para a circulação de contexto.
| Ferramenta | Lado da execução | Suporte à circulação de contexto |
|---|---|---|
| Pesquisa Google | do lado do servidor | Compatível |
| Google Maps | do lado do servidor | Compatível |
| Contexto do URL | do lado do servidor | Compatível |
| Pesquisa de arquivos | do lado do servidor | Compatível |
| Execução de código | do lado do servidor | Compatível (integrado, usa etapas code_execution e code_execution_result) |
| Uso do computador | Lado do cliente | Compatível (integrado, usa etapas function_call e function_response) |
| Funções personalizadas | Lado do cliente | Compatível (integrado, usa etapas function_call e function_response) |
A seguir
- Saiba mais sobre a chamada de função na API Gemini.
- Conheça as ferramentas compatíveis: