跳到主要内容

Stream Content

Gemini 流式内容生成,通过 SSE 实时接收生成内容。

POST /v1beta/models/{model}:streamGenerateContent

本接口与非流式 generateContent 使用相同的 Gemini REST JSON 字段命名:generationConfiginlineDatamimeType 等均使用 camelCase,不要与 snake_case 字段混用。

请求示例

curl -N "https://gw.opentoken.io/v1beta/models/gemini-3-pro-image:streamGenerateContent?alt=sse" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPEN_TOKEN_KEY" \
-d '{
"contents": [{"parts": [{"text": "写一首关于 AI 的短诗"}]}],
"generationConfig": {"temperature": 0.9}
}'

请求参数

参数位置类型必填描述
model路径string用于生成内容的模型名称,对应 URL 中的 {model}
alt查询参数string示例使用 sse,使响应按 Server-Sent Events 格式返回。
contents请求体array当前对话内容。单轮请求通常只包含一条用户内容,多轮请求可包含对话历史。
contents[].role请求体string内容角色,用户输入通常为 user,模型内容为 model
contents[].parts请求体array内容片段数组,可包含 textinlineDatafileData 等字段。
generationConfig请求体object生成配置,例如 temperaturetopPtopKmaxOutputTokens 等。
safetySettings请求体array按安全类别设置内容过滤规则。每个安全类别最多设置一次。
tools请求体array模型可使用的工具列表,例如函数调用或代码执行工具。
toolConfig请求体object请求中工具的统一配置。
systemInstruction请求体object系统指令,目前仅支持文本内容。
cachedContent请求体string用作上下文的缓存内容名称,格式为 cachedContents/{cachedContent}
serviceTier请求体string请求使用的服务层级。
store请求体boolean配置该请求的日志记录行为。

流式响应结构

响应由多个 SSE 事件组成。每个事件均以 data: 开头,后面是一个独立的 GenerateContentResponse JSON 对象。例如:

data: {"candidates":[{"content":{"parts":[{"text":"在电路与星光之间,"}],"role":"model"},"index":0}]}

data: {"candidates":[{"content":{"parts":[{"text":"思想悄然生长。"}],"role":"model"},"finishReason":"STOP","index":0}],"usageMetadata":{"promptTokenCount":8,"candidatesTokenCount":12,"totalTokenCount":20}}

单个事件中的主要字段如下:

字段类型描述
candidatesarray模型生成的候选内容。提示被拦截时可能不存在。
candidates[].contentobject当前事件返回的内容。
candidates[].content.rolestring内容角色,模型响应通常为 model
candidates[].content.partsarray当前事件的内容片段,可包含 textinlineData 等字段。
candidates[].finishReasonstring模型停止生成的原因,通常在候选内容结束时出现,例如 STOPMAX_TOKENSSAFETY
candidates[].safetyRatingsarray候选内容的安全评分。
candidates[].indexinteger候选内容在候选列表中的索引。
promptFeedbackobject与提示内容过滤相关的反馈。提示被拦截时可能没有 candidates
usageMetadataobjectToken 用量信息,通常在流式响应后段或最终事件中返回。
modelVersionstring实际用于生成响应的模型版本。
responseIdstring本次响应的标识符。
modelStatusobject当前模型的状态信息。

不能假设每个事件都包含 candidates[0].content.parts[0].text,也不能假设 parts 的类型或顺序。客户端应逐个处理 SSE 事件,遍历 candidates[].content.parts[],并分别检查 textinlineData 等实际存在的字段。

Copyright © 2026 OpenToken.