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

相关推荐
workflower3 小时前
大型语言模型简史
人工智能·语言模型·自然语言处理·chatgpt·机器人·集成测试·ai编程
發糞塗牆3 小时前
【Azure 架构师学习笔记 】- Azure AI(20) - Azure Agent实战落地
人工智能·ai·azure
HIT_Weston3 小时前
16、【Agent】【OpenCode】源码构建(Bun介绍)
人工智能·agent·opencode
_小雨林3 小时前
三种预训练模型架构GPT、BERT、T5
人工智能·gpt·bert·t5
强化学习与机器人控制仿真3 小时前
Kimodo 入门教程(一)英伟达开源人形机器人动捕数据集训练运动学动作扩散模型
人工智能·神经网络·机器人·强化学习·扩散模型·英伟达·人形机器人
脱脱克克3 小时前
OpenClaw Cron 完全指南:解锁 AI 智能体的定时自动化超能力
人工智能·自动化·openclaw
江城月下3 小时前
从零开始:我在 Mac M1 上搭建离线 AI 知识库的实战记录
人工智能·macos
电商API&Tina3 小时前
item_video-获得淘宝商品视频 API||商品API
java·大数据·服务器·数据库·人工智能·python·mysql
ppppppatrick3 小时前
【深度学习基础篇11】从CT影像到医学报告:用BART实现医学文本生成的工程实践
人工智能·深度学习