前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用ComfyUI的思路设计Agent工作流

用ComfyUI的思路设计Agent工作流

作者头像
否子戈
发布2024-04-19 14:18:19
4850
发布2024-04-19 14:18:19
举报
文章被收录于专栏:

过去几周,我一直在思考如何用自然语言来编写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,这或许是我接下来要研究的。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-16,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 唐霜 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com