DeepSeek API 默认不返回模型思考过程,需通过结构化提示词引导其显式输出推理步骤,再用PHP正则或字符串分割提取并前端渲染。

PHP 8.4 对接 DeepSeek 时,模型的“思考内容”(即推理过程、中间步骤、思维链 CoT)**默认不会返回**,因为 DeepSeek 官方 API(如 /v1/chat/completions)遵循标准 OpenAI 兼容协议,只返回最终生成的 content 字段。它不原生暴露内部推理轨迹,也不支持像某些开源模型那样开启 logprobs 或 reasoning_trace 参数。
想看到模型“怎么想的”,关键在提示词设计
DeepSeek 的思考过程是隐式发生的,但你可以通过结构化提示词引导它把推理步骤显式写进回答里。这是最可靠、零成本、无需改接口的方式:
- 在
messages中的user角色消息里明确要求:“请分步推理,先分析问题,再给出结论,并用【步骤1】【步骤2】等格式清晰列出你的思考过程” - 避免模糊指令如“请思考一下”,而用可执行的格式约束,例如:“请按以下三部分输出:① 问题重述;② 关键条件分析;③ 推理与答案”
- 搭配系统提示(
system消息)强化角色,例如:"你是一个严谨的编程助手,所有回答必须包含完整推理链,不得跳步"
后端解析时,按约定格式提取“思考段落”
既然思考内容是模型按你要求“写出来”的文本,那就在 PHP 中做字符串或正则提取,而不是依赖 API 字段:
- 收到响应后,从
$response['choices'][0]['message']['content']获取完整文本 - 用
preg_match_all('/【步骤\d+】(.*?)(?=【步骤|\z)/s', $content, $matches)提取各步骤内容 - 或按换行+编号分割:
explode("\n", $content),再遍历筛选含“步骤”“分析”“因为”“所以”等关键词的行 - 前端若需高亮展示,可将提取出的思考部分单独渲染为折叠面板,答案部分另起区块
注意:别误信“隐藏字段”或调试模式
有些开发者尝试在请求中加 "debug": true 或读取 response.headers,但 DeepSeek 官方 API 不提供此类调试信息。所谓“思考流”不是服务端返回的独立数据块,而是模型语言能力在 prompt 约束下产生的文本结果。任何试图从原始 JSON 响应中直接读取 reasoning、trace 字段的做法都会失败。
立即学习“PHP免费学习笔记(深入)”;



















