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

相关推荐
嘿起屁儿整19 小时前
面试点(网络层面)
前端·网络
VT.馒头19 小时前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
phltxy20 小时前
Vue 核心特性实战指南:指令、样式绑定、计算属性与侦听器
前端·javascript·vue.js
Byron070721 小时前
Vue 中使用 Tiptap 富文本编辑器的完整指南
前端·javascript·vue.js
css趣多多1 天前
地图快速上手
前端
zhengfei6111 天前
面向攻击性安全专业人员的一体化浏览器扩展程序[特殊字符]
前端·chrome·safari
码丁_1171 天前
为什么前端需要做优化?
前端
Mr Xu_1 天前
告别硬编码:前端项目中配置驱动的实战优化指南
前端·javascript·数据结构
Byron07071 天前
从 0 到 1 搭建 Vue 前端工程化体系:提效、提质、降本实战落地
前端·javascript·vue.js
哆啦code梦1 天前
前端存储三剑客:localStorage、sessionStorage与Cookie解析
前端·前端存储