Google AI Studio怎么用?从创建API密钥到调用Gemini生成结构化结果
本文从首次使用场景出发,介绍如何进入Google AI Studio、创建并管理Gemini API密钥,在测试区提交提示词并检查模型输出,同时演示如何把会议文本整理为JSON。文中还说明结构化输出、参数调试、密钥保护、额度、地区和计费等需
小睿AI导航 ARTICLE DETAIL
本文以最小调用流程为主,说明如何在Google AI Studio创建Gemini API密钥并通过环境变量保存,展示文本请求、多轮消息历史和响应解析方式,同时介绍JSON或Schema约束输出、超时
样式 7 内容详情排版
Gemini API的基本流程可以概括为:准备开发者入口和API密钥,提交包含消息内容的请求,读取候选结果,再根据业务需要校验和保存响应。示例中的模型名称使用占位符,实际使用时应填写你在当前开发者文档和项目中可用的模型名称,不要直接复制过时配置。
可以从Google AI Studio进入Gemini API相关页面,创建或管理API密钥。密钥只用于服务端配置,不应写入网页前端、移动端安装包、公开代码仓库或截图中。推荐在本地或部署平台配置环境变量,例如将密钥保存为GEMINI_API_KEY,程序通过环境变量读取,而不是把真实值硬编码进源文件。
如果使用命令行,可以先设置环境变量,再让程序读取它。生产环境还应限制日志内容,避免把请求头、完整响应或包含个人信息的提示词写入普通日志。
Gemini API的请求通常包含一个contents数组。每条消息包含角色和一个或多个文本部分;响应中则从候选结果的内容部分读取生成文本。下面是使用Python标准HTTP库思路的简化示例,模型名称、接口版本和超时时间应以当前官方文档为准:
import os, requests
api_key = os.environ["GEMINI_API_KEY"]
model = "MODEL_NAME"
url = f"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent?key={api_key}"
body = {"contents": [{"role": "user", "parts": [{"text": "请用两句话介绍夏季防晒。"}]}]}
response = requests.post(url, json=body, timeout=30)
response.raise_for_status()
data = response.json()
text = data["candidates"][0]["content"]["parts"][0]["text"]
实际程序不要假设候选结果始终存在。应先检查HTTP状态、响应JSON是否可解析、候选数组是否为空,以及内容部分是否包含文本。模型可能返回其他完成状态,业务代码需要根据接口返回结构进行兼容处理。
API调用本身通常是无状态的。要让模型理解前文,应用需要在下一次请求中重新提交必要的消息历史。例如:
body = {"contents": [
{"role": "user", "parts": [{"text": "我想规划一日游。"}]},
{"role": "model", "parts": [{"text": "可以,请告诉我城市和兴趣。"}]},
{"role": "user", "parts": [{"text": "我在杭州,喜欢历史。"}]}
]}
应用应自行保存会话ID、用户消息和模型回复,并按长度或令牌预算截断旧历史。不要无限追加对话,也不要把不同用户的历史混在同一个会话中。若历史包含隐私信息,应先脱敏,并设置合理的保存期限。
普通文本适合直接展示给用户,但不适合直接作为数据库记录或业务指令。需要固定字段时,可以要求接口返回JSON,并在客户端执行JSON解析和字段校验。部分可用接口支持通过生成配置指定responseMimeType为application/json,并进一步提供responseSchema,例如定义name、category和confidence等字段。
概念示例:responseGenerationConfig = {"responseMimeType": "application/json", "responseSchema": {"type": "OBJECT", "properties": {"question": {"type": "STRING"}, "category": {"type": "STRING"}, "answer": {"type": "STRING"}}, "required": ["question", "category", "answer"]}}
然后在提示词中说明:把用户问题整理为上述字段,只返回对象,不添加解释。拿到响应后仍然要执行JSON解析、必填字段检查、类型检查和枚举值检查。Schema约束能降低格式偏差,但在复杂提示、内容冲突或接口能力不匹配时,不能保证百分之百符合预期;失败时应记录原因并走人工或补救流程。
重试必须避免重复写入。对于会产生订单、消息或其他副作用的操作,应使用业务请求ID做幂等控制。重试日志可记录状态码、耗时和追踪ID,但不应记录API密钥或完整敏感内容。
例如客服系统收到“我的耳机左侧没有声音,购买不到两个月”后,可要求模型输出question、category、purchase_period和suggested_reply四个字段。程序先提交文本和Schema约束,再校验category是否属于预设分类,最后把suggested_reply作为客服草稿,而不是直接发送。原始响应、解析结果和校验失败原因可按脱敏规则保存,方便人工复核。
如果发现密钥泄露,应立即在密钥管理页面撤销或删除旧密钥,生成新密钥并更新部署环境,同时检查访问日志和费用异常。不要只删除公开仓库中的文件,因为历史提交可能仍然保留密钥。把密钥管理、响应校验、超时控制和有限重试一起做好,才是可维护的Gemini API调用流程。