logo

Gemini 编程、工具调用与代码执行 (Coding & Tools)

Gemini 不仅仅是一个对话模型,它具备强大的工具交互能力。它可以编写并运行 Python 代码、搜索实时网页、甚至调用你定义的任何 API。这使得它能从一个“观察者”变成一个能解决实际问题的“行动者”。

[PROMPT_LAB_BANNER]


核心能力架构

Gemini 的编程与工具能力由三个支柱组成:代码执行 (Code Execution)函数调用 (Function Calling)内置工具 (Built-in Tools)

┌─────────────────────────────────────────────────────────────┐
│                    Gemini 工具交互工作流                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   [ 用户请求 ] ──→ [ 模型推理 (Reasoning) ] ──┬──→ [ 最终回答 ]  │
│                                            │                │
│                         决策:是否需要工具?   │                │
│                                ↓           │                │
│       ┌────────────────────────┴───────────┴──────────┐     │
│       │                                               │     │
│   [ 代码执行 ]         [ 函数调用 ]        [ 内置工具 ]     │     │
│   (Python Sandbox)    (你的自定义 API)    (搜索/文件/地图)   │     │
│       │                       │               │       │     │
│       └───────────────────────┬───────────────┘       │     │
│                               ↓                       │     │
│                        [ 获取工具结果 ] ───────────────┘     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

1. 代码执行 (Code Execution)

Gemini 可以在受保护的沙箱环境中自动生成并运行 Python 代码。它不再通过“猜测”来解决数学问题,而是通过“计算”。

适用场景:

  • 复杂数学计算:超越简单的算术,处理微积分、统计分析。
  • 数据处理:清洗 CSV/JSON 数据,进行排序、过滤和聚合。
  • 科学模拟:运行物理公式或逻辑模型。

示例:

“请计算 1 到 1000 之间所有质数的平均值。” Gemini 会生成 Python 代码,运行它,并告诉你最终结果。


2. 函数调用 (Function Calling)

这是将 Gemini 连接到你自己的业务逻辑的最佳方式。你告诉模型有哪些 API 可用,模型根据用户意图决定调用哪个。

特性说明
精准控制你定义输入参数的 Schema,模型严格遵守。
实时性访问你的数据库、CRM 或实时订单系统。
闭环操作不仅仅是查询,还可以执行动作(如下单、发邮件、重置密码)。

开发流程:

  1. 定义定义 (Declare):在代码中声明工具的名称、描述和参数。
  2. 生成调用 (Generate):模型返回 call_function 指令。
  3. 执行结果 (Execute):你的代码运行本地逻辑。
  4. 总结回复 (Respond):将结果传回模型,生成自然语言回复。

3. 内置工具 (Built-in Tools)

Google 托管的高性能工具,无需配置即可使用。

工具名称核心能力典型用途
Google Search实时网页检索获取最新新闻、股票价格、事实校验。
Code InterpreterPython 沙箱高级数据分析、文件转换、图表生成。
File Search语义检索 (RAG)在上传的数千个文档中寻找精准答案。
URL Context网页内容抓取总结特定网页、分析竞争对手网站。

实战案例:构建一个 AI 运维助手

场景:用户想知道“服务器 CPU 占用是否过高,如果过高请重启”。

Step 1: 定义 Function

{
  "name": "get_server_metrics",
  "description": "获取指定服务器的实时指标(CPU, Memory)",
  "parameters": {
    "type": "object",
    "properties": { "server_id": { "type": "string" } }
  }
}

Step 2: 编写 Prompt (CRDO)

# Role
你是一个资深的云原生运维专家。

# Task
分析用户提供的服务器 ID 的状态。如果 CPU 占用超过 80%,请解释原因并询问用户是否需要执行优化操作。

# Constraints
- 必须先调用 `get_server_metrics` 获取真实数据。
- 不要猜测数据。
- 给出专业的优化建议。

API 调用示例 (Node.js)

使用 @google/generative-ai 实现 Function Calling:

const { GoogleGenerativeAI } = require("@google/generative-ai");

const genAI = new GoogleGenerativeAI(process.env.API_KEY);

// 1. 定义工具函数
const controlLight = {
  name: "controlLight",
  parameters: {
    type: "object",
    properties: {
      brightness: { type: "number", description: "亮度 0-100" },
      color: { type: "string", description: "颜色十六进制" }
    }
  }
};

// 2. 初始化模型并传入工具
const model = genAI.getGenerativeModel({
  model: "gemini-1.5-pro",
  tools: [{ functionDeclarations: [controlLight] }],
});

// 3. 开始对话
const chat = model.startChat();
const result = await chat.sendMessage("帮我把灯调亮一点,设置成暖黄色。");
const response = result.response;

// 4. 处理 Tool Call (模型会返回指令,你需要执行后传回)
const call = response.functionCalls()[0];
if (call) {
  // 在此处调用你真实的智能家居 API...
  console.log(`执行工具: ${call.name}, 参数:`, call.args);
}

常见问题与解决方案 (Troubleshooting)

问题常见原因解决方案
模型频繁调用错误的参数参数描述 (Description) 过于模糊。提供参数的枚举值 (Enum) 或正则表达式约束。
代码执行结果不符合预期模型生成的 Python 逻辑有误。在 Prompt 中要求模型“分步骤写代码”并加入异常处理。
模型拒绝调用工具任务意图与工具描述不匹配。在系统提示词中明确:“当用户询问状态时,必须使用 get_status 工具。”
安全风险代码执行可能涉及敏感操作。使用官方沙箱或限制自定义函数的权限范围。

进阶技巧:模型选型建议

  • 全能型 (1.5 Pro):适合多步、复杂的 Function Calling,逻辑严密,适合企业级 Agent。
  • 性能型 (1.5 Flash):响应极快,适合简单的代码执行和单步工具调用,成本极低。
  • 轻量型 (Flash-Lite):适合海量的结构化提取任务。

小结

  1. Code Execution 让 AI 具备了“计算能力”,不再胡说八道。
  2. Function Calling 是 AI 进入你业务系统的“钥匙”。
  3. 内置工具 扩展了 AI 的感官(如 Google Search)。
  4. 安全第一:在执行 AI 生成的代码或调用敏感 API 时,务必设置权限边界。

相关资源

Gemini 使用指南
Vibe Coding

Gemini 使用指南

Google Gemini 是 Google 最新的多模态 AI 模型,支持文本、图像、音频和视频理解。

Gemini 使用指南编程辅助

Gemini 编程、工具调用与代码执行 (Coding & Tools)

Gemini 不仅仅是一个对话模型,它具备强大的工具交互能力。它可以编写并运行 Python 代码、搜索实时网页、甚至调用你定义的任何 API。这使得它能从一个“观察者”变成一个能解决实际问题的“行动者”。

Prompt Lab

把这章的知识,直接变成实战能力

进入交互式实验室,用真实任务练 Prompt,10 分钟快速上手。

进入 Prompt Lab →

#核心能力架构

Gemini 的编程与工具能力由三个支柱组成:代码执行 (Code Execution)函数调用 (Function Calling)内置工具 (Built-in Tools)

text
┌─────────────────────────────────────────────────────────────┐ │ Gemini 工具交互工作流 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ [ 用户请求 ] ──→ [ 模型推理 (Reasoning) ] ──┬──→ [ 最终回答 ] │ │ │ │ │ 决策:是否需要工具? │ │ │ ↓ │ │ │ ┌────────────────────────┴───────────┴──────────┐ │ │ │ │ │ │ [ 代码执行 ] [ 函数调用 ] [ 内置工具 ] │ │ │ (Python Sandbox) (你的自定义 API) (搜索/文件/地图) │ │ │ │ │ │ │ │ │ └───────────────────────┬───────────────┘ │ │ │ ↓ │ │ │ [ 获取工具结果 ] ───────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘

#1. 代码执行 (Code Execution)

Gemini 可以在受保护的沙箱环境中自动生成并运行 Python 代码。它不再通过“猜测”来解决数学问题,而是通过“计算”。

#适用场景:

  • 复杂数学计算:超越简单的算术,处理微积分、统计分析。
  • 数据处理:清洗 CSV/JSON 数据,进行排序、过滤和聚合。
  • 科学模拟:运行物理公式或逻辑模型。

示例:

“请计算 1 到 1000 之间所有质数的平均值。” Gemini 会生成 Python 代码,运行它,并告诉你最终结果。


#2. 函数调用 (Function Calling)

这是将 Gemini 连接到你自己的业务逻辑的最佳方式。你告诉模型有哪些 API 可用,模型根据用户意图决定调用哪个。

特性说明
精准控制你定义输入参数的 Schema,模型严格遵守。
实时性访问你的数据库、CRM 或实时订单系统。
闭环操作不仅仅是查询,还可以执行动作(如下单、发邮件、重置密码)。

#开发流程:

  1. 定义定义 (Declare):在代码中声明工具的名称、描述和参数。
  2. 生成调用 (Generate):模型返回 call_function 指令。
  3. 执行结果 (Execute):你的代码运行本地逻辑。
  4. 总结回复 (Respond):将结果传回模型,生成自然语言回复。

#3. 内置工具 (Built-in Tools)

Google 托管的高性能工具,无需配置即可使用。

工具名称核心能力典型用途
Google Search实时网页检索获取最新新闻、股票价格、事实校验。
Code InterpreterPython 沙箱高级数据分析、文件转换、图表生成。
File Search语义检索 (RAG)在上传的数千个文档中寻找精准答案。
URL Context网页内容抓取总结特定网页、分析竞争对手网站。

#实战案例:构建一个 AI 运维助手

场景:用户想知道“服务器 CPU 占用是否过高,如果过高请重启”。

#Step 1: 定义 Function

json
{ "name": "get_server_metrics", "description": "获取指定服务器的实时指标(CPU, Memory)", "parameters": { "type": "object", "properties": { "server_id": { "type": "string" } } } }

#Step 2: 编写 Prompt (CRDO)

markdown
# Role 你是一个资深的云原生运维专家。 # Task 分析用户提供的服务器 ID 的状态。如果 CPU 占用超过 80%,请解释原因并询问用户是否需要执行优化操作。 # Constraints - 必须先调用 `get_server_metrics` 获取真实数据。 - 不要猜测数据。 - 给出专业的优化建议。

#API 调用示例 (Node.js)

使用 @google/generative-ai 实现 Function Calling:

javascript
const { GoogleGenerativeAI } = require("@google/generative-ai"); const genAI = new GoogleGenerativeAI(process.env.API_KEY); // 1. 定义工具函数 const controlLight = { name: "controlLight", parameters: { type: "object", properties: { brightness: { type: "number", description: "亮度 0-100" }, color: { type: "string", description: "颜色十六进制" } } } }; // 2. 初始化模型并传入工具 const model = genAI.getGenerativeModel({ model: "gemini-1.5-pro", tools: [{ functionDeclarations: [controlLight] }], }); // 3. 开始对话 const chat = model.startChat(); const result = await chat.sendMessage("帮我把灯调亮一点,设置成暖黄色。"); const response = result.response; // 4. 处理 Tool Call (模型会返回指令,你需要执行后传回) const call = response.functionCalls()[0]; if (call) { // 在此处调用你真实的智能家居 API... console.log(`执行工具: ${call.name}, 参数:`, call.args); }

#常见问题与解决方案 (Troubleshooting)

问题常见原因解决方案
模型频繁调用错误的参数参数描述 (Description) 过于模糊。提供参数的枚举值 (Enum) 或正则表达式约束。
代码执行结果不符合预期模型生成的 Python 逻辑有误。在 Prompt 中要求模型“分步骤写代码”并加入异常处理。
模型拒绝调用工具任务意图与工具描述不匹配。在系统提示词中明确:“当用户询问状态时,必须使用 get_status 工具。”
安全风险代码执行可能涉及敏感操作。使用官方沙箱或限制自定义函数的权限范围。

#进阶技巧:模型选型建议

  • 全能型 (1.5 Pro):适合多步、复杂的 Function Calling,逻辑严密,适合企业级 Agent。
  • 性能型 (1.5 Flash):响应极快,适合简单的代码执行和单步工具调用,成本极低。
  • 轻量型 (Flash-Lite):适合海量的结构化提取任务。

#小结

  1. Code Execution 让 AI 具备了“计算能力”,不再胡说八道。
  2. Function Calling 是 AI 进入你业务系统的“钥匙”。
  3. 内置工具 扩展了 AI 的感官(如 Google Search)。
  4. 安全第一:在执行 AI 生成的代码或调用敏感 API 时,务必设置权限边界。

#相关资源