Dify搭建工作流增强LLM逻辑能力
前段时间 openai 发布了草莓🍓模型 o1,测试了它的逻辑推理能力,真的很强!我让它做了今年高考数学前 5 道选择题(先转成 markdown 格式然后给大模型),不出一会儿咔咔咔输出了解题过程和全部正确的答案!gpt-4o 的话就很不稳定,虽然每次都会做对 2~3 道题,但是飘忽不定!本文我们参考 B站【AI 学长小林】的视频,通过 Dify 搭建一个工作流“低仿”一下 o1,也可以让常规的 LLM 获得推理能力的增强。
准备
因为本文我们使用 Dify 搭建工作流,所以需要有 Dify 可用,有两种方式:
- 使用 Dify 官方版:https://dify.ai/zh
- 使用 Dify 自部署的社区版:参考 Docker Compose 部署 自行部署(需要我们自备可调用的 LLM API);
Dify 支持的 API 提供商有很多,可自行选择,我用的 OpenRouter 、OpenAI 官方和 SiliconFlow 的 API,其中 SiliconFlow 对国内访问比较友好,OpenRouter 支持的大模型最多。
基本思路
搭建工作流
按照上面的思路,添加工作流节点逐步搭建。
任务拆解
使用 LLM 节点,提示词如下:
步骤提取
使用 LLM 节点。
提取参数
设置提取参数变量为 steps。
指令
提示词如下:
提取内容中的步骤数组,示例如下:
【】包裹的内容,在搭建工作流的时候使用对应变量替代。
迭代任务
迭代任务中,需要解析任务和执行任务,解析任务的作用是得到只包含步骤名称和步骤描述的字典,一般采用执行代码节点,执行任务使用 LLM。
解析任务
输入变量
设置为 迭代任务的遍历对象变量。
代码
输出变量
- content:String 类型
- name:String 类型
执行任务
提示词如下
【】包裹的内容,在搭建工作流的时候使用对应变量替代。
合并结果
使用模板转换功能。
输入变量
设为迭代任务中的输出。
代码
归纳答案
使用 LLM 节点,提示词
【】包裹的内容,在搭建工作流的时候使用对应变量替代。
回复
【】包裹的内容,在搭建工作流的时候使用对应变量替代。
可以看到我们上面选择的都是 gpt-4o-mini 模型,搭建好的工作流如下:
你也可以点击链接下载我已经搭建好的工作流,只需更换你使用的模型即可:
https://storage.5km.host/llm2o1.yml
测试
我们使用下面三个问题测试效果(这三个问题直接问模型的话通常不会得到正确答案):
- 9.11 和 9.8 哪个数字大?【 正确答案:9.8>9.11】
- Strawberry 有几个字母 r?【正确答案:3 个字母 r】
- 这是中国2024年9月9日(星期一)开始到10月13日的放假调休安排:上6休3上3休2上5休1上2休7再上5休1。请你告诉我除了我本来该休的周末,我因为放假多休息了几天?【正确答案:4 天】
我们先试试 gpt-4o 回答,这次是全错:
我们使用工作流测试一下,经过测试发现全用 gpt-4o-mini 不能全部答对,但已经提升推理能力了,除了 任务提取 节点把其他的 LLM 节点都换成 gpt-4o 就稳定答对了:
PS:很奇怪的是,之前 LLM 节点都采用 qwen2.5-72B 模型也能稳定答对的,但是隔一段时间竟然不能稳定全答对了😂。
英文版
我也制作了一个英文版本的工作流。
欢迎使用:https://storage.5km.host/llm2o1.en.yml