使用 Dify 搭一个 gpt-o1(山寨版)
前些天 Close AI 推出了 o1 模型之后,AI 界又小小地震惊了一把——终于有产品能处理复杂的推理问题了。最大的亮点就是在回答问题之前会进行较长时间的思考,思考时间越长,推理质量越高。目前面向用户推出了 o1-preview 和 o1-mini 两款产品,体验过的朋友反馈,效果确实很惊艳。
不过 o1-preview 的 API 收费有些小贵,而且在国内使用除了麻烦,还伴随着封号的风险。于是网上开始流传一种山寨版 o1 的做法——用 Dify 工作流来模拟这一推理过程。今天就把这个方案拆解一下,供大家参考。
实现思路
要实现一个会思考的工作流,关键是不能让模型直奔主题,而是需要经历几个环节:
- 拆分用户问题,将复杂任务分解为一个个小任务
- 逐一完成这些小任务
- 合并并归纳最终答案,然后输出
听起来并不复杂,接下来我们看看具体需要哪些节点。
上手造 o1
- :接收用户输入。
开始节点
- :将用户问题拆解,并确保拆分出来的步骤不少于三步。
LLM 节点(任务拆解)
- :将上一步内容中的步骤以数组形式重组。
参数提取器(任务提取)
- :在迭代中提取每个任务的关键信息——名称和内容。
迭代任务 - 代码执行(解析任务)
- :解析后,AI 模型根据获取到的关键信息给出具体答案。
迭代任务 - LLM 节点(执行任务)
- :迭代结束后,将各小任务的结果合并。
模板转换(合并结果)
- :因为小任务答案并非最终答案,还需要根据合并结果进行归纳总结。
LLM 节点(归纳答案)
- :输出给用户的结果由两部分组成——问题分析步骤 + 最终解答。
直接回复
测试
测试模型使用 Llama-3.1-8b,并分别以「直接使用模型」和「使用 o1 工作流」两种方式进行。测试问题:
9.11 和 9.8 哪个大?

七个相同的齿轮,按顺序依次咬合连接在一起构成一个齿轮组,并分别编号为1-7号,如果此时给予3号齿轮动力使其逆时针旋转,7号齿轮会怎么样?
使用中文以及JSON格式输出中国城市和主要景点的对应关系,城市为key,景点为列表。输出10个城市,第一个城市一个景点,第二个城市两个景点,以此类推。
从测试结果可以看到:
- 解决问题的正确率上升了,不过消耗的 token 也随之增加。
- 模型在给出答案之前确实会进行思考,这是正确率提升的原因之一。
- 直接对话时,即使是 Llama3.1-8b 也会胡说八道,但经过这个工作流“调教”之后,表现就乖多了。
当然,山寨版毕竟是山寨版,遇到某些问题还是会回答错误。即便是正版 o1 也会出错,除了内部处理流程,这跟模型本身也有关系。
题外话:GPT 降智
在 o1 系列推出之后,大家吐槽最多的一件事就是——ChatGPT 降智了!正因如此,不少人开始转战 Claude,即便它的封号几率很大。
但如果大家用的是本地部署的模型,或者其他低价购买的模型,推荐试试这个山寨 o1 工作流。在一定程度上,它确实有增智的效果(除非模型本身的水平实在不行)。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名