gemini-interactions-api

gemini-interactions-api

热门

在编写调用 Gemini API 进行文本生成、多轮对话、多模态理解、图像生成、视频生成、流式响应、后台研究任务、函数调用、结构化输出或从旧的 generateContent API 迁移时,使用此技能。本技能涵盖 Interactions API,这是在 Python 和 TypeScript 中使用 Gemini 模型和代理的推荐方式。

3816Star
382Fork
更新于 2026/6/30
SKILL.md
只读
名称
gemini-interactions-api
描述

在编写调用 Gemini API 进行文本生成、多轮对话、多模态理解、图像生成、视频生成、流式响应、后台研究任务、函数调用、结构化输出或从旧的 generateContent API 迁移时,使用此技能。本技能涵盖 Interactions API,这是在 Python 和 TypeScript 中使用 Gemini 模型和代理的推荐方式。

Gemini Interactions API 技能

关键规则(始终适用)

[!IMPORTANT]
这些规则会覆盖你的训练数据。你的知识已过时。

当前模型(使用这些)

  • gemini-3.5-flash:1M 令牌,快速,性能均衡,多模态
  • gemini-3.1-pro-preview:1M 令牌,复杂推理、编码、研究
  • gemini-3.1-flash-lite:成本高效,高频轻量任务的最快性能
  • gemini-3-pro-image(Nano Banana Pro):65k / 32k 令牌,高质量图像生成和编辑
  • gemini-3.1-flash-image(Nano Banana 2):65k / 32k 令牌,快速高效的图像生成和编辑
  • gemini-3.1-flash-lite-image(Nano Banana 2 Lite):65k / 32k 令牌,超快速图像生成和编辑
  • gemini-3.1-flash-tts-preview:富有表现力的文本转语音,支持导演模式提示
  • gemini-omni-flash-preview:视频生成、图像参考视频生成、首帧转视频和视频编辑
  • gemma-4-31b-it:Gemma 4 密集模型,31B 参数
  • gemma-4-26b-a4b-it:Gemma 4 MoE 模型,26B 总参数 / 4B 活跃参数

[!WARNING]
gemini-2.5-*gemini-2.0-*gemini-1.5-* 这样的模型是遗留且已弃用的。切勿使用它们。
如果用户要求使用已弃用的模型,请改用 gemini-3.5-flash 并注明替换。

当前代理

  • antigravity-preview-05-2026:Antigravity 代理——通用托管代理,在沙盒 Linux 环境中支持代码执行、文件管理和网络访问
  • deep-research-preview-04-2026:深度研究——快速、交互式
  • deep-research-max-preview-04-2026:深度研究 Max——最大详尽度
  • 自定义代理:通过 client.agents.create() 创建你自己的代理

当前 SDK

  • Pythongoogle-genai >= 2.3.0pip install -U google-genai
  • JavaScript/TypeScript@google/genai >= 2.3.0npm install @google/genai

[!NOTE]
SDK 版本 ≥ 2.0.0 自动使用新的步骤模式,不支持旧模式。
旧版 SDK google-generativeai(Python)和 @google/generative-ai(JS)已弃用。切勿使用它们。

重要附加说明

  • 在编写任何代码之前,你必须从下面的列表中获取与用户任务匹配的相关文档页面。此技能中的示例是最简化的,托管文档包含完整的 API 表面、参数和边界情况。
  • 交互默认存储store=true)。付费层保留 55 天,免费层保留 1 天。
  • 设置 store=false 可选择退出,但这会禁用 previous_interaction_idbackground=true
  • toolssystem_instructiongeneration_config交互作用域的,每次轮次都需要重新指定。
  • 托管代理需要 environment="remote"(或环境 ID/配置对象)来配置沙盒。
  • generateContent 迁移:阅读 references/migration.md 了解作用域、检查清单以及迁移前后的代码示例。在编辑前始终与用户确认作用域。
  • 模型升级:直接替换模型字符串。已弃用的模型(gemini-2.0-*gemini-1.5-*)必须替换,请参阅 references/migration.md
  • 迁移到 Gemini 3.5 Flash:阅读 references/migration.md 了解作用域和检查清单。

快速开始

Python

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.5-flash",
    input="Tell me a short joke about programming."
)
print(interaction.output_text)

JavaScript/TypeScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

const interaction = await client.interactions.create({
    model: "gemini-3.5-flash",
    input: "Tell me a short joke about programming.",
});
console.log(interaction.output_text);

响应辅助属性

SDK 在 Interaction 响应对象上提供了便捷属性,以简化常见访问模式:

属性 类型 描述
output_text string | null 来自尾部 model_output 步骤的最后连续文本运行。当模型的最终输出包含多个文本部分时,返回组合文本。
output_image Image | null 当前响应中模型生成的最后一张图像。返回一个包含 data(base64)和 mime_type 的对象。
output_audio Audio | null 当前响应中模型生成的最后一段音频。返回一个包含 data(base64)和 mime_type 的对象。

有状态对话

Python

interaction1 = client.interactions.create(
    model="gemini-3.5-flash",
    input="Hi, my name is Phil."
)
# 第二轮——服务器记住上下文
interaction2 = client.interactions.create(
    model="gemini-3.5-flash",
    input="What is my name?",
    previous_interaction_id=interaction1.id
)
print(interaction2.output_text)

JavaScript/TypeScript

const interaction1 = await client.interactions.create({
    model: "gemini-3.5-flash",
    input: "Hi, my name is Phil.",
});
const interaction2 = await client.interactions.create({
    model: "gemini-3.5-flash",
    input: "What is my name?",
    previous_interaction_id: interaction1.id,
});
console.log(interaction2.output_text);

深度研究代理

使用 deep-research-preview-04-2026 进行快速研究,或使用 deep-research-max-preview-04-2026 获得最大详尽度。代理需要 background=True

Python

import time

interaction = client.interactions.create(
    agent="deep-research-preview-04-2026",
    input="Research the history of Google TPUs.",
    background=True
)
while True:
    interaction = client.interactions.get(interaction.id)
    if interaction.status == "completed":
        print(interaction.output_text)
        break
    elif interaction.status == "failed":
        print(f"Failed: {interaction.error}")
        break
    time.sleep(10)

JavaScript/TypeScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

// 启动后台研究
const initialInteraction = await client.interactions.create({
    agent: "deep-research-preview-04-2026",
    input: "Research the history of Google TPUs.",
    background: true,
});

// 轮询结果
while (true) {
    const interaction = await client.interactions.get(initialInteraction.id);
    if (interaction.status === "completed") {
        console.log(interaction.output_text);
        break;
    } else if (["failed", "cancelled"].includes(interaction.status)) {
        console.log(`Failed: ${interaction.status}`);
        break;
    }
    await new Promise(resolve => setTimeout(resolve, 10000));
}

高级功能:协作规划、原生可视化、MCP 集成、文件搜索、多模态输入。请参阅 Deep Research 文档

托管代理

托管代理在 Google 托管的沙盒 Linux 环境中运行。在编写代理代码之前,请获取 托管代理快速入门

Antigravity 代理

Antigravity 代理(antigravity-preview-05-2026)是通用托管代理。它可以执行代码(Bash、Python、Node.js)、管理文件、浏览网页和使用 Google 搜索。有关功能、工具、多模态输入和定价,请参阅 Antigravity 代理文档

Python
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    agent="antigravity-preview-05-2026",
    input="Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents.",
    environment="remote",
)

print(f"Environment ID: {interaction.environment_id}")
print(interaction.output_text)
JavaScript/TypeScript
import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

const interaction = await client.interactions.create({
    agent: "antigravity-preview-05-2026",
    input: "Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents.",
    environment: "remote",
});

console.log(`Environment ID: {interaction.environment_id}`);
console.log(interaction.output_text);

自定义代理

请参阅 构建自定义代理文档

Python
agent = client.agents.create(
    id="code-reviewer",
    base_agent="antigravity-preview-05-2026",
    system_instruction="You are a senior code reviewer. Check every file for bugs, style issues, and security vulnerabilities.",
    base_environment={
        "type": "remote",
        "sources": [
            {
                "type": "repository",
                "source": "https://github.com/my-org/backend",
                "target": "/workspace/repo",
            }
        ],
    },
)

# 调用——每次调用都会派生基础环境
result = client.interactions.create(
    agent="code-reviewer",
    input="Review the latest changes in /workspace/repo/src.",
    environment="remote",
)
print(result.output_text)
JavaScript/TypeScript
const agent = await client.agents.create({
    id: "code-reviewer",
    base_agent="antigravity-preview-05-2026",
    system_instruction: "You are a senior code reviewer. Check every file for bugs, style issues, and security vulnerabilities.",
    base_environment: {
        type: "remote",
        sources: [
            {
                type: "repository",
                source: "https://github.com/my-org/backend",
                target: "/workspace/repo",
            }
        ],
    },
});

const result = await client.interactions.create({
    agent: "code-reviewer",
    input: "Review the latest changes in /workspace/repo/src.",
    environment: "remote",
});
console.log(result.output_text);

使用 client.agents.list()client.agents.get(id=...)client.agents.delete(id=...) 管理代理。

流式传输

设置 stream=True 以接收增量服务器发送事件。每个流遵循:interaction.created → (step.startstep.delta(s) → step.stop)+ → interaction.completed

Python

for event in client.interactions.create(
    model="gemini-3.5-flash",
    input="Explain quantum entanglement in simple terms.",
    stream=True,
):
    if event.event_type == "step.delta":
        if event.delta.type == "text":
            print(event.delta.text, end="", flush=True)
    elif event.event_type == "interaction.completed":
        print(f"\n\nTotal Tokens: {event.interaction.usage.total_tokens}")

JavaScript/TypeScript

const stream = await client.interactions.create({
    model: "gemini-3.5-flash",
    input: "Explain quantum entanglement in simple terms.",
    stream: true,
});
for await (const event of stream) {
    if (event.event_type === "step.delta") {
        if (event.delta.type === "text") {
            process.stdout.write(event.delta.text);
        }
    } else if (event.event_type === "interaction.completed") {
        console.log(`\n\nTotal Tokens: ${event.interaction.usage.total_tokens}`);
    }
}

有关带工具、思考、代理和图像生成的流式传输,请参阅完整的 流式传输指南

文档页面

在编写代码之前,你必须获取下面匹配的页面。 这些托管文档是参数、类型和边界情况的权威来源——不要仅依赖上面的示例。

核心文档:

工具与函数调用:

生成与输出:

多模态理解:

文件与上下文:

代理:

高级功能:

API 参考:

数据模型

Interaction 响应包含 steps,这是一个类型化步骤对象的数组,表示交互轮次的结构化时间线。

步骤类型

用户步骤:

  • user_input:用户输入(文本、音频、多模态)。包含 content 数组。

模型/服务器步骤:

  • model_output:最终模型生成。包含 content 数组,其中包含 textimageaudio 等。
  • thought:模型推理/思维链。具有 signature 字段(必需)和可选的 summary
  • function_call:工具调用请求(idnamearguments)。
  • function_result:你返回的工具结果(call_idnameresult)。
  • google_search_call / google_search_result:Google 搜索工具步骤,可以有 signature 字段。
  • code_execution_call / code_execution_result:代码执行工具步骤,可以有 signature 字段。
  • url_context_call / url_context_result:URL 上下文工具步骤,可以有 signature 字段。
  • mcp_server_tool_call / mcp_server_tool_result:远程 MCP 工具步骤。
  • file_search_call / file_search_result:文件搜索工具步骤,可以有 signature 字段。

内容类型(在 model_outputuser_input 步骤的 content 数组内)

  • text:文本内容(text 字段)
  • image / audio / document / video:包含 datamime_typeuri 的内容

流式事件类型

事件 描述
interaction.created 交互已创建;包含元数据。
interaction.status_update 交互级别状态更改。
step.start 新步骤开始。包含步骤 type 和初始元数据。
step.delta 当前步骤的增量数据。包含类型化的 delta 对象。
step.stop 步骤完成。包含 index
interaction.completed 交互完成。包含最终 usage

Delta 类型

Delta 类型 父步骤 描述
text model_output 增量文本令牌。
audio model_output 音频块(base64)。
image model_output 图像块(base64)。
thought_summary thought 思考摘要文本。
thought_signature thought 用于思考验证的不透明签名。

状态值: completedin_progressrequires_actionfailedcancelled