过去几周,我一直在思考如何用自然语言来编写Agent工作流。起初我的思路是通过LLM从自然语言中提炼出可用于表达Workflow的DSL,再由DSL来驱动流程引擎。但是在实现过程中,我发现流程引擎的能力与DSL的匹配度其实很难把握,其中的根源在于DSL本身的设计,往往具有局限性。在使用了ComfyUI的工作流之后,我有了新想法。
什么是ComfyUI?
在AIGC领域,除了LLM,我想你应该都了解文生图这个领域,而该领域的开源模型Stable Diffusion则占据了大半江山。由于开源社区的强大,SD的生态非常丰富。作为其官方公司Stability仅仅发布了底座模型,甚至都没有UI,而社区目前最主流的两大UI(WebUI和ComfyUI)都非官方作品,却派生了更大的社区空间。(最近新的UI工具forge也涌现出来,开源真的促进发展。)
WebUI以配置为操作模式,用户通过选、填来完成模型操作。而ComfyUI则是以工作流为操作模式,用户需要通过配置出一个个的pipeline,通过不同节点和连线来完成模型操作和内容生成。两者各有优势,但在灵活性和深度上,ComfyUI更胜一筹。如果WebUI是一次冒险旅行,那么ComfyUI则是一场拉力赛,前者短时间浅尝辄止,后者有些累人但柳暗花明。如果你还没有用过,建议你现在就去尝试一下。关注本公众号 wwwtangshuangnet 点击下方赞赏“喜欢作者”后在公众号聊天窗口回复 comfyui 即可获得在线免费体验 comfyui 机会,是真的可以生成图片那种哦🤗。
Workflow本身就是模型
ComfyUI最吸引人的地方在于它的工作流是可以被分享的,在社区openart.ai上,民间高手们分享着自己的工作流,其他小伙伴可以下载这个工作流,并导入到自己的comfyui中去,再替换自己的prompt,就能用相同的参数,生成该工作流预设的效果的图片。
注意,我这里说的是,用相同的参数。
这不就是模型吗?在comfyui的每一个节点中,我们需要配置好节点参数,在运行工作流时,这些参数就会生效。以一个workflow作为蓝本,对它节点上的参数做细微的调整,就能在原来的图片效果基础上做细微变化,这不就是微调吗?目前,在comfyui的生态中已经有近百的插件,也就意味着我们可以构建出非常庞大的workflow,而通过微调workflow,以达到自己最满意的效果之后,在后续的全部工作中,我们就可以再次使用这个workflow,只需要传入不同的初始prompt即可。
你看,这样的工作模式,不就是模型的工作模式吗?而comfyui的workflow导出后,仅仅是一个json文件。
移植可能性?
基于这种理念,我发现在Agent的工作流搭建中,直接照抄,是完全可以的。在Stable Diffusion的模型操作中,comfyui插件甚至可以调用第三方模型,只要确保节点的输入输出符合workflow中的要求即可。
同样的道理,Agent工作流不也是这样吗?只要确保我们的节点有符合要求的输入输出即可。于是,我有了移植ComfyUI到Agent工作流创建中的想法。如果可以在现有的ComfyUI的基础上,加入Agent的工作流搭建能力,不仅可以解决Agent工作流编程问题,还能直接将LLM和生图模型结合在一起,甚至在Stable Diffusion生成视频的能力,构建完全自动化的营销短视频生成、发布流程,也不是不可能。于是我开始研究ComfyUI的源码。
然而,结果有点小失望,ComfyUI和Stable Diffusion的绑定比较深,虽然我们可以用它来实现上述的设计,但是当我去尝试封装它的代码时,发现似乎没有什么工作可以做,除非全部重写一遍,把它重构为一个与SD解耦的纯AI模型工作流,但如果是这样的话,可能要做的工作比较多,最终可能就做出一个类似coze一样的平台,成本有点大,感觉没必要。而ComfyUI之所以如此流行,还和它的性能有关,或者说它的python部分真的很少,以至于整个仓库没多少代码,运行起来当然是有不错的性能表现。
工作流技术揭秘
Workflow本质上是流程引擎的应用,只不过世界上的流程引擎各有各的怨念,家家有本难念的经,看上去所有的流程都差不太多,但是细细一看,又哪哪都不同。
我们从使用的角度,往往会从图出发来设计worflow。这也是为什么comfyui能流行起来的原因,因为它封闭了流程执行的内部细节,用看得见的流程图来作为直观的操作入口。和bpmn这样的业务流程图设计差别巨大,以组织软件运行为目标的流程图往往会以“节点”作为容器来运行某个软件或程序,并以“边”来表达节点之间的数据流向。
节点和边各自有多种类型,不同的类型所表达的执行方式不同。
通常,节点有输入和输出,根据不同的类型,输入输出的数量又不同。除了输入输出,节点还需要配置属性(或者叫参数)。节点本身意味着它内部会调用某个软件或程序,把输入和参数同时传给这个程序,等待程序返回结果,将这个结果按照规则解析后,作为输出给到下一个节点。
边有方向,负责把节点串联起来。
由节点和边构成的网络我们称为图(Graph),很多流程设计都遵循这种模式,例如米家智能家居的配置、nodered的设计、xstate状态图,前几天介绍的langgraph本质上也是参考状态图。图的形状可以有非常多的变化,而不同的变化所带来的效果完全不同。
我们可以把图作为Workflow的某种可视化的DSL,它以图形语言的方式表达了一个工作流是怎么运作的。我们执行一个流程图,本质上就是以流程图作为DSL来驱动流程引擎工作执行。
结语
本文介绍了ComfyUI,并希望借鉴ComfyUI设计基于相同的图(Graph)来实现Agent工作流的想法。在界面交互上,ComfyUI依赖的是一款名为litegraph.js的流程图脚本库,要实现流程图的创建的交互本身并不复杂。现在的问题是,如何在后端有效的管理、注册、调度、执行Agents,这或许是我接下来要研究的。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。