资讯动态

OpenAI 流式响应实战:回复像打字机实时蹦出来

发布时间:2026/9/3 12:38:09 来源:尧图企业网站定制
OpenAI 流式响应实战回复像打字机实时蹦出来【免费下载链接】openai-pythonThe official Python library for the OpenAI API项目地址: https://gitcode.com/GitHub_Trending/op/openai-python问一句话页面转圈半分钟答案才憋出第一行——这种 AI 交互体验很难让人有耐心。OpenAI 流式响应处理解决的就是这个问题模型把回答切成碎片陆续发出页面边收边显示用户看着答案一个字一个字长出来。下面基于官方 openai-python 库的 Chat Completions 流式调用讲清楚这个效果怎么做出来。流式和非流式到底差在哪先打个比方。非流式像烧水壶水烧开了才整壶倒进杯子你得干等流式像开水龙头细水流持续往外走杯子没满也能先接上来用。两种模式的区别核心就一个字首字什么时候到。观察点非流式流式第一个字什么时候到整段回答生成完才拿到请求发出后几百毫秒用户体感干等转圈毫无反馈打字机效果逐字出现数据到达方式一个完整 JSON连续的小碎片SSE适合的场景短问答、批量跑任务长文生成、实时对话流式在传输层用的是 Server-Sent Events服务端把回答切成一个个事件往外发。这部分细节 openai-python 已经封装成Stream对象不用我们去碰 SSE 的底层。最小可运行的流式调用streamTrue 之后发生了什么这段代码要解决一件事让模型的回答在终端里实时蹦出来。核心只有一个stream参数。from openai import OpenAI client OpenAI() stream client.chat.completions.create( modelgpt-4o-mini, messages[{role: user, content: 用一句话解释什么是TCP}], streamTrue, ) for chunk in stream: content chunk.choices[0].delta.content if content: print(content, end, flushTrue)三行关键代码记牢streamTrue告诉 API「请分片给我」chunk.choices[0].delta.content是每片新文字待的地方if content判空因为不是每片都有内容。异步流式调用一句话带过把客户端换成AsyncOpenAIcreate前加awaitfor换成async for其余照抄。把碎片拼成完整回复delta 内容的取值路径每次迭代拿到的chunk是一个ChatCompletionChunk取值路径固定chunk→choices[0]取第一个分支→delta本片的增量→content文字。流式解析的核心动作就是把这些增量累加起来full for chunk in stream: delta chunk.choices[0].delta full delta.content or print(full)补一个细节delta.role通常只在第一个 chunk 里出现值是assistant之后就没有了。想记录「发言者」时判断首片即可。两个最容易踩的坑坑一delta.content 可能是 None现象直接print(chunk.choices[0].delta.content)要么打印出一堆None要么后续拼接报错——只有元信息的片首片、收尾片content 就是空的。解法一行判空跳过它。content chunk.choices[0].delta.content if content: print(content, end, flushTrue)坑二想提前停或流中断了现象用户只想扫一眼或者页面已经关了for循环还在傻等剩余数据白白占着时间和带宽。解法把迭代器存成变量想停就主动调stream.close()断开连接。for i, chunk in enumerate(stream): print(chunk.choices[0].delta.content or , end, flushTrue) if i 5: stream.close() break拿到五片就立刻断开。如果是连接自己断了异常会从迭代那一行抛出外层套try接住就行。SSE 解析、[DONE]结束信号这些实现的细节都在 src/openai/_streaming.py 里想深挖可以直接读。手痒想跑起来examples/streaming.py 是官方示例版本间的变动可以看 CHANGELOG.md。【免费下载链接】openai-pythonThe official Python library for the OpenAI API项目地址: https://gitcode.com/GitHub_Trending/op/openai-python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价