Dify搭建工作流增强LLM逻辑能力
AI

Dify搭建工作流增强LLM逻辑能力

前段时间 openai 发布了草莓🍓模型 o1,测试了它的逻辑推理能力,真的很强!我让它做了今年高考数学前 5 道选择题(先转成 markdown 格式然后给大模型),不出一会儿咔咔咔输出了解题过程和全部正确的答案!gpt-4o 的话就很不稳定,虽然每次都会做对 2~3 道题,但是飘忽不定!本文我们参考 B站【AI 学长小林】的视频,通过 Dify 搭建一个工作流“低仿”一下 o1,也可以让常规的 LLM 获得推理能力的增强。

219次点击4分钟阅读

准备

因为本文我们使用 Dify 搭建工作流,所以需要有 Dify 可用,有两种方式:

  1. 使用 Dify 官方版:https://dify.ai/zh
  2. 使用 Dify 自部署的社区版:参考 Docker Compose 部署 自行部署(需要我们自备可调用的 LLM API);

Dify 支持的 API 提供商有很多,可自行选择,我用的 OpenRouter 、OpenAI 官方和 SiliconFlow 的 API,其中 SiliconFlow 对国内访问比较友好,OpenRouter 支持的大模型最多。

Dify 支持的 LLM API 提供商

基本思路

Dify 逻辑增强工作流基本思路

搭建工作流

按照上面的思路,添加工作流节点逐步搭建。

任务拆解

任务拆解节点

使用 LLM 节点,提示词如下:

步骤提取

步骤提取节点

使用 LLM 节点。

提取参数

设置提取参数变量为 steps

指令

提示词如下:

提取内容中的步骤数组,示例如下:

【】包裹的内容,在搭建工作流的时候使用对应变量替代。

迭代任务

迭代任务节点

迭代任务中,需要解析任务和执行任务,解析任务的作用是得到只包含步骤名称和步骤描述的字典,一般采用执行代码节点,执行任务使用 LLM。

解析任务

迭代任务节点-解析任务节点

输入变量

设置为 迭代任务的遍历对象变量。

代码

输出变量

  • content:String 类型
  • name:String 类型

执行任务

迭代任务节点-执行任务节点

提示词如下

【】包裹的内容,在搭建工作流的时候使用对应变量替代。

合并结果

合并结果节点

使用模板转换功能。

输入变量

设为迭代任务中的输出。

代码

归纳答案

归纳答案节点

使用 LLM 节点,提示词


【】包裹的内容,在搭建工作流的时候使用对应变量替代。

回复

回复节点

【】包裹的内容,在搭建工作流的时候使用对应变量替代。

可以看到我们上面选择的都是 gpt-4o-mini 模型,搭建好的工作流如下:

整体工作流一览

你也可以点击链接下载我已经搭建好的工作流,只需更换你使用的模型即可:

https://storage.5km.host/llm2o1.yml

测试

我们使用下面三个问题测试效果(这三个问题直接问模型的话通常不会得到正确答案):

  1. 9.11 和 9.8 哪个数字大?【 正确答案:9.8>9.11】
  2. Strawberry 有几个字母 r?【正确答案:3 个字母 r】
  3. 这是中国2024年9月9日(星期一)开始到10月13日的放假调休安排:上6休3上3休2上5休1上2休7再上5休1。请你告诉我除了我本来该休的周末,我因为放假多休息了几天?【正确答案:4 天】

我们先试试 gpt-4o 回答,这次是全错:

gpt-4o 回答出错 demo

我们使用工作流测试一下,经过测试发现全用 gpt-4o-mini 不能全部答对,但已经提升推理能力了,除了 任务提取 节点把其他的 LLM 节点都换成 gpt-4o 就稳定答对了:

工作流增强逻辑推理能力回答问题演示

PS:很奇怪的是,之前 LLM 节点都采用 qwen2.5-72B 模型也能稳定答对的,但是隔一段时间竟然不能稳定全答对了😂。

英文版

英文版工作流

我也制作了一个英文版本的工作流。

欢迎使用:https://storage.5km.host/llm2o1.en.yml

参考

【Dify工作流复刻O1:性能究竟有多强?两种OpenAI O1平替方案,让开源模型也拥有超强思维链!】

相关文章