支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Dify工作流如何屏蔽DeepSeek-R1的思考内容?来看看解决方案吧!!!

发布日期:2025-03-31 08:05:36 浏览次数: 1915 作者:PM墨者
推荐语

掌握Dify工作流,屏蔽DeepSeek-R1的思考内容,提升工作流效率。

核心内容:
1. Dify工作流中DeepSeek-R1思考内容导致的问题
2. 按需展示思考过程的解决方案
3. 具体实现步骤及代码示例

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家
最近,群里小伙伴在dify中创建的工作流使用本地部署的DeepSeek-R1作为LLM时,总是因为DeepSeek-R1的思考过程,导致工作流的使用不理想,故在群里求助如何不让思考的过程输出,我就想着帮他解决了这个问题,然后就有了这一个demo,想着还有很多人不知道如何解决这个问题,那么今天就来一起聊聊吧!
我把工作流做了调整,可以根据需求对思考过程做到按需展示,下面来看看整体的流程图吧:
再来看看显示思考过程:
下面是不显示思考过程的情况:
话不多说,下面就跟着我来一起实现一遍吧!
开始节点

我们创建两个必填的变量:query和type,其中query是文本类型的,是用户输入的信息,这里如果需要大段的文字,可以考虑使用段落类型,这样字符会可以设置更大;type是下拉选择类型的,是选择是否显示思考过程的一个选项,包含“显示”和“不显示”:

LLM节点

在LLM节点中,我们选择的模型是deepseek-reasoner,这个就是DeepSeek官网的API对应的思考模型即满血版DeepSeek-R1。

这个节点的system prompt和user prompt的内容我就写的很随意,主要是让根据query变量来回答问题即可,为的是让输出有数据。LLM模型也不需要做任何设置,就默认就行,主要是为了处理思考模型,这些设置不影响。

条件分支

条件分支作用就是基于开始节点用户选择的type变量的内容,来做条件判断,选择“显示”则直接走到模板转换节点,选择“不显示”则后续节点连接代码执行节点:

模板转换节点

模板转换节点是为了让分支节点的两条分支不同时进入,所以这边只是做了一个转换,不然直接接入结束节点则会导致两个节点同时输出给后续节点。

模板转换节点在这里的使用也很简单,只是把LLM的输出作为输入,然后直接输出:
代码执行节点

代码执行节点是本次案例分享的关键节点,这里只有一个输入变量,就是LLM节点的输出变量,用于节点代码编辑部分的参数,通过简单的python对思考过程的数据进行过滤:

好了,最关键的代码部分来了:
import redef main(answer: str) -> dict:    cleaned_answer = re.sub(r'<details[^>]*>.*?</details>', '', answer, flags=re.DOTALL)    final_answer = re.sub(r'^\n+', '', cleaned_answer)    return {        "result": final_answer,    }
代码中的
details
是基于官方的DeepSeek-R1的思考内容的标识,这个主要是对本地部署的DeepSeek-R1的输出内容的一个操作,就我所知,硅基流动的R1可以使用
think
关键词来过滤。但是我常用的火山,我还没有特别好的方法,不过如果使用线上LLM,其实直接用V3就可以了。
变量聚合器节点

变量聚合器节点在之前的篇章也介绍过,今天就不着重讲解了,主要就是为了两个分支的输出结果进行统一的一个接收并输出给结束节点。

接收的变量为模板转换节点的输出和代码执行节点的输出:

结束节点

最后的结束节点就是把变量聚合节点的输出内容给用户展示:


好了,今天的案例分享就到这儿,希望这个小案例对你们有帮助,可以帮助本地化部署的推理大模型进行思考部分的屏蔽输出,有问题可以评论区留言或者进群一起讨论。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询