Skip to content

流式输出

流式输出会在模型生成内容时持续返回数据,适合聊天界面、长文本生成和需要及时显示结果的程序。

使用时把请求体中的 stream 设置为 true。服务端会通过 Server-Sent Events(SSE)分段返回内容,因此不能把整个响应当成一次性 JSON 解析。

Chat Completions

请求示例:

bash
curl -N https://api.mugua.link/v1/chat/completions \
  -H "Authorization: Bearer $MUGUA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "your-model-id",
    "messages": [
      {
        "role": "user",
        "content": "写一段简短欢迎语"
      }
    ],
    "stream": true
  }'

文本通常位于每个数据块的 choices[0].delta.content。收到 data: [DONE] 表示本次输出结束。

Node.js:

js
import OpenAI from 'openai'

const client = new OpenAI({
  apiKey: process.env.MUGUA_API_KEY,
  baseURL: 'https://api.mugua.link/v1'
})

const stream = await client.chat.completions.create({
  model: 'your-model-id',
  messages: [{ role: 'user', content: '写一段简短欢迎语' }],
  stream: true
})

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || '')
}

Python:

python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["MUGUA_API_KEY"],
    base_url="https://api.mugua.link/v1",
)

stream = client.chat.completions.create(
    model="your-model-id",
    messages=[{"role": "user", "content": "写一段简短欢迎语"}],
    stream=True,
)

for chunk in stream:
    text = chunk.choices[0].delta.content or ""
    print(text, end="", flush=True)

Responses API

请求体写法:

json
{
  "model": "your-model-id",
  "input": "写一段简短欢迎语",
  "stream": true
}

Responses API 会返回带类型的 SSE 事件。处理文本时主要关注:

事件说明
response.created请求已创建
response.output_text.delta新生成的一段文本,读取 delta
response.completed响应完成
error流式请求发生错误

不要使用 Chat Completions 的 choices[0].delta.content 去解析 Responses 事件。

Anthropic Messages

/v1/messages 请求体中加入:

json
{
  "model": "your-model-id",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": "写一段简短欢迎语"
    }
  ],
  "stream": true
}

Messages 流式输出常见事件包括:

事件说明
message_start消息开始
content_block_delta内容增量,文本通常在 delta.text
message_delta消息状态或用量更新
message_stop消息结束

使用注意

  • 流式连接可能因为网络或代理超时而中断,客户端应正确处理断开和错误事件。
  • 不要把每个数据块都当作完整回复;应按协议读取增量文本并依次拼接。
  • 用户主动停止生成时,应同时关闭前端读取和服务端请求。
  • 模型是否支持流式输出,以控制台显示的能力为准。

木瓜 API 使用文档