要实现deepseek api的打字机效果,需严格配合协议头(accept: text/event-stream)、请求参数(content-type: application/json)及客户端解析(sse流处理),缺一不可。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要让DeepSeek API返回的文本像打字机一样逐字显示,而不是等全部生成完才一次性弹出来,必须同时满足协议头、请求参数和客户端解析三者的严格配合——漏掉任一环节都会卡在空白响应或乱码上。
HTTP请求必须设对Accept和Content-Type头
DeepSeek API流式输出依赖Server-Sent Events(SSE)协议,服务端只在明确收到接收意图时才启用该格式推送数据。
第一步:在请求头中设置【Accept: text/event-stream】,不能是application/json,也不能留空;这是最常被忽略、导致406错误或静默失败的根源。
第二步:POST请求体的Content-Type仍保持为application/json;GET请求则不带该头字段。
第三步:确保请求URL指向的是支持SSE的代理接口——DeepSeek官方API不支持跨域SSE直连,直接调用会失败。
Python requests流式读取与解析
requests.get(..., stream=True)只是开启底层传输流,但iter_lines()默认会把SSE的data:行、event:行、注释行混在一起处理,直接json.loads()必然报错。
方法一:手动剥离前缀并过滤无效行
遍历response.iter_lines(),只处理以b"data:"开头的行,去掉前缀后decode再json.loads();跳过空行、以:开头的注释行、event:行。
方法二:用第三方库sseclient-py(推荐)
pip install sseclient-py,然后用SSEClient(response)封装响应流,自动完成data:提取和JSON解析,省去手动切分逻辑。
统一LLM网关 - 一个API对接70+AI模型,使用单一API密钥即可调用GPT、Claude、Gemini、Qwen、Deepseek、Grok等主流模型。
前端用EventSource接收并渲染
EventSource专为SSE设计,但必须通过同源代理接口访问,不能直接指向https://api.deepseek.com。
第一步:创建EventSource实例,传入你自己的后端代理地址,例如new EventSource("/api/stream")。
第二步:绑定onmessage事件,在回调中解析e.data,提取JSON里的delta?.content字段。
第三步:用textContent += content追加到预设DOM容器,避免innerHTML重写引发布局抖动或光标错位。
注意:若需携带Bearer Token或自定义请求头,EventSource不支持,必须改用fetch + ReadableStream方案。
Node.js用axios处理流式响应
axios默认会尝试把整个响应体当JSON解析,遇到SSE流会卡死或报错。
第一步:显式设置responseType: "stream",否则拿不到可读流。
第二步:用response.data.on("data", chunk => {...})监听原始字节流,不能用await response.json()。
第三步:将chunk.toString()按\n分割,逐行检查是否以data:开头,去掉前缀后JSON.parse(),取choices[0].delta.content。
这一步操作起来很简单,直接把文件拖进去就行。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!









