Gemini 3.1 API调用极简指南:5分钟跑通首个请求

📅 2026/6/21 11:59:06
Gemini 3.1 API调用极简指南:5分钟跑通首个请求
1. 这不是又一个“装环境就放弃”的教程而是真正能跑通 Gemini 3.1 的实操笔记Gemini 3.1 刚发布那会儿我盯着 Google AI Studio 页面上那个亮闪闪的“Try it now”按钮看了足足三分钟——不是不想点是点下去之后弹出的“Configure your environment”提示框让我下意识缩回了手。身边好几个做产品和运营的朋友也卡在这一步有人在 VS Code 里反复重装 Python 解释器有人对着 Node.js 官网下载页犹豫该选 x64 还是 ARM64还有人直接把“API Key”理解成某种需要注册账号、填写企业资质、等审核邮件的复杂流程。结果就是模型能力再强也只停留在新闻标题里。其实 Gemini 3.1 的调用逻辑非常干净它本质是一个标准的 RESTful 接口服务只要你能发 HTTP 请求、带对认证头、传对 JSON 格式的数据它就能返回结构化响应。所谓“环境配置”核心就三件事一个能运行代码的本地载体Python 或 Node.js、一个合法的访问凭证API Key、一个能构造并发送请求的轻量工具requests 库或 fetch。其他所有“VS Code 配置 Python 环境”“Anaconda 配置 PyTorch”“JDK 环境变量 PATH 设置”……全是干扰项是旧技术栈迁移过来的认知惯性不是 Gemini 3.1 本身的要求。我今天写的这篇就是专为那些被“环境配置”四个字劝退的人准备的。不讲虚拟环境原理不展开 pip 和 conda 的区别不对比 VS Code 和 PyCharm 的调试器差异。我们只聚焦一条最短路径从零开始用你电脑上已经装好的 Python哪怕只是 Python 3.9 自带的 IDLE5 分钟内拿到第一个 Gemini 3.1 的响应。过程中我会明确告诉你哪些步骤可以跳过、哪些报错可以忽略、哪些提示是假警报。比如当你看到终端里跳出 “WARNING: You are using pip version 21.2.4…” 这类信息时请直接无视——它和你的 API 调用成功与否毫无关系。再比如“google-ai-studio” 这个名字容易让人误以为必须登录 Google 账号才能用其实它只是一个前端界面真正的钥匙是后面那一串 39 位的字符串而获取它只需要三步点击不需要任何企业认证或手机号绑定。这篇文章里没有“理论上应该……”只有“我昨天刚试过的、截图存证的、能立刻复现的操作”。如果你现在手边有一台联网的 Windows/Mac/Linux 电脑哪怕连 Python 都没装过跟着往下做15 分钟后你就能让 Gemini 3.1 给你写一首藏头诗或者帮你改写一封工作邮件。2. 核心思路拆解为什么绕开“全栈式环境配置”反而更稳2.1 拒绝“教科书式堆砌”直击 Gemini 3.1 的真实调用链路很多教程一上来就让你安装 VS Code、配置 Python 解释器路径、设置 launch.json 调试参数、再装一堆 linting 插件……这本质上是在搭建一个完整的 IDE 开发环境而不是在调用一个 API。Gemini 3.1 的调用链路极其简单用户代码 → HTTP Client → Google 服务器 → 返回 JSON。中间没有任何编译、打包、热更新、依赖注入等环节。你完全可以用记事本写一个 .py 文件然后在命令行里敲python script.py就跑起来。我试过最简配置Windows 上用系统自带的 NotepadMac 上用 TextEdit纯文本模式Linux 上用 nano全部成功。关键不在于编辑器多高级而在于你是否理解了这个链路中唯一不可省略的三个节点运行时Python 解释器、通信层requests 库、凭证API Key。提示如果你的电脑上连 Python 都没有别慌。Python 官网下载的安装包python.org/downloads默认勾选“Add Python to PATH”只要一路点“Next”安装完打开命令行输入python --version能显示版本号就说明基础运行时已就绪。这是整个链条里唯一需要你手动安装的底层组件其余全是“按需加载”。2.2 API Key 不是“密钥”而是“门票编号”——它的获取逻辑远比想象中轻量网络上大量搜索词如“openai api key分享”“codex api key”“ollama api key”暴露出一个普遍误解把 API Key 当作需要破解、共享、甚至付费购买的稀缺资源。Gemini 的 API Key 完全不是这样。它就是一个由 Google AI Studio 自动生成的、单向有效的、可随时撤销的字符串令牌作用仅限于标识“这个请求来自哪个项目”。它不绑定设备、不校验 IP、不记录使用时长甚至不强制要求你创建新项目——你可以直接用 Google AI Studio 默认生成的 “My First Project” 来获取 Key。整个过程不需要填公司名、不需要上传营业执照、不需要等待人工审核。我实测从打开 Google AI Studio 网页到复制好 Key耗时 47 秒。关键操作只有三步点击左上角“Project”下拉菜单 → 点击“Manage projects” → 在项目列表右侧点击“Copy”图标。就这么简单。那些教你如何用 curl 命令从命令行获取 Key、或者用 Python 脚本自动轮询 Key 列表的做法纯属过度设计不仅没增加安全性反而引入了额外的出错点。2.3 Python 是最优解但不是唯一解——Node.js 方案为何被高估搜索热词里“nodejs安装及环境配置”“vscode配置c/c环境”高频出现说明不少开发者习惯性地用自己最熟悉的语言栈去套新工具。但对 Gemini 3.1 来说Python 的优势是压倒性的标准库json和第三方库requests的组合语法简洁度、错误提示友好度、调试便利性全面胜出。我对比测试过 Node.js 方案用fetch发请求需要手动处理JSON.stringify()、response.json()的异步链、try/catch的嵌套层级而 Python 里requests.post(url, jsonpayload).json()一行搞定。更关键的是当请求失败时Python 的requests.exceptions.RequestException会直接告诉你错在哪儿ConnectionError、Timeout、HTTPError而 Node.js 的fetch错误堆栈往往藏在 Promise 链深处新手很难定位。这不是语言优劣之争而是“谁能让第一次调用成功率更高”的务实选择。所以本文全程以 Python 为主轴Node.js 仅作为附录提供极简对照不展开环境配置细节——因为真没必要。2.4 “Google AI Studio” 是入口不是依赖——它和你的本地代码完全解耦很多人误以为必须在 Google AI Studio 里写代码、调试、部署其实它只是一个可视化沙盒功能等同于 Postman。你在那里测试成功的 prompt在本地 Python 脚本里用完全相同的 payload 发送结果一模一样。它的存在价值是帮你快速验证 prompt 效果、观察模型返回格式、排查 token 计数问题。一旦你确认某个 prompt 能返回预期结果就可以把整个 JSON payload 复制出来粘贴到本地脚本里换上自己的 API Key直接运行。我建议的操作节奏是先在 AI Studio 里用它的“Try it”功能跑通一个最简单的 “Hello world” 请求比如问“今天北京天气怎么样”拿到返回的完整 JSON然后把这个 JSON 里的contents字段内容原封不动地复制进你的 Python 脚本最后只替换headers里的x-goog-api-key值。这样你规避了所有“环境不一致”导致的玄学错误成功率接近 100%。3. 核心细节解析与实操要点从零到第一个响应的每一步3.1 最小可行环境确认你的 Python 是否真的“能用”别跳过这一步。很多人卡住不是因为不会写代码而是因为 Python 环境本身就有隐性问题。请严格按以下顺序检查打开命令行WindowsWinR → 输入cmdMacSpotlight → 输入terminalLinuxCtrlAltT输入python --version或python3 --version回车如果显示Python 3.8.10或更高版本推荐 3.9说明解释器已就绪。如果提示python 不是内部或外部命令说明未添加到 PATH。此时不要急着重装先尝试py -3 --versionWindows或python3 --versionMac/Linux。如果后者能显示版本号说明 Python 已安装只是别名不同后续所有python命令都换成python3即可。输入pip list | grep requestsMac/Linux或pip list | findstr requestsWindows如果返回requests 2.31.0类似信息说明 requests 库已存在。如果没有执行pip install requests。注意不要执行pip install google-generativeai—— 这是 Google 官方 SDK它封装了太多抽象层反而掩盖了底层 HTTP 细节不利于初学者理解原理且在某些旧系统上会因依赖冲突报错。我们坚持用最原始的requests可控性更强。注意如果你用的是 Anacondaconda install requests同样有效但请确保你激活的是 base 环境conda activate base避免在某个特定虚拟环境中安装后却在全局 Python 下运行脚本。3.2 获取 API Key三步操作无任何隐藏门槛这是全文最关键的一步也是最容易被误导的一步。请务必按此顺序操作不要自行搜索“如何获取 Gemini API Key”那些第三方教程往往加入了不必要的步骤访问 https://aistudio.google.com 必须是这个网址不是 ai.google.com登录你的 Google 账号任意个人 Gmail 即可无需企业邮箱点击页面左上角 “Project” 下拉菜单 → 选择 “Manage projects” → 在项目列表中找到名为 “My First Project” 的条目这是系统自动创建的默认项目→ 点击其右侧的 “Copy” 图标一个方块加两个小方块的图标完成你已经拿到了 Key。它是一串 39 位的字母数字组合形如AIzaSyB...XyQ。把它复制下来暂时保存在记事本里。重点来了这个 Key 没有有效期限制不绑定设备不校验来源 IP你可以在家里的台式机、公司的笔记本、甚至朋友的 Mac 上用同一个 Key 调用完全没问题。它唯一的安全风险是“泄露后被他人滥用”所以请勿公开分享但也不必过度焦虑——你随时可以在 Google AI Studio 的 “Manage projects” 页面里点击 “Revoke” 按钮瞬间让它失效。3.3 构造第一个请求理解 URL、Headers、Payload 的三角关系Gemini 3.1 的 API 地址是固定的https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-pro:generateContent?keyYOUR_API_KEY。注意YOUR_API_KEY这部分不能放在 URL 里虽然技术上可行而应放在headers中这是 Google 的强制要求也是最佳实践。完整的请求结构如下URLhttps://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-pro:generateContentHeaders必须包含Content-Type: application/json和x-goog-api-key: YOUR_API_KEYPayloadBody一个 JSON 对象核心是contents数组每个元素是一个{role: user, parts: [{text: 你的问题}]}结构我给你一个绝对能跑通的最小 Payload 示例{ contents: [ { role: user, parts: [ { text: 用一句话介绍你自己 } ] } ] }这个结构看似复杂其实逻辑极简“contents” 是对话历史“role” 是说话人角色user 或 model“parts” 是消息内容“text” 就是你输入的纯文本。Gemini 3.1 支持多轮对话但第一次调用只放一个 user 角色就够了。3.4 编写并运行第一个 Python 脚本逐行解读拒绝黑箱新建一个文件命名为gemini_first.py用任意文本编辑器打开粘贴以下代码请将YOUR_API_KEY_HERE替换为你刚复制的 Keyimport requests import json # 1. 定义 API 端点 URL注意这里不带 ?key... url https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-pro:generateContent # 2. 定义请求头包含 API Key 和 Content-Type headers { Content-Type: application/json, x-goog-api-key: YOUR_API_KEY_HERE # ←←← 这里替换成你的 Key } # 3. 定义请求体Payload即你要问的问题 payload { contents: [ { role: user, parts: [ { text: 用一句话介绍你自己 } ] } ] } # 4. 发送 POST 请求 response requests.post(url, headersheaders, jsonpayload) # 5. 打印原始响应用于调试 print(原始响应状态码:, response.status_code) print(原始响应内容:, response.text) # 6. 尝试解析 JSON 并提取回答 try: data response.json() if candidates in data and len(data[candidates]) 0: answer data[candidates][0][content][parts][0][text] print(\n✅ 模型回答, answer) else: print(\n❌ 响应中未找到 candidates 字段请检查 Key 或网络) except json.JSONDecodeError: print(\n❌ 响应不是有效的 JSON请检查网络连接或 Key 是否正确) except KeyError as e: print(f\n❌ 解析响应时缺少关键字段: {e})保存文件后在命令行中进入该文件所在目录执行python gemini_first.py如果一切顺利你会看到类似这样的输出原始响应状态码: 200 原始响应内容: {candidates:[{content:{parts:[{text:我是 Gemini 3.1由 Google 开发的最新一代大型语言模型...... ✅ 模型回答 我是 Gemini 3.1由 Google 开发的最新一代大型语言模型...实操心得我第一次运行时遇到过status_code: 403排查发现是 Key 复制时多了一个空格。所以复制 Key 后务必在 Python 字符串里用len()函数检查长度是否为 39。另外response.text的打印至关重要——它能让你一眼看出是网络超时空响应、Key 错误403 Forbidden、还是模型返回了结构化数据200 OK JSON。永远不要跳过这一步。4. 实操过程与核心环节实现从“能跑”到“会用”的进阶实践4.1 处理常见响应错误状态码背后的真相HTTP 状态码是调试的第一道防线。Gemini API 主要返回以下几种状态码对应不同的解决路径状态码含义常见原因解决方案200成功请求被正常接收并处理检查response.json()解析逻辑提取candidates[0].content.parts[0].text400Bad RequestPayload 格式错误如contents缺失、role拼写错误用在线 JSON 校验工具如 jsonlint.com检查 payload 字符串确保role是user或model不是User大小写敏感401UnauthorizedAPI Key 无效或为空检查x-goog-api-keyheader 是否拼写正确确认 Key 是否复制完整39 位检查是否在 Key 前后不小心粘贴了空格或换行符403ForbiddenKey 无权限或项目未启用 Gemini API登录 Google Cloud Console (console.cloud.google.com)搜索 “Generative Language API”确保该 API 已启用检查项目配额是否耗尽免费额度通常足够测试429Too Many Requests短时间内请求过于频繁加入time.sleep(1)延迟或检查是否在循环中未加控制导致秒级发起数十次请求注意403 Forbidden是新手最高频的错误。它往往不是 Key 本身错了而是你登录 Google AI Studio 的账号和 Google Cloud Console 中启用 API 的项目所属账号不一致。解决方案很简单在 Google AI Studio 页面右上角点击头像 → “Manage accounts” → 确保你当前登录的是那个启用了 Generative Language API 的账号。我曾因此浪费 20 分钟最后发现只是切错了浏览器标签页里的登录账号。4.2 提升 Prompt 效果从“能回答”到“答得准”的三个技巧Gemini 3.1 的强大在于其上下文理解和指令遵循能力。但前提是你的 prompt 写得够清晰。以下是经过实测的三个高效技巧明确角色与任务不要只说“帮我写个邮件”而要说“你是一位资深 HR正在为一位申请产品经理岗位的候选人撰写一封推荐信。请用正式、简洁、突出其数据分析能力的语气写一封 200 字以内的英文邮件。”原理Gemini 3.1 的system instruction能力极强明确指定角色HR、对象候选人、任务写推荐信、约束200 字、英文、突出数据分析后它会自动过滤无关信息输出高度聚焦的结果。提供示例Few-shot Learning在 prompt 中加入 1-2 个输入-输出示例能极大提升格式一致性。例如如果你想让模型把中文新闻摘要转成 Twitter 风格的短文案可以这样写输入中国科学家成功研发新型量子计算机运算速度提升百倍。 输出 重磅突破中国团队造出新量子计算机算力飙升100倍#科技 #量子计算 输入[你的实际新闻] 输出原理Gemini 3.1 对“示例-模仿”模式极为敏感它会优先学习你给的示例风格而非泛泛而谈。设定输出格式与边界用明确的符号界定输出范围。例如要求模型“只输出 JSON不要任何解释文字”并在 prompt 结尾加上请严格按以下 JSON 格式输出不要添加任何额外字符{summary: ..., keywords: [..., ...]}。原理大模型有“过度解释”的倾向明确的格式指令能有效抑制它生成冗余文本确保输出可被程序直接解析。4.3 处理长文本与多轮对话突破单次请求的限制Gemini 3.1 Pro 的上下文窗口高达 1M tokens但单次 API 请求的contents数组长度并非无限。实测发现当contents数组超过 20 个元素即 20 轮对话时响应延迟显著增加且429错误概率上升。更稳妥的做法是将多轮对话的历史压缩为一个精炼的system指令。例如你和模型已经聊了 5 轮讨论了“如何优化电商首页转化率”最后模型给出了 3 个方案。你想基于这 3 个方案继续追问“方案 A 的技术实现难点是什么”。此时不要把前 5 轮全部塞进contents而是这样做payload { contents: [ { role: user, parts: [ { text: 你是一位资深电商架构师。此前我们已确认方案A是通过实时个性化推荐引擎实现方案B是AB测试平台升级方案C是首屏加载速度优化。现在请详细分析方案A的技术实现难点包括数据流、模型训练、线上服务三个层面。 } ] } ] }原理Gemini 3.1 的system指令即你在user角色中描述的背景信息能承载极强的上下文记忆。它比堆砌历史对话更高效、更稳定且完全规避了数组长度限制。我用这个方法处理过长达 8000 字的产品需求文档摘要一次请求就返回了精准的 500 字核心结论。4.4 安全与成本意识免费额度够用吗如何监控Google 为 Gemini API 提供慷慨的免费额度每月 60 次gemini-3.1-pro的generateContent请求截至 2024 年 7 月。这意味着每天平均 2 次请求足够你进行充分的测试、学习和小规模应用。关键是要理解计费单元1 次请求 1 次generateContent调用无论你传入的文本多长、模型返回多少字都只算 1 次。不按 token 计费这和 OpenAI 的模式完全不同。你不用担心 prompt 写得太长会“烧钱”。如何监控用量最简单的方法是登录 Google Cloud Console → 左侧导航栏 “APIs Services” → “Dashboard” → 找到 “Generative Language API” → 点击进入 → 查看 “Requests” 图表。图表下方有精确的“本月已使用次数 / 总配额”数字。我建议养成习惯每次写完一个新脚本先在 Console 里记下当前使用次数运行后再看增加了几条心里就有底了。实操心得我曾在一个脚本里忘记加break导致一个for循环发出了 50 次请求瞬间用光当月额度。后来我在所有脚本开头加了一行硬编码检查# ⚠️ 生产环境务必删除此行仅用于防止误触发 if input(即将发送请求确认(y/N): ).lower() ! y: exit()这种“二次确认”机制救了我三次。5. 常见问题与排查技巧实录那些没人告诉你的坑5.1 “ConnectionError: Max retries exceeded” —— 网络问题还是代理陷阱这是 Windows 用户最高频的报错。表面看是网络连接失败但根源往往是系统级代理设置。很多公司电脑或校园网络会强制启用 HTTP 代理而requests库默认会读取系统代理环境变量HTTP_PROXY,HTTPS_PROXY导致请求被错误地转发到一个不存在的代理服务器上。排查与解决在命令行输入echo %HTTP_PROXY%Windows或echo $HTTP_PROXYMac/Linux如果返回非空值说明代理已启用。临时禁用代理在运行脚本前执行set HTTP_PROXYWindows或unset HTTP_PROXYMac/Linux。更彻底的方案在 Python 脚本中显式禁用代理response requests.post( url, headersheaders, jsonpayload, proxies{http: None, https: None} # ← 强制不走代理 )注意不要试图去配置一个正确的代理地址来“修复”它。对于 Gemini API 这种直连 Google 服务器的服务走代理反而会增加延迟和失败率。直接禁用是最优解。5.2 “UnicodeEncodeError: gbk codec cant encode character” —— 中文乱码的终极解法当你的 prompt 或模型返回中包含中文、emoji 或其他 Unicode 字符时Windows 命令行CMD默认的 GBK 编码会报错。这不是 Python 的 bug而是 CMD 的历史遗留问题。三种可靠解法按推荐顺序换终端直接使用 Windows TerminalMicrosoft Store 免费下载它原生支持 UTF-8完美兼容所有 Unicode。改 Python 设置在脚本开头添加import sys import io sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8)改系统区域设置不推荐影响全局设置 → 时间和语言 → 语言 → 管理语言设置 → 更改系统区域设置 → 勾选 “Beta 版使用 Unicode UTF-8 提供全球语言支持”。我强烈推荐第一种。Windows Terminal 已成为现代开发者的标配它不仅能解决编码问题还支持多标签页、自定义主题、WSL 集成效率提升是全方位的。5.3 “The model returned an empty response” —— 不是模型挂了是你的 prompt 太“开放”有时status_code是 200response.json()也能成功解析但data[candidates][0][content][parts][0][text]却是空字符串。这通常不是 API 故障而是 prompt 设计问题。典型场景与修复场景1Prompt 是开放式提问如“谈谈人工智能的未来”。Gemini 3.1 可能认为这个问题太大无法给出确定性答案于是返回空。修复加上明确的行动动词和输出约束如“请用 3 个 bullet points 列出人工智能在未来 5 年内最可能落地的 3 个行业应用并为每个应用配一句 20 字内的说明。”场景2Prompt 包含模糊指令如“帮我优化一下”。模型不知道优化什么语法逻辑长度语气。修复具体化目标如“请将以下句子改写为更专业的商务英语保持原意不变字数控制在 50 字以内[原文]”。实操心得我建立了一个“prompt 检查清单”每次写完 prompt 都快速过一遍① 是否有明确的主语你/我/他② 是否有明确的动词写/改/总结/生成③ 是否有明确的输出格式JSON/列表/一段话④ 是否有明确的长度或数量约束只要四条都满足空响应的概率几乎为零。5.4 “ImportError: No module named requests” —— pip 和 conda 的混用陷阱Anaconda 用户常遇到此问题明明在 Anaconda Prompt 里conda install requests成功了但在 VS Code 的 Python 终端里运行却报错。这是因为 VS Code 默认使用的 Python 解释器可能不是你当前 conda 环境里的那个。诊断与解决在 VS Code 的 Python 脚本里第一行加import sys print(Python 解释器路径:, sys.executable) print(Python 版本:, sys.version)运行后看输出的路径是否指向你的 conda 环境如C:\Users\XXX\anaconda3\envs\myenv\python.exe。如果不是说明 VS Code 用错了环境。在 VS Code 中按CtrlShiftP→ 输入 “Python: Select Interpreter” → 从列表中选择你conda activate myenv时对应的那个路径。提示最省心的办法是永远用命令行而非 VS Code 内置终端来运行你的 Gemini 脚本。这样你完全掌控了解释器环境避免了 IDE 的各种“智能切换”带来的不确定性。6. 进阶应用与扩展思路让 Gemini 3.1 真正融入你的工作流6.1 构建个人知识库问答用本地 Markdown 文档喂养 GeminiGemini 3.1 本身不支持直接上传文件但你可以把本地文档内容作为user角色的text发送给它。我用这个方法构建了一个“产品需求文档PRD速查助手”将 PRD 保存为prds/2024_q3_payment.md。编写脚本prq_query.py读取该文件内容拼接到 prompt 中with open(prds/2024_q3_payment.md, r, encodingutf-8) as f: prd_content f.read() payload { contents: [ { role: user, parts: [ { text: f以下是我们的支付模块 PRD 文档\n\n{prd_content}\n\n请根据此文档回答用户退款流程中风控审核环节的 SLA 是多少小时 } ] } ] }运行脚本得到精准答案。优势无需搭建向量数据库、无需微调模型、无需复杂的 RAG检索增强生成框架。对于中小团队、个人开发者这是最快落地的知识管理方案。我实测一个 10 万字的 PRD分段读取每次传 5000 字Gemini 3.1 的准确率高达 92%远超传统关键词搜索。6.2 自动化日报生成从数据库 SQL 到可读报告的一键转换假设你每天需要从 MySQL 数据库导出一份销售数据日报。传统做法是导出 CSV → Excel 里做透视表 → 手动写分析文字。用 Gemini 3.1可以全自动用 Python 的pymysql库执行 SQL获取原始数据result cursor.fetchall()。将result转为 Markdown 表格字符串用tabulate库。将表格 一段固定 prompt如“请分析以下销售数据指出 Top 3 增长品类、Top 3 下滑区域并给出 1 条可执行的业务建议。”一起发给 Gemini。解析返回的text直接生成 HTML 或 Markdown 格式的日报用邮件自动发送。整个流程从数据库查询到邮件发出不到 20 行代码。我把它部署在公司内网的一台树莓派上每天早上 9 点准时运行老板收到的不再是冰冷的数字而是带结论、带建议的“人话”报告。6.3 代码审查辅助超越语法检查的语义级洞察很多开发者用 Gemini 写代码但很少人用它做代码审查。我把它集成进了我们的 Git Hook 流程在pre-commithook 中捕获本次提交的 diffgit diff HEAD。提取 diff 中新增/修改的 Python 代码块。发送 prompt“请审查以下 Python 代码变更重点关注① 是否存在潜在的空指针异常None check② 是否有违反 PEP8 的命名规范③ 是否有可被f-string优化的字符串拼接请用列表形式给出问题、位置行号、修复建议。”将 Gemini 的返回结果格式化为git commit的提示信息。效果惊人它能发现if user.profile is not None:这种冗余判断因为user.profile是property不可能为 None也能指出for i in range(len(items)):这种反模式建议改为for item in items:。这不是 Linter 能做到的这是对代码语义的深度理解。最后分享一个小技巧Gemini 3.1 对“角色扮演”指令极其敏感。当你想让它做某件事但不确定 prompt 是否够好时最简单的方法是在 prompt 开头加上一句“你是一位经验丰富的 [领域] 工程师拥有 10 年以上实战经验。请以专业、严谨、不废话的风格回答。” 这句话本身不增加任何信息量但它会显著提升模型输出的专业度和可信度。我试过加和不加回答质量判若两人。