使用 <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 模型返回的推理过程。

相关推荐
发呆小天才yy1 小时前
uniapp 微信小程序使用图表
前端·微信小程序·uni-app·echarts
@PHARAOH3 小时前
HOW - 在 Mac 上的 Chrome 浏览器中调试 Windows 场景下的前端页面
前端·chrome·macos
月月大王5 小时前
easyexcel导出动态写入标题和数据
java·服务器·前端
JC_You_Know6 小时前
多语言网站的 UX 陷阱与国际化实践陷阱清单
前端·ux
Python智慧行囊6 小时前
前端三大件---CSS
前端·css
Jinuss6 小时前
源码分析之Leaflet中Marker
前端·leaflet
成都渲染101云渲染66666 小时前
blender云渲染指南2025版
前端·javascript·网络·blender·maya
聆听+自律6 小时前
css实现渐变色圆角边框,背景色自定义
前端·javascript·css
牛马程序小猿猴7 小时前
17.thinkphp的分页功能
前端·数据库
huohuopro8 小时前
Vue3快速入门/Vue3基础速通
前端·javascript·vue.js·前端框架