Nodaryx 帮助中心English

流式调用 (Streaming)

什么是 stream

设置 "stream": true 后,服务端会以 Server-Sent Events (SSE) 的形式逐块返回内容,而不是等全部生成完再一次性返回。每个数据块是一行 data: {...},最后以 data: [DONE] 结束。

什么时候用

  • 聊天/对话界面:边生成边显示,体验更流畅
  • 长回复:更快看到首字,降低等待感

curl 示例

curl https://api.moyuncourse.site/v1/chat/completions \
  -H "Authorization: Bearer sk-nodaryx-xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-flash",
    "messages": [{ "role": "user", "content": "写一首短诗" }],
    "stream": true
  }'

Node.js 示例

const res = await fetch("https://api.moyuncourse.site/v1/chat/completions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.NODARYX_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "gemini-flash",
    messages: [{ role: "user", content: "写一首短诗" }],
    stream: true,
  }),
});

const reader = res.body.getReader();
const decoder = new TextDecoder();
while (true) {
  const { value, done } = await reader.read();
  if (done) break;
  process.stdout.write(decoder.decode(value));
}

Python 示例

from openai import OpenAI

client = OpenAI(
    base_url="https://api.moyuncourse.site/v1",
    api_key="sk-nodaryx-xxxxxxxxxxxxxxxx",
)
stream = client.chat.completions.create(
    model="gemini-flash",
    messages=[{"role": "user", "content": "写一首短诗"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

安全提醒

不要在浏览器前端直接携带 API Key 发起调用(无论是否流式)——Key 会暴露给用户。应由你自己的后端代理请求,见 安全最佳实践