Gemini API Python 调用教程:安装 google-genai SDK、流式输出、多轮对话与传图片

用官方 google-genai SDK 调 Gemini API:安装配置、第一个请求、系统指令与思考等级、流式输出、多轮对话、传图片和查看 token 用量,按 2026 年 10 月官方默认的 Interactions API 写法。

NNathaniel bigo··原创首发·AI 辅助撰写
11 分钟读完
资料核对于 2026-10-10 · 依据官方文档与公开资料整理 其他 账号
本文根据 Gemini API 官方文档(Quickstart、Interactions API、Text generation、Files API、Libraries)和官方 SDK 仓库 googleapis/python-genai 整理,资料核对于 2026-10-10。示例代码基于官方示例改写并加了中文注释;模型 ID 更新很快,以官方 Models 页为准。

适用于谁

  • 会一点 Python,想在脚本或后端里调用 Gemini 的开发者;
  • 搜「gemini api python」「python sdk」「python 调用」的人;
  • 看过旧教程里的 google.generativeai 或 generate_content,不确定现在该用哪种写法的人。

还没有密钥的,先看本站《Gemini API Key 怎么获取:在 AI Studio 创建密钥、设置环境变量与安全限制》。

结论先说

  1. 官方 SDK 是 google-genai:pip install -U google-genai,导入写 from google import genai。旧的 google-generativeai 包已弃用,不再提供新功能。
  2. 官方现在默认推荐 Interactions API:client.interactions.create(model=..., input=...),回复文本在 interaction.output_text。官方说明它自 2026 年 6 月起正式可用(GA),建议所有新项目使用。
  3. 旧的 generateContent 写法仍然完全受支持,官方称它为 legacy(旧版)接口,老项目不用急着改。
  4. 多轮对话可以让服务器记历史:把上一轮的 interaction.id 传给 previous_interaction_id 即可;但系统指令和生成参数每一轮都要重新传。
  5. 密钥放环境变量 GEMINI_API_KEY,SDK 自动读取。

一、安装与配置

bash
python -m venv .venv
source .venv/bin/activate          # Windows: .venv\Scripts\activate
pip install -U google-genai

export GEMINI_API_KEY="你的API密钥"   # Windows PowerShell: $env:GEMINI_API_KEY="你的API密钥"
  • Python 版本:SDK 仓库要求 3.10 及以上。
  • 官方说明 Interactions API 需要 google-genai 2.3.0 及以上版本,装最新版即可。
  • 环境变量 GEMINI_API_KEY 和 GOOGLE_API_KEY 都能被自动识别,两个都设时后者优先。

二、第一个请求

新建 quickstart.py:

python
from google import genai

client = genai.Client()  # 自动读取环境变量里的密钥

interaction = client.interactions.create(
    model="gemini-3.8-flash",
    input="用三句话解释什么是向量数据库",
)
print(interaction.output_text)

运行 python quickstart.py。几个要点:

  • output_text 是 SDK 提供的便捷属性,直接给出最终文本;
  • 完整结果在 interaction.steps 里,是一个按时间排列的「步骤」列表,包括模型的思考(thought)、工具调用和最终输出(model_output);
  • 模型 ID 用官方 Models 页列出的名字。截至 2026-10-10,最新的稳定版文本模型是 gemini-3.8-flash,更便宜的是 gemini-3.5-flash-lite,gemini-3.1-pro-preview 是预览版。

三、系统指令与思考等级

python
interaction = client.interactions.create(
    model="gemini-3.8-flash",
    system_instruction="你是一名耐心的 Python 老师,用中文回答,并配一个最小可运行的例子。",
    input="列表推导式怎么用?",
    generation_config={
        "thinking_level": "low",   # gemini-3.8-flash 可选 low / medium / high,默认 medium
    },
)
print(interaction.output_text)
  • Gemini 3 系列默认开启思考。想更快、更省,把 thinking_level 调低;复杂推理再调高。Gemini 3.8 Flash 不支持 minimal。
  • 旧教程里常见的 temperature、top_p、top_k:官方说明从 Gemini 3.6 Flash、3.5 Flash-Lite 起已弃用并被忽略,新代码不要再传。
  • 系统指令的写法见本站《Google AI Studio 系统指令怎么写:System instructions 与运行设置(思考等级、温度、联网搜索)》。

四、流式输出

加上 stream=True,返回的是一串事件,文本片段在 step.delta 事件里:

python
stream = client.interactions.create(
    model="gemini-3.8-flash",
    input="写一段 200 字左右的秋天散文",
    stream=True,
)
for event in stream:
    if event.event_type == "step.delta" and event.delta.type == "text":
        print(event.delta.text, end="", flush=True)
print()

流里还会有 interaction.created、step.start、step.stop、interaction.completed 等事件,只想显示文字时按上面这样过滤就够了。

五、多轮对话

方式一:服务器保存历史(官方推荐)

python
first = client.interactions.create(
    model="gemini-3.8-flash",
    input="我家里有 2 只狗。",
)
print(first.output_text)

second = client.interactions.create(
    model="gemini-3.8-flash",
    input="那我家一共有多少只爪子?",
    previous_interaction_id=first.id,   # 接上一轮
)
print(second.output_text)

要知道的三件事:

  • previous_interaction_id 只带上对话历史。system_instruction、generation_config、tools 只对当次请求生效,每一轮都要重新传。
  • 默认 store=true,交互记录会保存在服务器上:官方写明免费层保留 1 天,付费层保留 55 天,到期自动删除,也可以调用删除接口提前删。过了保留期的对话就接不上了。
  • 官方说这种方式更容易命中隐式缓存,有助于降低多轮对话的成本。

方式二:自己管理历史(无状态)

不想把对话存在服务器上,就设 store=False,每次把完整历史传过去。官方强调:模型返回的所有步骤(包括 thought 思考步骤)必须原样放回历史里,不能删改,因为里面带有延续推理所需的签名。

python
history = [
    {"type": "user_input", "content": [{"type": "text", "text": "我家里有 2 只狗。"}]}
]
first = client.interactions.create(model="gemini-3.8-flash", store=False, input=history)

for step in first.steps:               # 把模型返回的步骤原样追加
    history.append(step.model_dump())

history.append(
    {"type": "user_input", "content": [{"type": "text", "text": "一共有多少只爪子?"}]}
)
second = client.interactions.create(model="gemini-3.8-flash", store=False, input=history)
print(second.steps[-1].content[0].text)   # 官方示例的取法:最后一个步骤里的文本

六、传图片和文件

先用 Files API 上传,再把文件地址放进 input:

python
uploaded = client.files.upload(file="photo.jpg")

interaction = client.interactions.create(
    model="gemini-3.8-flash",
    input=[
        {"type": "text", "text": "这张图里有什么?用中文描述。"},
        {"type": "image", "uri": uploaded.uri, "mime_type": uploaded.mime_type},
    ],
)
print(interaction.output_text)

小图片也可以不上传,读成 base64 后用 {"type": "image", "data": 图片的base64字符串, "mime_type": "image/jpeg"} 直接放进请求。官方给出的边界:

  • 整个请求(文件、提示词、系统指令加在一起)超过 100 MB 时必须用 Files API,PDF 的界限是 50 MB;
  • Files API 每个项目可存 20 GB,单个文件最大 2 GB,文件保存 48 小时后自动删除;
  • Files API 本身不收费,在 Gemini API 可用的地区都能用。

同样的写法可以传音频("type": "audio")等其他类型,Gemini 3.8 Flash 支持文本、图片、视频、音频和 PDF 输入。

七、看 token 用量

python
print(interaction.usage)   # 含输入、输出、思考 token 数

# 发送前先估算输入 token
count = client.models.count_tokens(model="gemini-3.8-flash", contents="你好,世界")
print(count.total_tokens)

官方说明开启思考时,输出费用按「输出 token + 思考 token」计算,思考 token 数在 interaction.usage.total_thought_tokens。统计 token 的请求本身不计费。

八、报错和重试

  • 官方排错页说明,Python SDK 默认会对超时、网络问题、429 和 5xx 这类暂时性错误自动重试,最多 4 次,首次等待约 1 秒,最长 60 秒。
  • 400、402、403 这类错误重试没有用,要先解决问题本身(参数写错、预付余额用完、密钥无权限)。
  • 遇到 429 的完整排查方法见本站《Gemini API 429 错误怎么解决:RESOURCE_EXHAUSTED 的原因与 400 / 403 / 503 排查表》。

九、旧写法 generateContent 还能用吗

能用。官方的说法是 generateContent 现在属于 legacy 接口,但仍然完全受支持;同时也说明今后新模型、新工具和智能体功能会先在 Interactions API 上线。旧写法长这样:

python
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents="用三句话解释什么是向量数据库",
)
print(response.text)

chat = client.chats.create(model="gemini-3.8-flash")   # SDK 在本地帮你记历史
print(chat.send_message("我家里有 2 只狗。").text)

反过来,有几项功能官方写明目前只有 generateContent 支持:Batch API、Python 的自动函数调用、显式上下文缓存、自定义安全设置。用到这些就继续用旧接口。

如果你的代码里还是 import google.generativeai as genai,那是更早的旧 SDK,官方已在 2025 年 11 月 30 日弃用,建议按迁移指南换到 google-genai。

常见问题

Q:报找不到模型(404)?

检查模型 ID 是否和官方 Models 页一致。预览版模型的名字带 -preview 后缀,下线后会直接不可用,下线时间表在官方 Deprecations 页。

Q:能在 Jupyter / Colab 里用吗?

能。官方提醒 Colab 的地区限制按 Colab 实例所在的地区判断,而不是按用户所在地。

Q:免费能调用吗?

项目没绑定结算账号时处于免费层,可以免费调用部分模型,但有速率限制,而且提交的内容会被 Google 用于改进产品。详见本站《Gemini API 免费额度是多少:免费层级、RPM / TPM / RPD 速率限制与限额查询》。

Q:Gemini API 在哪些地区可用?

以官方 Available regions 页面的列表为准,目前没有列出中国大陆。请遵守所在地法律和服务条款。

参考资料

  • Gemini API quickstart(官方):https://ai.google.dev/gemini-api/docs/quickstart
  • Gemini API quickstart(generateContent 版,官方):https://ai.google.dev/gemini-api/docs/generate-content/quickstart
  • Interactions API(官方):https://ai.google.dev/gemini-api/docs/interactions-overview
  • Text generation(官方):https://ai.google.dev/gemini-api/docs/text-generation
  • Gemini API libraries(官方):https://ai.google.dev/gemini-api/docs/libraries
  • Migrate to the Google GenAI SDK(官方):https://ai.google.dev/gemini-api/docs/migrate
  • Files API(官方):https://ai.google.dev/gemini-api/docs/files
  • Gemini thinking(官方):https://ai.google.dev/gemini-api/docs/thinking
  • Understand and count tokens(官方):https://ai.google.dev/gemini-api/docs/tokens
  • Models(官方):https://ai.google.dev/gemini-api/docs/models
  • Gemini deprecations(官方):https://ai.google.dev/gemini-api/docs/deprecations
  • Troubleshooting guide(官方):https://ai.google.dev/gemini-api/docs/troubleshooting
  • googleapis/python-genai(官方 SDK 仓库):https://github.com/googleapis/python-genai

Nathaniel 的更多内容

  1. 01

    MCP 的 stdio、SSE 和 Streamable HTTP 有什么区别:本地与远程 MCP 怎么选

    MCP 配置里的 stdio、sse、http 到底差在哪?按 MCP 官方规范讲清两种标准传输方式的工作原理、Streamable HTTP 与旧的 HTTP+SSE 的关系、会话与断线续传、规范对安全的硬性要求,以及本地服务器和远程服务器各适合什么场景。

    Claude其他 AI 工具0
  2. 02

    copilot-instructions.md 怎么写:用途、范例、按路径生效的 instructions 文件与 AGENTS.md 的区别

    copilot-instructions.md 是什么、放哪、怎么写?按 GitHub 官方文档讲清仓库级指令、.github/instructions 下按路径生效的 *.instructions.md(applyTo / excludeAgent)、AGENTS.md 三者的分工,附可改写的中文范例与不生效排查。

    GitHub Copilot0
  3. 03

    Midjourney 可以商用吗:作品归属、商用条件与隐身模式

    Midjourney 生成的图片和视频能不能商用、版权归谁、公司用要什么套餐、作品会不会被别人看到?本文按 Midjourney 服务条款逐条解释,并补充中美对 AI 生成图片版权的官方 / 司法观点。

    其他 AI 工具0
  4. 04

    扣子智能体怎么发布:飞书、微信公众号、小程序、API 等渠道步骤与审核

    扣子智能体怎么发布到飞书、微信公众号、小程序或做成 API?本文按扣子官方文档讲清有哪些发布渠道、打包与两轮审核的流程、首次发布 1–7 个工作日的审核时间、各渠道功能差异,以及发布到豆包这类问题官方文档目前怎么写。

    其他 AI 工具0
  5. 05

    Claude Code Subagents(子代理)怎么用:创建、调用与最佳实践

    Claude Code 子代理是在独立上下文里干活、只交回摘要的专用助手。本文讲内置子代理、怎么创建(.claude/agents)、frontmatter 字段、三种调用方式、指定模型和常见用法。

    Claude0
  6. 06

    ChatGPT 搜索怎么用:联网搜索、查看来源与结果不准怎么办

    ChatGPT 能联网搜索最新信息并附上来源链接。本文按官方帮助中心讲清怎么手动开启搜索、怎么看引用来源、本地结果不准的原因(位置设置)、搜索按钮不见了怎么排查,以及什么时候该用深度研究。

    ChatGPT0

同模型

  1. 01

    Gemini API Key 怎么获取:在 AI Studio 创建密钥、设置环境变量与安全限制

    调用 Gemini API 先要在 Google AI Studio 创建 API Key。本文讲清创建入口、密钥与项目的关系、2026 年新的授权密钥规则、环境变量怎么设、怎么测试,以及密钥被封或泄露后的处理。

    Gemini0
  2. 02

    NotebookLM 学习卡是什么:抽认卡(闪卡)与测验的生成、复习和下载

    NotebookLM(现名 Gemini Notebook)的学习卡是什么、怎么用?本文按官方帮助讲清抽认卡和测验的生成步骤、难度与数量设置、「答对了 / 没答对」进度记录、只练错题、下载 CSV,以及手机上怎么刷卡。

    Gemini0
  3. 03

    Gemini 临时对话怎么用:能保存吗、关掉后能找回吗、数据保留多久

    Gemini 的临时对话不进聊天记录、不用于训练模型,但离开后就再也打不开。本文按官方帮助中心讲:怎么开启、谁能用、临时对话里不能做什么、想保存内容该怎么办、Google 实际保留 72 小时是怎么回事,以及它和关闭活动记录的区别。

    Gemini0
  4. 04

    Gemini Live 怎么用:如何开启语音对话、共享摄像头和屏幕、后台通话与字幕

    Gemini Live 是手机上的实时语音对话:可以随时打断、让它看摄像头画面或手机屏幕、在后台和锁屏时继续聊。本文按官方帮助中心讲开启条件、操作步骤、能调用哪些应用、字幕与声音设置,以及常见的「没有 Live 按钮」等问题。

    Gemini0
  5. 05

    Gemini 怎么用:网页版入门教程(登录、提问、选模型、传文件、生成文档)

    第一次用 Google Gemini 的入门教程:需要什么账号和浏览器、不登录能用什么、怎么提问和改提问、怎么切换模型、上传文件、让它直接生成 Word / Excel / PDF 文件,以及新手最常遇到的几个问题。

    Gemini0
  6. 06

    Google 表格 Gemini 怎么用:生成表格和公式、数据分析图表与 AI 函数(=AI)的用法和限制

    Google 表格(Google Sheets)里的 Gemini 能按一句话建表、写公式和修公式、分析数据出图表、直接替你设条件格式和数据透视表,还有能写进单元格的 =AI() 函数。本文按官方帮助中心整理用法、示例提示、官方列出的限制,以及「AI function not available」的原因。

    Gemini0

同产品的其他教程

  1. 01

    ChatGPT 和 Gemini 哪个好用:按官方页面对比套餐、额度、上下文和功能,怎么选

    ChatGPT 和 Gemini 哪个好用?本文只整理两家官方页面能查到的差异:套餐名称、免费版额度、付费档用量倍数、额度多久刷新、上下文窗口数字,以及各自的特色功能入口。不给「谁更强」的结论,文末附一份用自己任务测试的清单。

    ChatGPTGemini0
  2. 02

    Gemini 怎么设置中文:网页版、安卓、iPhone 的语言设置与让它用中文回答

    Gemini 没有独立的网页语言开关:网页版跟随浏览器或设备语言,安卓 App 在设置里选,iPhone 跟随系统首选语言。本文分端讲清怎么把界面改成中文、怎么让回答固定用中文、语音和「Hey Google」的语言限制,以及改了不生效的排查。

    Gemini0
  3. 03

    Gemini 学生优惠怎么申请:官方资格条件、适用地区、学生认证流程与到期后会怎样

    Gemini 学生优惠到底谁能领?按 Google One 官方帮助中心:免费 12 个月的 Google AI Pro 学生试用仅限美国高校在读学生,其他地区是学生折扣或捆绑方案,都要用学校邮箱通过 SheerID 验证,且每 12 个月复核。本文讲清资格、地区、流程、到期自动转付费等官方规则。

    Gemini0
  4. 04

    Nano Banana 多图融合与人物一致性:换装、合成、保持同一角色的方法

    用 Nano Banana 把多张图合成一张、给人物换装、让同一个角色出现在一组图里,怎么写提示词、最多能放几张参考图、细节怎么保住?本文按 Google 官方 API 文档和博客整理成步骤与模板。

    Gemini0
  5. 05

    Gemini 怎么下载:手机版(安卓 / iPhone)与电脑版(Windows / Mac)官方下载和系统要求

    Gemini 除了网页版,还有安卓、iPhone 的手机 App 和 Windows、Mac 的桌面客户端。本文按官方帮助中心列出每个版本的官方下载入口、系统要求、安装步骤和特色功能,说明安卓上「替换 Google 助理」是怎么回事、怎么换回去,以及搜不到 App 的官方原因。

    Gemini0
  6. 06

    Gemini 图片编辑请求被拒绝怎么办:常见原因与合规的改写方法

    Gemini 提示「无法编辑这张图片」「请求被拒绝」,或者图片生成后又被删掉?本文按 Google 官方帮助中心和政策,把原因分成账号与年龄、内容政策、真实人物、地区与额度、技术问题五类,逐一给出排查顺序和合规的改写办法。

    Gemini0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~