发现 edge.v2ex.com/chat/v1/chat/completions 无法流式输出
用 AI 分析得结果:
DeepSeek Harness 发送的请求没有问题:确实带上了 "stream": true,接收的也是标准的 text/event-stream。
### 为什么没有逐字打字机效果:
- 从 +1094ms 到 +3425ms 的 2.3 秒里,V2EX 服务端/网关并没有逐字输出;
- 在第 3.4 秒,V2EX 直接把生成好的全部内容打包在单一的一个 SSE Chunk(Chunk #3)里下发。
- 收到这个包后,客户端只能一次性把整段文字显示出来。
### 根本原因:
V2EX 的 coder-ds4-0731 角色在服务端或 Cloudflare 边缘代理层开启了响应缓冲(Buffering),未进行按 Token 实时 Flush。
### 自己测试得结果:
```bash
curl -N -X POST "https://edge.v2ex.com/chat/v1/chat/completions" \
-H "Authorization: Bearer xxxx" \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-d '{
"model": "coder-ds4-0731",
"messages": [
{"role": "user", "content": "请从 1 数到 5,每个数字之间稍微说一句话。"}
],
"stream": true,
"stream_options": {"include_usage": true}
}'
```
以下是返回数据示例:
data: {"id":"chatcmpl-57ff135ddf9e49b5b27fea85669ba6be","object":"chat.completion.chunk","created":1787061701,"model":"coder-ds4-0731","choices":[{"index":0,"delta":{"role":"assistant"},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-57ff135ddf9e49b5b27fea85669ba6be","object":"chat.completion.chunk","created":1787061701,"model":"coder-ds4-0731","choices":[{"index":0,"delta":{"content":"1——开始总是最难的一步,但你已经迈出来了。\n\n2——数到这里的节奏慢慢平稳下来,就像代码跑通第一遍测试时的感觉。\n\n3——过了中点,剩下的路就顺畅多了。\n\n4——距离终点只剩一步,坚持一下。\n\n5——完成了,和写完一个函数然后编译通过一样的爽快。\n\n 有什么我可以帮你写代码或解决问题的吗?"},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-57ff135ddf9e49b5b27fea85669ba6be","object":"chat.completion.chunk","created":1787061701,"model":"coder-ds4-0731","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}]}
data: {"id":"chatcmpl-57ff135ddf9e49b5b27fea85669ba6be","object":"chat.completion.chunk","created":1787061701,"model":"coder-ds4-0731","choices":[],"usage":{"prompt_tokens":3549,"completion_tokens":80,"total_tokens":3629}}
data: [DONE]
---
原文链接:[点击查看](https://www.v2ex.com/t/1235418)
DeepSeek Harness 发送的请求没有问题:确实带上了 "stream": true,接收的也是标准的 text/event-stream。
### 为什么没有逐字打字机效果:
- 从 +1094ms 到 +3425ms 的 2.3 秒里,V2EX 服务端/网关并没有逐字输出;
- 在第 3.4 秒,V2EX 直接把生成好的全部内容打包在单一的一个 SSE Chunk(Chunk #3)里下发。
- 收到这个包后,客户端只能一次性把整段文字显示出来。
### 根本原因:
V2EX 的 coder-ds4-0731 角色在服务端或 Cloudflare 边缘代理层开启了响应缓冲(Buffering),未进行按 Token 实时 Flush。
### 自己测试得结果:
```bash
curl -N -X POST "https://edge.v2ex.com/chat/v1/chat/completions" \
-H "Authorization: Bearer xxxx" \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-d '{
"model": "coder-ds4-0731",
"messages": [
{"role": "user", "content": "请从 1 数到 5,每个数字之间稍微说一句话。"}
],
"stream": true,
"stream_options": {"include_usage": true}
}'
```
以下是返回数据示例:
data: {"id":"chatcmpl-57ff135ddf9e49b5b27fea85669ba6be","object":"chat.completion.chunk","created":1787061701,"model":"coder-ds4-0731","choices":[{"index":0,"delta":{"role":"assistant"},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-57ff135ddf9e49b5b27fea85669ba6be","object":"chat.completion.chunk","created":1787061701,"model":"coder-ds4-0731","choices":[{"index":0,"delta":{"content":"1——开始总是最难的一步,但你已经迈出来了。\n\n2——数到这里的节奏慢慢平稳下来,就像代码跑通第一遍测试时的感觉。\n\n3——过了中点,剩下的路就顺畅多了。\n\n4——距离终点只剩一步,坚持一下。\n\n5——完成了,和写完一个函数然后编译通过一样的爽快。\n\n 有什么我可以帮你写代码或解决问题的吗?"},"logprobs":null,"finish_reason":null}]}
data: {"id":"chatcmpl-57ff135ddf9e49b5b27fea85669ba6be","object":"chat.completion.chunk","created":1787061701,"model":"coder-ds4-0731","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}]}
data: {"id":"chatcmpl-57ff135ddf9e49b5b27fea85669ba6be","object":"chat.completion.chunk","created":1787061701,"model":"coder-ds4-0731","choices":[],"usage":{"prompt_tokens":3549,"completion_tokens":80,"total_tokens":3629}}
data: [DONE]
---
原文链接:[点击查看](https://www.v2ex.com/t/1235418)
评论
暂无评论。