API 参考Google 兼容
流式生成内容
Gemini Streaming API - Gemini Pro、Gemini 1.5 实时内容生成。使用 SSE 流式传输减少延迟,提升用户体验。
流式生成内容
从 Gemini 模型实时流式生成内容。在 token 生成时立即接收,获得更快的首 token 时间。
推荐用于长响应:流式传输通过渐进式显示内容为较长输出提供更好的用户体验。
端点
POST https://api.uniterouter.ai/v1beta/models/{model}:streamGenerateContent认证
x-goog-api-key: your_uniterouter_api_key路径参数
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
model | string | 是 | 模型 ID(如 gemini-2.0-flash) |
查询参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
alt | string | json | 设置为 sse 使用服务器发送事件格式 |
请求体
与 生成内容 相同。支持所有参数。
请求示例
curl -X POST "https://api.uniterouter.ai/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $UNITEROUTER_API_KEY" \
-d '{
"contents": [
{
"role": "user",
"parts": [{"text": "写一个关于机器人的短故事"}]
}
]
}'import google.generativeai as genai
genai.configure(
api_key="your_uniterouter_api_key",
transport="rest",
client_options={"api_endpoint": "api.uniterouter.ai"}
)
model = genai.GenerativeModel("gemini-2.0-flash")
# 流式响应
response = model.generate_content(
"写一个关于机器人的短故事",
stream=True
)
for chunk in response:
print(chunk.text, end="", flush=True)import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("your_uniterouter_api_key", {
baseUrl: "https://api.uniterouter.ai"
});
const model = genAI.getGenerativeModel({ model: "gemini-2.0-flash" });
const result = await model.generateContentStream({
contents: [
{
role: "user",
parts: [{ text: "写一个关于机器人的短故事" }]
}
]
});
for await (const chunk of result.stream) {
const text = chunk.text();
process.stdout.write(text);
}流式响应格式
流中的每个块包含部分响应:
{
"candidates": [
{
"content": {
"parts": [
{"text": "从前有一天,"}
],
"role": "model"
},
"finishReason": null,
"index": 0
}
]
}最后一个块包含 finishReason 和使用元数据:
{
"candidates": [
{
"content": {
"parts": [
{"text": "完结。"}
],
"role": "model"
},
"finishReason": "STOP",
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": 8,
"candidatesTokenCount": 250,
"totalTokenCount": 258
}
}流式聊天
多轮流式对话:
model = genai.GenerativeModel("gemini-2.0-flash")
chat = model.start_chat(history=[])
# 第一条消息(流式)
response = chat.send_message("你好!你是谁?", stream=True)
for chunk in response:
print(chunk.text, end="")
print() # 换行
# 后续消息(流式)
response = chat.send_message("你能帮我做什么?", stream=True)
for chunk in response:
print(chunk.text, end="")服务器发送事件 (SSE)
使用 alt=sse 时,响应格式为:
data: {"candidates":[{"content":{"parts":[{"text":"你好"}]}}]}
data: {"candidates":[{"content":{"parts":[{"text":"世界"}]}}]}
data: [DONE]错误处理
流式请求可能在中途失败。始终处理潜在错误:
try:
response = model.generate_content("你的提示", stream=True)
for chunk in response:
print(chunk.text, end="")
except Exception as e:
print(f"流错误: {e}")相关文档
How is this guide?