使用 <think> 标签解析 DeepSeek 模型的推理过程

在本地部署 DeepSeek 模型并调用其推理能力时,模型的推理过程通常以流的形式返回。为了清晰地记录和展示这些推理过程,我们可以使用 parse-reasoning 这个 npm 包来解析返回的内容,并将推理过程用 <think> 标签包裹。以下是具体的实现方法。


1. 安装 parse-reasoning

首先,确保你已经安装了 parse-reasoning 包。可以通过以下命令安装:

bash 复制代码
npm install parse-reasoning

2. 调用模型并解析推理过程

在调用 DeepSeek 模型时,模型的返回内容会以流的形式传输。我们可以使用parse-reasoning包来解析这些内容,并根据type字段区分推理过程和主内容。

以下是代码示例:

javascript 复制代码
import parseReasoning from 'parse-reasoning';
// or const parseReasoning = require('parse-reasoning')

/**
 * 解析包含推理标签的文本内容,将文本分割为普通文本和推理内容块
 * @param {string} text - 需要解析的原始文本,可能包含<think>/<reason>等推理标签
 * @returns {Array} 返回解析后的内容数组,每个元素是以下格式的对象:
 *                 - type: "text" | "reasoning" 内容类型
 *                 - content: 对应的文本内容
 *                 - reasoning_running?: 当type为text时可能存在,表示后续是否还有推理内容
 * 当解析出错时,会返回包含原始文本的默认数组
 */
parseReasoning(text).map((e,i) => {
    if(e.type === 'reasoning' && e.content) {
        return (
            ...
            // reasoning过程中的内容,可以用Collapse包裹。
        )
    } else {
        return (
            ...
            // ai模型返回的主内容
        )
    }
})

3. 解析结果示例

parse-reasoning 包会将模型返回的内容解析为一个数组,数组中的每个对象包含 type 和 content 字段。例如:

css 复制代码
[  { "type": "reasoning", "content": "模型正在分析输入..." },  { "type": "text", "content": "这是模型返回的主内容。" },  { "type": "reasoning", "content": "模型正在生成最终答案..." }]

4. 结合 UI 组件展示

jsx 复制代码
import React from 'react';
import { Collapse } from 'antd'; // 假设使用 Ant Design 的 Collapse 组件
const { Panel } = Collapse;

function ModelResponse({ parsedResults }) {
  return (
    <div>
      {parsedResults.map((e, i) => {
        if (e.type === 'reasoning' && e.content) {
          return (
            <Collapse key={i}>
              <Panel header="推理过程" key={i}>
                <think>{e.content}</think>
              </Panel>
            </Collapse>
          );
        } else if (e.type === 'text' && e.content) {
          return <p key={i}>{e.content}</p>;
        }
        return null;
      })}
    </div>
  );
}

5. 总结

通过 parse-reasoning 包,我们可以轻松解析 DeepSeek 模型返回的推理过程。

相关推荐
计算机魔术师5 分钟前
Dwarkesh Patel 对 OpenAI/Hugging Face 事件的爆款解读被指危险误导
前端
自进化Agent智能体1 小时前
Hermes GitHub PR 审查 —— 自动化代码评审
前端
涛涛ing3 小时前
OpenAI Astra 泄露:零样本生成 3D 网页,前端开发者慌了吗?
前端
ssshooter3 小时前
现在网页都能提供 MCP 了?!
前端·人工智能·程序员
杉氧3 小时前
状态管理变迁史:为什么我们放弃了 Redux 选择 Zustand?
android·前端·react native
cidy_983 小时前
OpenCode 手动配置火山方舟 Agent Plan 教程
前端
鹏多多3 小时前
PC 网站接入微信登录,这 10 个坑我替你踩完了!
前端·javascript·vue.js
律宏阔4 小时前
微信小程序使用 Orval + OpenAPI 自动生成接口:Axios 兼容踩坑记录
前端·微信小程序
律宏阔4 小时前
微信小程序集成 TDesign 完整记录:解决 NPM packages not found
前端·微信小程序
律宏阔4 小时前
微信小程序 ECharts 瘦身实战:分包异步化 + componentPlaceholder 避开主包 2MB 限制
前端·微信小程序