OpenAI流模式下思考过程的获取示例

OpenAI采用流模式时,思考过程也是通过流式输出的。

这意味着可以像接收最终回答一样,实时逐片段获取模型思考过程,实现边推理边展示的效果。

这里尝试基于网络资料,尝试解锁这一过程的具体实现方式。

1 实现示例

OpenAI流模式下思考过程的获取的具体的实现方法,是在处理流式响应时,从数据块的 delta 字段中提取 reasoning_content 属性,而不是用于最终回答的 content 属性。

以下是一个基于OpenAI库的示例,展示了如何并打印出模型的思考过程和最终回答。

复制代码
from openai import OpenAI

client = OpenAI()
# 以支持推理的模型为例,如 o1 系列或 DeepSeek-R1 等
stream = client.chat.completions.create(
    model="deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B", # 或 "o1-mini" 等
    messages=[{"role": "user", "content": "9.11 和 9.8 哪个更大?"}],
    stream=True,
)

print("开始流式接收...")
for chunk in stream:
    # 获取思考过程的增量
    if hasattr(chunk.choices[0].delta, 'reasoning_content') and chunk.choices[0].delta.reasoning_content:
        reasoning_content = chunk.choices[0].delta.reasoning_content
        print(f"【思考】: {reasoning_content}", end="", flush=True)  # 实时打印思考过程

    # 获取最终回答的增量
    elif hasattr(chunk.choices[0].delta, 'content') and chunk.choices[0].delta.content:
        content = chunk.choices[0].delta.content
        print(f"【回答】: {content}", end="", flush=True)  # 实时打印最终回答

2 核心要点

2.1 关键字段

流式数据块ChatCompletionChunk中,使用choices[0].delta.reasoning_content获取思考过程。在有的实现中比如VLLM,思考过程有可能是reasoning字段,所以需要依据具体框架文档决定。

2.2 参数控制

对于 OpenAI 的 o1o3 等推理模型,还可以通过 reasoning_effort 参数来控制模型思考的深入程度,例如 lowmediumhigh。部分模型或工具如 Vercel AI SDK也支持 reasoningSummary 参数来获取更精炼的思考摘要。

2.3 模型差异

需要注意的是,并非所有模型都支持输出思考过程。这一功能主要针对专门的推理模型,例如 OpenAI 的 o1 系列、o3 ,以及 DeepSeek-R1 等第三方推理模型。普通的 GPT 模型如 gpt-4o在标准 API 调用中通常不提供此字段。

reference


OpenAI Reasoning

https://vercel.com/docs/ai-gateway/capabilities/reasoning/openai

OpenAI 聊天補全與推理流式傳輸

https://docs.vllm.tw/en/latest/getting_started/examples/openai_chat_completion_with_reasoning_streaming.html

使用openai库进行流式输出时,到底发生了什么

https://juejin.cn/post/7430462823758512128

相关推荐
2603_95470831几秒前
微电网主从控制架构:集中式调度与分布式执行的协同机制
人工智能·分布式·物联网·架构·系统架构·能源
yuanmazhiwu1 小时前
计算机毕业设计:Python全国空气质量与气象监测平台 Flask框架 可视化 数据分析 机器学习 天气 深度学习 AI 空气质量分析(建议收藏)✅
人工智能·python·深度学习·数据挖掘·flask·汽车·课程设计
Fleshy数模1 小时前
基于机器学习的实时手势识别系统实现
人工智能·机器学习
龙侠九重天1 小时前
C# 机器学习数据处理
开发语言·人工智能·机器学习·ai·c#
China_Yanhy8 小时前
动手学大模型第一篇学习总结
人工智能
空间机器人8 小时前
自动驾驶 ADAS 器件选型:算力只是门票,系统才是生死线
人工智能·机器学习·自动驾驶
C+++Python8 小时前
提示词、Agent、MCP、Skill 到底是什么?
人工智能
小松要进步8 小时前
机器学习1
人工智能·机器学习
泰恒9 小时前
openclaw近期怎么样了?
人工智能·深度学习·机器学习
KaneLogger9 小时前
从传统笔记到 LLM 驱动的结构化 Wiki
人工智能·程序员·架构