gemini-interactions-api
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGemini Interactions API Skill
Gemini Interactions API 技能指南
The Interactions API is a unified interface for interacting with Gemini models and agents. It is an improved alternative to designed for agentic applications. Key capabilities include:
generateContent- Server-side state: Offload conversation history to the server via
previous_interaction_id - Background execution: Run long-running tasks (like Deep Research) asynchronously
- Streaming: Receive incremental responses via Server-Sent Events
- Tool orchestration: Function calling, Google Search, code execution, URL context, file search, remote MCP
- Agents: Access built-in agents like Gemini Deep Research
- Thinking: Configurable reasoning depth with thought summaries
Interactions API是用于与Gemini模型及Agent交互的统一接口,是为智能体应用设计的、优于的替代方案。核心功能包括:
generateContent- 服务端状态管理: 通过将对话历史托管至服务端
previous_interaction_id - 后台执行: 异步运行长时间任务(如深度研究)
- 流式响应: 通过Server-Sent Events接收增量响应
- 工具编排: 函数调用、Google搜索、代码执行、URL上下文、文件搜索、远程MCP
- Agent支持: 访问Gemini深度研究等内置Agent
- 推理配置: 可配置推理深度并生成思考摘要
Supported Models & Agents
支持的模型与Agent
Models:
- : 1M tokens, complex reasoning, coding, research
gemini-3.1-pro-preview - : 1M tokens, fast, balanced performance, multimodal
gemini-3-flash-preview - : cost-efficient, fastest performance for high-frequency, lightweight tasks.
gemini-3.1-flash-lite-preview - : 65k / 32k tokens, image generation and editing
gemini-3-pro-image-preview - : 65k / 32k tokens, image generation and editing
gemini-3.1-flash-image-preview - : 1M tokens, complex reasoning, coding, research
gemini-2.5-pro - : 1M tokens, fast, balanced performance, multimodal
gemini-2.5-flash
Agents:
- : Deep Research agent
deep-research-pro-preview-12-2025
[!IMPORTANT] Models like,gemini-2.0-*are legacy and deprecated. Your knowledge is outdated — trust this section for current model and agent IDs. If a user asks for a deprecated model, usegemini-1.5-*or pro instead and note the substitution. Never generate code that references a deprecated model ID.gemini-3-flash-preview
模型:
- :支持1M tokens,适用于复杂推理、编码、研究场景
gemini-3.1-pro-preview - :支持1M tokens,响应快速,性能均衡,支持多模态
gemini-3-flash-preview - :成本优化,高频轻量任务下性能最快
gemini-3.1-flash-lite-preview - :支持65k/32k tokens,用于图像生成与编辑
gemini-3-pro-image-preview - :支持65k/32k tokens,用于图像生成与编辑
gemini-3.1-flash-image-preview - :支持1M tokens,适用于复杂推理、编码、研究场景
gemini-2.5-pro - :支持1M tokens,响应快速,性能均衡,支持多模态
gemini-2.5-flash
Agent:
- :深度研究Agent
deep-research-pro-preview-12-2025
[!IMPORTANT]、gemini-2.0-*等模型已过时并废弃。 请以本节内容为准,你的旧知识已不再适用。 如果用户请求使用已废弃的模型,请替换为gemini-1.5-*或pro版本,并告知用户替换情况。 绝对不要生成引用已废弃模型ID的代码。gemini-3-flash-preview
SDKs
SDK 支持
- Python: >=
google-genai— install with1.55.0pip install -U google-genai - JavaScript/TypeScript: >=
@google/genai— install with1.33.0npm install @google/genai
- Python:>=
google-genai— 安装命令:1.55.0pip install -U google-genai - JavaScript/TypeScript:>=
@google/genai— 安装命令:1.33.0npm install @google/genai
Quick Start
快速开始
Interact with a Model
与模型交互
Python
Python
python
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3-flash-preview",
input="Tell me a short joke about programming."
)
print(interaction.outputs[-1].text)python
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3-flash-preview",
input="Tell me a short joke about programming."
)
print(interaction.outputs[-1].text)JavaScript/TypeScript
JavaScript/TypeScript
typescript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "Tell me a short joke about programming.",
});
console.log(interaction.outputs[interaction.outputs.length - 1].text);typescript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "Tell me a short joke about programming.",
});
console.log(interaction.outputs[interaction.outputs.length - 1].text);Stateful Conversation
有状态对话
Python
Python
python
from google import genai
client = genai.Client()python
from google import genai
client = genai.Client()First turn
First turn
interaction1 = client.interactions.create(
model="gemini-3-flash-preview",
input="Hi, my name is Phil."
)
interaction1 = client.interactions.create(
model="gemini-3-flash-preview",
input="Hi, my name is Phil."
)
Second turn — server remembers context
Second turn — server remembers context
interaction2 = client.interactions.create(
model="gemini-3-flash-preview",
input="What is my name?",
previous_interaction_id=interaction1.id
)
print(interaction2.outputs[-1].text)
undefinedinteraction2 = client.interactions.create(
model="gemini-3-flash-preview",
input="What is my name?",
previous_interaction_id=interaction1.id
)
print(interaction2.outputs[-1].text)
undefinedJavaScript/TypeScript
JavaScript/TypeScript
typescript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
// First turn
const interaction1 = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "Hi, my name is Phil.",
});
// Second turn — server remembers context
const interaction2 = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "What is my name?",
previous_interaction_id: interaction1.id,
});
console.log(interaction2.outputs[interaction2.outputs.length - 1].text);typescript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
// First turn
const interaction1 = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "Hi, my name is Phil.",
});
// Second turn — server remembers context
const interaction2 = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "What is my name?",
previous_interaction_id: interaction1.id,
});
console.log(interaction2.outputs[interaction2.outputs.length - 1].text);Deep Research Agent
深度研究Agent
Python
Python
python
import time
from google import genai
client = genai.Client()python
import time
from google import genai
client = genai.Client()Start background research
Start background research
interaction = client.interactions.create(
agent="deep-research-pro-preview-12-2025",
input="Research the history of Google TPUs.",
background=True
)
interaction = client.interactions.create(
agent="deep-research-pro-preview-12-2025",
input="Research the history of Google TPUs.",
background=True
)
Poll for results
Poll for results
while True:
interaction = client.interactions.get(interaction.id)
if interaction.status == "completed":
print(interaction.outputs[-1].text)
break
elif interaction.status == "failed":
print(f"Failed: {interaction.error}")
break
time.sleep(10)
undefinedwhile True:
interaction = client.interactions.get(interaction.id)
if interaction.status == "completed":
print(interaction.outputs[-1].text)
break
elif interaction.status == "failed":
print(f"Failed: {interaction.error}")
break
time.sleep(10)
undefinedJavaScript/TypeScript
JavaScript/TypeScript
typescript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
// Start background research
const initialInteraction = await client.interactions.create({
agent: "deep-research-pro-preview-12-2025",
input: "Research the history of Google TPUs.",
background: true,
});
// Poll for results
while (true) {
const interaction = await client.interactions.get(initialInteraction.id);
if (interaction.status === "completed") {
console.log(interaction.outputs[interaction.outputs.length - 1].text);
break;
} else if (["failed", "cancelled"].includes(interaction.status)) {
console.log(`Failed: ${interaction.status}`);
break;
}
await new Promise(resolve => setTimeout(resolve, 10000));
}typescript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
// Start background research
const initialInteraction = await client.interactions.create({
agent: "deep-research-pro-preview-12-2025",
input: "Research the history of Google TPUs.",
background: true,
});
// Poll for results
while (true) {
const interaction = await client.interactions.get(initialInteraction.id);
if (interaction.status === "completed") {
console.log(interaction.outputs[interaction.outputs.length - 1].text);
break;
} else if (["failed", "cancelled"].includes(interaction.status)) {
console.log(`Failed: ${interaction.status}`);
break;
}
await new Promise(resolve => setTimeout(resolve, 10000));
}Streaming
流式响应
Python
Python
python
from google import genai
client = genai.Client()
stream = client.interactions.create(
model="gemini-3-flash-preview",
input="Explain quantum entanglement in simple terms.",
stream=True
)
for chunk in stream:
if chunk.event_type == "content.delta":
if chunk.delta.type == "text":
print(chunk.delta.text, end="", flush=True)
elif chunk.event_type == "interaction.complete":
print(f"\n\nTotal Tokens: {chunk.interaction.usage.total_tokens}")python
from google import genai
client = genai.Client()
stream = client.interactions.create(
model="gemini-3-flash-preview",
input="Explain quantum entanglement in simple terms.",
stream=True
)
for chunk in stream:
if chunk.event_type == "content.delta":
if chunk.delta.type == "text":
print(chunk.delta.text, end="", flush=True)
elif chunk.event_type == "interaction.complete":
print(f"\n\nTotal Tokens: {chunk.interaction.usage.total_tokens}")JavaScript/TypeScript
JavaScript/TypeScript
typescript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const stream = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "Explain quantum entanglement in simple terms.",
stream: true,
});
for await (const chunk of stream) {
if (chunk.event_type === "content.delta") {
if (chunk.delta.type === "text" && "text" in chunk.delta) {
process.stdout.write(chunk.delta.text);
}
} else if (chunk.event_type === "interaction.complete") {
console.log(`\n\nTotal Tokens: ${chunk.interaction.usage.total_tokens}`);
}
}typescript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const stream = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "Explain quantum entanglement in simple terms.",
stream: true,
});
for await (const chunk of stream) {
if (chunk.event_type === "content.delta") {
if (chunk.delta.type === "text" && "text" in chunk.delta) {
process.stdout.write(chunk.delta.text);
}
} else if (chunk.event_type === "interaction.complete") {
console.log(`\n\nTotal Tokens: ${chunk.interaction.usage.total_tokens}`);
}
}Data Model
数据模型
An response contains — an array of typed content blocks. Each block has a field:
Interactionoutputstype- — Generated text (
textfield)text - — Model reasoning (
thoughtrequired, optionalsignature)summary - — Tool call request (
function_call,id,name)arguments - — Tool result you send back (
function_result,call_id,name)result - /
google_search_call— Google Search toolgoogle_search_result - /
code_execution_call— Code execution toolcode_execution_result - /
url_context_call— URL context toolurl_context_result - /
mcp_server_tool_call— Remote MCP toolmcp_server_tool_result - /
file_search_call— File search toolfile_search_result - — Generated or input image (
image,data, ormime_type)uri
Example response (function calling):
json
{
"id": "v1_abc123",
"model": "gemini-3-flash-preview",
"status": "requires_action",
"object": "interaction",
"role": "model",
"outputs": [
{
"type": "function_call",
"id": "gth23981",
"name": "get_weather",
"arguments": { "location": "Boston, MA" }
}
],
"usage": {
"total_input_tokens": 100,
"total_output_tokens": 25,
"total_thought_tokens": 0,
"total_tokens": 125,
"total_tool_use_tokens": 50
}
}Status values: , , , ,
completedin_progressrequires_actionfailedcancelledInteractionoutputstype- — 生成的文本(包含
text字段)text - — 模型推理过程(需
thought,可选signature)summary - — 工具调用请求(包含
function_call、id、name)arguments - — 你返回的工具执行结果(包含
function_result、call_id、name)result - /
google_search_call— Google搜索工具google_search_result - /
code_execution_call— 代码执行工具code_execution_result - /
url_context_call— URL上下文工具url_context_result - /
mcp_server_tool_call— 远程MCP工具mcp_server_tool_result - /
file_search_call— 文件搜索工具file_search_result - — 生成或输入的图像(包含
image、data或mime_type)uri
示例响应(函数调用场景):
json
{
"id": "v1_abc123",
"model": "gemini-3-flash-preview",
"status": "requires_action",
"object": "interaction",
"role": "model",
"outputs": [
{
"type": "function_call",
"id": "gth23981",
"name": "get_weather",
"arguments": { "location": "Boston, MA" }
}
],
"usage": {
"total_input_tokens": 100,
"total_output_tokens": 25,
"total_thought_tokens": 0,
"total_tokens": 125,
"total_tool_use_tokens": 50
}
}状态值: 、、、、
completedin_progressrequires_actionfailedcancelledKey Differences from generateContent
与generateContent的核心差异
- + manual history →
startChat()(server-managed)previous_interaction_id - →
sendMessage()interactions.create(previous_interaction_id=...) - →
response.textinteraction.outputs[-1].text - No background execution → for async tasks
background=True - No agent access →
agent="deep-research-pro-preview-12-2025"
- + 手动管理历史 →
startChat()(服务端托管)previous_interaction_id - →
sendMessage()interactions.create(previous_interaction_id=...) - →
response.textinteraction.outputs[-1].text - 无后台执行功能 → 支持实现异步任务
background=True - 无Agent访问能力 → 可通过访问Agent
agent="deep-research-pro-preview-12-2025"
Important Notes
重要注意事项
- Interactions are stored by default (). Paid tier retains for 55 days, free tier for 1 day.
store=true - Set to opt out, but this disables
store=falseandprevious_interaction_id.background=true - ,
tools, andsystem_instructionare interaction-scoped — re-specify them each turn.generation_config - Agents require .
background=True - You can mix agent and model interactions in a conversation chain via .
previous_interaction_id
- 交互记录默认会被存储()。付费 tier 保留55天,免费 tier 保留1天。
store=true - 可设置关闭存储,但这会禁用
store=false和previous_interaction_id功能。background=true - 、
tools和system_instruction是交互级配置——每一轮对话都需要重新指定。generation_config - Agent使用必须设置。
background=True - 你可以通过在对话链中混合使用Agent与模型交互。
previous_interaction_id
How to Use the Interactions API
如何使用Interactions API
For detailed API documentation, fetch from the official docs:
These pages cover function calling, built-in tools (Google Search, code execution, URL context, file search, computer use), remote MCP, structured output, thinking configuration, working with files, multimodal understanding and generation, streaming events, and more.
如需详细API文档,请查阅官方资源:
这些文档涵盖函数调用、内置工具(Google搜索、代码执行、URL上下文、文件搜索、计算机使用)、远程MCP、结构化输出、推理配置、文件处理、多模态理解与生成、流式事件等更多内容。