Gemini API 使用教程,从入门到深入
开发人员在构建人工智能驱动的应用时,获取稳定且强大的模型接口是首要任务。Gemini API 作为 Google 推出的生成式人工智能接口,为开发者提供了处理文本、图像、视频及音频的能力。了解这一工具的使用方式,需要从最基础的访问凭证获取开始,逐步深入到模型调用逻辑与高级推理配置。
获取访问凭证与环境准备
接入 Gemini API 的第一步是获取 API Key(API 密钥)。这是调用接口的身份凭证,用于识别请求来源并统计配额。开发者需要访问 Google AI Studio 平台,在专门的密钥管理页面创建一个新的 API Key。对于初学者,平台通常会引导创建一个默认的 Google Cloud 项目,该项目作为管理计费、协作和权限的基础。API Key 必须得到妥善保管,因为任何持有该密钥的人都可以消耗账户配额或访问相关数据。
在本地开发环境中,推荐将获取到的密钥设置为环境变量。这样做可以避免将密钥硬编码在源代码中,从而降低密钥随代码提交到版本控制系统(如 Git)而泄露的风险。根据操作系统的不同,设置方式略有差异。在 Linux 或 macOS 的 Bash 环境中,可以通过修改配置文件实现。
export GEMINI_API_KEY=你的密钥内容
执行上述命令并刷新配置文件后,开发环境便具备了自动识别身份凭证的能力。接下来的工作是安装官方提供的开发工具包,即 Google GenAI SDK。该 SDK 支持多种主流编程语言,考虑到 Python 在人工智能领域的广泛应用,本文将以 Python 3.9 及更高版本作为演示环境。通过包管理工具 pip 可以快速完成安装。
pip install -q -U google-genai
安装完成后,开发者便拥有了与 Gemini 模型进行通信的基础库。SDK 的作用是将复杂的 REST API 请求封装为简洁的函数调用,让开发者能够专注于业务逻辑而非底层协议的处理。
发起第一个生成请求
拥有了密钥和 SDK 后,可以尝试发起一个最简单的文本生成请求。在 Python 代码中,首先需要实例化一个客户端对象。由于此前已经设置了环境变量,SDK 在初始化时会自动读取该变量,无需在代码中显式传入密钥。这种设计既保证了安全性,也简化了代码逻辑。
from google import genai
client = genai.Client()
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="用简单的语言解释人工智能如何工作"
)
print(response.text)
在这段代码中,genai.Client() 建立了与后端的连接。调用 models.generate_content 方法时,需要指定使用的模型名称。这里使用的 gemini-2.5-flash 是一个在速度和处理能力之间取得平衡的模型。contents 参数承载了用户输入的提示词。当请求发送并得到响应后,通过访问 response.text 即可获取模型生成的文本结果。
在理解了基础调用流程后,有必要认识 Gemini 系列中的不同模型成员。不同的模型在处理能力、上下文长度以及响应速度上存在差异。开发者应根据具体的应用场景选择最合适的模型,以平衡成本与性能。
| 模型名称 | 主要定位 | 特点说明 |
|---|---|---|
| gemini-3-pro-preview | 强力推理模型 | 适合处理复杂多模态任务、自主编码和深度逻辑推理 |
| gemini-3-flash-preview | 高性价比模型 | 响应速度快,成本极低,适合聊天应用和高吞吐量任务 |
| gemini-3-pro-image-preview | 图像生成模型 | 专注于高质量图像生成及编辑,支持 4K 分辨率 |
| gemini-2.5-flash | 通用均衡模型 | 适用于大多数日常文本生成与多模态分析任务 |
通过这张表格可以看出,Gemini 模型已经进化到了第三代。Gemini 3 系列引入了更先进的推理技术,旨在处理更具挑战性的代理工作流。
深入理解推理配置与思考等级
Gemini 3 系列模型与前代模型最大的不同在于其内置的推理能力。这种能力通过一个名为 thinking_level(思考等级)的参数进行控制。以往开发者可能需要编写复杂的提示词(如思维链)来引导模型进行逐步思考,而现在可以通过 API 级别直接控制模型推理的深度。
思考等级决定了模型在给出最终答案之前,内部进行逻辑推演的深度。增加推理深度通常会显著提高回答的准确性,特别是在处理数学、编程或复杂逻辑问题时,但相应地会增加首个字符输出的延迟。
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents="分析这段多线程代码中可能存在的竞争条件",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_level="high")
),
)
print(response.text)
在配置对象 GenerateContentConfig 中,开发者可以指定不同的等级。不同的模型支持的等级范围有所不同。对于追求极致逻辑质量的任务,应选择 high。
| 思考等级 | 适用场景 | 预期效果 |
|---|---|---|
| low | 简单指令、聊天 | 延迟最低,费用最低,适合快速响应 |
| high | 复杂推理、编码 | 深度推理,质量最高,但响应时间稍长 |
| minimal | 高吞吐量任务 | 仅由 Gemini 3 Flash 支持,几乎不进行额外推理 |
| medium | 通用平衡任务 | 仅由 Gemini 3 Flash 支持,平衡速度与质量 |
在使用推理功能时,需要注意另一个重要的参数:温度(Temperature)。在之前的模型中,调整温度是控制输出随机性的常规手段。但在 Gemini 3 推理模型中,官方强烈建议将其保持为默认值 1.0。这是因为该模型的推理逻辑是针对默认设置进行优化的,随意降低温度可能会导致模型在处理复杂任务时出现逻辑死循环或性能大幅下降。
多模态视觉处理的精细控制
Gemini API 不仅限于处理文本,它天生具备多模态能力,可以直接理解图像和视频。Gemini 3 引入了 media_resolution(媒体分辨率)参数,允许开发者精确控制视觉信息的解析精度。分辨率等级决定了模型在分析图像或视频帧时分配的 Token(令牌)数量。分辨率越高,模型识别细小文字或微小细节的能力就越强。
from google import genai
from google.genai import types
import base64
client = genai.Client(http_options={'api_version': 'v1alpha'})
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents=[
types.Content(
parts=[
types.Part(text="请识别图片中的所有商品标签及价格"),
types.Part(
inline_data=types.Blob(
mime_type="image/jpeg",
data=image_bytes,
),
media_resolution={"level": "media_resolution_high"}
)
]
)
]
)
在处理不同类型的媒体文件时,选择合适的分辨率配置至关重要。
| 媒体类型 | 推荐分辨率 | 场景建议 |
|---|---|---|
| 单张图片 | media_resolution_high | 绝大多数图片分析任务的首选 |
| PDF 文档 | media_resolution_medium | 适合 OCR 文字识别,更高分辨率对文档提升有限 |
| 常规视频 | media_resolution_low | 动作识别、场景描述,节省 Token 消耗 |
| 文字密集视频 | media_resolution_high | 需要读取视频中出现的细小文字或仪表盘细节 |
通过这种精细化控制,开发者可以根据任务难度动态调整成本。例如,识别一张高清发票时使用高分辨率,而识别一段风景视频时则切换到低分辨率。
核心机制:思考签名与上下文保持
在 Gemini 3 的高级用法中,thought_signature(思考签名)是一个必须掌握的概念。思考签名是模型内部推理过程的一种加密表达形式,它允许模型在多轮对话或复杂的工具调用过程中保持推理的连贯性。
对于文字生成或普通的聊天,思考签名的管理是可选的,官方 SDK 通常会自动处理。但在函数调用(Function Calling)和图像编辑等特定场景下, API 会强制执行签名验证。如果在一个复杂的推理链条中丢失了签名,模型将无法找回之前的推理逻辑,从而导致回答质量下降甚至请求报错。
例如,当模型决定调用一个函数来查询机票信息时,它会返回一个包含函数名和参数的 functionCall,同时附带一个思考签名。开发者在获取到函数执行结果并将其发送回模型进行下一轮对话时,必须将该签名原封不动地包含在历史记录中。
# 模型第一轮返回示例逻辑
# response_1.parts 中包含 function_call 和 thought_signature
# 开发者构建回复请求
history = [
{"role": "user", "parts": [{"text": "查一下我的订单"}]},
{"role": "model", "parts": [
{"function_call": {...}, "thought_signature": "模型生成的签名内容"}
]},
{"role": "tool", "parts": [
{"function_response": {"name": "get_order", "response": {...}}}
]}
]
如果开发者需要模拟某种特定的场景,或者由于某些原因无法获取有效的签名(例如从其他模型迁移过来),可以使用一个特定的虚拟字符串来绕过严格验证:context_engineering_is_the_way_to_go。但在正常的生产环境中,应始终遵循原样返回签名的原则。
生成结构化输出与工具集成
深入使用 Gemini API 的另一个方向是生成结构化数据(如 JSON)。这在构建自动化流水线时非常有用,因为它消除了对自然语言输出进行正则匹配的麻烦。Gemini 3 支持在请求中定义 JSON Schema,并允许将结构化输出与内置工具(如 Google 搜索)结合使用。
通过 response_mime_type 和 response_json_schema 参数,开发者可以强制模型按预定义的格式输出结果。
from pydantic import BaseModel
from typing import List
class SearchResult(BaseModel):
summary: str
sources: List[str]
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents="搜索并总结最新的 AI 行业动态",
config={
"tools": [{"google_search": {}}],
"response_mime_type": "application/json",
"response_json_schema": SearchResult.model_json_schema(),
},
)
这种能力使得 Gemini 能够作为一个强大的信息处理中枢:先通过 Google 搜索获取实时信息,再利用模型的高级推理能力进行筛选,最后以标准的 JSON 格式交付给下游系统。这种可操作性极强的集成方案,正是 Gemini API 从基础应用走向深度集成的核心所在。
从环境搭建到第一个请求的发出,再到思考等级、媒体分辨率以及思考签名的深度配置,Gemini API 的使用是一个由浅入深的过程。掌握这些细节,不仅能提升生成内容的质量,更能帮助开发者在复杂的多模态交互与自动化代理任务中游刃有余。
了解更多: