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

相关推荐
用户33790448021719 分钟前
HTML5语义化标签详解
前端
唐某人丶22 分钟前
教你如何用 JS 实现一个 Agent 系统(1)—— 认识 Agentic System
前端·人工智能
丘山子27 分钟前
分享链接格式不统一,rel="share-url" 提案试图解决这个问题
前端·面试·html
JustHappy1 小时前
「Versakit攻略」🔥Pnpm+Monorepo+Changesets搭建通用组件库项目和发包流程
前端·javascript·vue.js
紫金龙腾2 小时前
EDGE 、chrome、浏览器显示“由你的组织管理”
前端·chrome·edge
用户66197734585752 小时前
Vue3笔记
前端·vue.js
2401_837088503 小时前
ref 简单讲解
前端·javascript·vue.js
折果4 小时前
如何在vue项目中封装自己的全局message组件?一步教会你!
前端·面试
不死鸟.亚历山大.狼崽子4 小时前
Syntax Error: Error: PostCSS received undefined instead of CSS string
前端·css·postcss
汪子熙4 小时前
Vite 极速时代的构建范式
前端·javascript