UniterRouter
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

路径参数

参数类型必需描述
modelstring是模型 ID(如 gemini-2.0-flash)

查询参数

参数类型默认值描述
altstringjson设置为 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?