Объедините встроенные инструменты и вызов функций.
Gemini позволяет комбинировать встроенные инструменты , такие как google_search , и вызовы функций (также известные как пользовательские инструменты ) в рамках одного взаимодействия, сохраняя и предоставляя историю контекста вызовов инструментов. Комбинации встроенных и пользовательских инструментов позволяют создавать сложные, агентные рабочие процессы, где, например, модель может основываться на веб-данных в реальном времени, прежде чем вызывать вашу конкретную бизнес-логику.
Вот пример, позволяющий комбинировать встроенные и пользовательские инструменты с помощью google_search и пользовательской функции 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.
}
}
ОТДЫХ
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"]
}
}
]
}'
Как это работает
В моделях Gemini 3 используется циркуляция контекста инструментов для обеспечения возможности комбинаций встроенных и пользовательских инструментов. Циркуляция контекста инструментов позволяет сохранять и отображать контекст встроенных инструментов, а также делиться им с пользовательскими инструментами в рамках одного взаимодействия.
Включить комбинацию инструментов
- Включите в файл
function_declarations, а также встроенные инструменты, которые вы хотите использовать, чтобы активировать комбинированное поведение.
API возвращает шаги
В ответе на запрос взаимодействия API возвращает отдельные шаги для вызовов встроенных инструментов и вызовов функций (пользовательских инструментов):
- Встроенные этапы работы инструмента : API управляет ими автоматически, сохраняя контекст между ходами.
- Шаги вызова функции : API возвращает количество шагов
function_callдля ваших пользовательских функций. Вы выполняете функцию и возвращаете результат.
Критические поля в возвращаемых шагах
Некоторые поля в возвращаемых шагах имеют решающее значение для сохранения контекста инструмента и обеспечения возможности комбинирования инструментов:
-
id: Найдено на этапахfunction_callиfunction_response. Уникальный идентификатор, сопоставляющий вызов с соответствующим ответом. -
signature: Найдено на этапах выполненияthought, а также на всех этапах вызова инструмента (например,function_call) и получения результата (например,function_response) для моделей Gemini 3+. Этот зашифрованный контекст обеспечивает циркуляцию контекста инструмента между взаимодействиями.
Управление этими полями:
- Режим сохранения состояния (рекомендуется) : При использовании
previous_interaction_idсервер автоматически обрабатывает как полеid, так и полеsignature. - Режим без сохранения состояния : При ручном управлении историей переписки необходимо убедиться, что в последующих запросах в модель передаются поля
idиsignatureдля проверки подлинности и сохранения контекста. Официальные SDK обрабатывают это автоматически, если вы передаете полный объект ответа обратно в историю.
Данные, специфичные для инструмента
Некоторые встроенные инструменты возвращают отображаемые пользователю аргументы данных, специфичные для типа инструмента.
| Инструмент | Аргументы вызова инструмента, видимые пользователю (если таковые имеются) | Ответ инструмента, видимый пользователю (если таковой имеется) |
|---|---|---|
| google_search | queries | search_suggestions |
| google_maps | queries | placesgoogle_maps_widget_context_token |
| url_context | urlsURL-адреса для просмотра | status : Статус просмотраretrieved_url : просмотренные URL-адреса |
| file_search | Никто | Никто |
Токены и цены
Обратите внимание, что части запросов, выполняемые встроенными инструментами, учитываются в показателе prompt_token_count . Поскольку эти промежуточные шаги инструментов теперь видны и возвращаются вам, они являются частью истории диалога. Это относится только к запросам , а не к ответам .
Инструмент поиска Google является исключением из этого правила. Google Search уже применяет собственную модель ценообразования на уровне запроса, поэтому токены не облагаются двойной оплатой (см. страницу «Цены» ).
Для получения более подробной информации ознакомьтесь со страницей «Токены» .
Ограничения
- При включении циркуляции контекста инструмента по умолчанию используется режим
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 ) |
Что дальше?
- Узнайте больше о вызове функций в API Gemini.
- Ознакомьтесь с поддерживаемыми инструментами: