最近开始学Agent,看到很多人推Flowith,于是想起来捣鼓下。其实很早就知道这个产品,画布式,多线程,在当时都是chatbot类形态的产品中独树一帜,记得李楠中在《脑放电波》的一期节目中还提起过。但到底没有去用。Flowith呢,似乎也不温不火,直到Manus爆火,因为邀请码的问题,Flowith抓住了机会,而成为前者的平替,也是坐上了一程顺风车。
至于我呢,因为工作中,要做数字人的需求,得了解下智能体的原理,和公司算法部的工程师沟通,让我用Coze或者Dify,自己体验下。Workflow的方式我大抵是清楚的,但刚好Flowith的Oracle模式更省心,全程交由AI规划。那么就来尝试下吧。
科学上网后,打开Flowith,使用邀请码创建账号,我用的是Flowith2025全球智能体创作大赛发出的邀请码「Y8Q6WV」,有100次Oracle的免费使用次数。
最开始的时候,我牛刀小试了下,让它给我做个「分享卡片」,提示词如下:
生成效果如下:
可以看到,Oracle模式下,AI会自动帮我完善需求,比如我提到了渐变色,它便在页面中增加了Cardstyle的选项,同时确认按钮的文案也变成凉更人性化的GenerateCard,还附带一个
图标,交互和UI上更周到。
当然,它也有未实现的需求,比如我提到的毛玻璃特效。
我在其中输入了:未生成毛玻璃特效,请继续生成。AI重新执行了我的指令,但生成后的内容仍然不具备毛玻璃效果。事实上,这是一个在使用Flowith中我所遭遇的最大问题,我需要去处理一些明显不符合预期的需求,但无论重试多少次,AI都不会如我所愿。
这一次生成的页面风格相比上一次,就朴实很多,趋近于线框图。
其实处理这些小工具,当下的大模型真的已经足够,以后读书笔记用这种小工具润色,会方便许多,而且样式随自己掌控。但不好的地方就在于抽卡,有时候要看天意。
接着继续来小试牛刀,搞一个「名言生成器」。提示词如下
这次生成过程比较顺遂,AI先是分解了我的需求,先在网上找了三位作家的一些名言,存储下来。再生成了一个交互式的网页。一开始缺头像,后来我用了RefinewithAI,给我生成了三位作家的姓氏头像。
这里可以看到,AI又主动帮我润色了下,提供了每个作家的在世时间。名言的展示UI我也润色了下,使用橙红渐变色,并且有粒子特效。因为是截图,所以粒子是静止的,实际上这些粒子是移动的。说起这个特效,也调了好久,如果只对AI说“让粒子移动”——那是一点效果都没有的,直到我把提示词改成具体的要求:让粒子每0.1s移动一次才奏效。有的时候,大模型也和人一样,明确的指令才能让AI行动。
其实这个网页还可以继续优化,最大问题在于目前的数据库是静态、有限的,应该实时获取到新的内容,每一次生成都是新的内容。但我不用继续往下了,这两个Case只是用来练手,熟悉Flowith的基本用法而已。
实际上,在Oracle模式下,只需要把握三点:
提出需求;
对于生成的结果,使用RefinewithAI重新优化;
建立多个分支比较输出结果;
而怎么提出需求,我自己摸索下来的感知是,越具体,执行的成功率就越高。而另一个重要的原则是:如果自己有拆解的能力,那么最好自己把任务规划好。虽然这一点和自主感知决策的超级智能体逻辑是相悖的。
牛刀小试后,可以进入正菜了,我需要使用Oracle来解决在工作场景中遇到的真实问题。实际上这个问题是我的对象抛给我的,她的工作中需要对海外用户投放问卷,问用户对于某些服务的价格偏好,比如「你愿意为xx服务花多少钱?」。
由于海外用户来自不同国家,所以问卷的填写五花八门,货币单位也不尽相同,但最终这些答案要被转化为统一的货币——美元。
这是用户的原始回答,数据量在1500条以上。正常情况,这些数据得人工清洗一遍,然后手动计算:
先把原始回答梳理成数值+货币单位的统一格式,比如500AUD;
再逐行计算当前货币同美元的实时汇率;
最后将当前货币的数值同实时汇率相乘,得到最终结果;
可想而知,这是一件十分琐碎且费时的工作,有时候光这一张表格就得处理一天。而经过上述两个用户Case后,我对Flowith充满了迷之自信,而欣然包揽了将这项工作自动化的任务。
天真的我一上来就上传了文件,然后把所有的问题抛出:
这次的生成结果对我来说简直就是一场噩梦,AI拆解任务的逻辑倒是很清晰:
分析上传文本,提取货币数值及单位
将数值换算成美元,计算平均值
这都哪跟哪儿呀,于是我又重新运行了一次节点,但结果还是一样。
是不是我的需求太过复杂?我在心里思考。于是我决定给AI减轻点工作量,把需求改下:
文档中第一列包含货币数值和单位,请将数值和单位分开
这下,AI总算动起来了…不过我忽略了一件事:Flowith是构建在画布基础上的产品。众不所周知,画布本来就吃渲染,而要在画布上处理1500+条的数据,那么结果就是:卡卡西。
怎么说呢,真就有种尬住的感觉。那一瞬间我意识到,画布的形态不适合用来做数据处理,而实际上我也不应该直接在工作流里这么去定义,它做出来是要能交付给别人去使用的。
所以我再一次修改了自己的需求:
这样,其实所有的数据逻辑处理就不在画布中了。
这是最后呈现的结果(实际上经过了多轮生成),也可以下载为xlsx文件,还有一些不满意的地方,比如我希望无货币单位的数值能够直接被处理为美元,但可惜我多次进行Refine,都没有生效,我又害怕再重头来过,先前调整好的refine又得重来,就保留了这个缺陷,反正后面我可以通过Excel手动补全。
我把这个网站称为【货币数据提取器】,本来我想一鼓作气,基于这个网站,直接把汇率、平均数都一起怼上,但是,血泪的教训又来了,无论我怎样修改提示词,甚至重新运行节点,汇率和平均数都完全不生效。从晚上10点多,到夜里1点多,将近3个小时,我反复生成,都没有得到我想要的结果,甚至毫无方向。
没辙了。
也许这任务实在太过复杂,如果说货币数据提取利用表格操作和正则表达就能搞定,那汇率计算就涉及到联网和实时换算,以及逐行写入,最后还要加总计算平均数,每一步看似都很无脑,但加总在一起就是一座山,任何一个环节出错都可能导致整个程序运行不起来。
既然这样,索性还是把任务进行拆分,做一个【货币转换器】:
先做一个能实时获取汇率的网站;
在此基础上,支持使用文件批量上传货币单位,逐行转换成对美元的当前汇率,并支持xlsx文件下载;
如果这两步能行,我就得到了逐行的对美元汇率,那么剩下的就是:
将【货币转换器】生成的表格数据黏贴至【货币数据提取器】生成的文件中;
使用Excel自带的两列相乘函数,将数值列同汇率列相乘,新的数值存储在新一列中【转换成美元】;
【转换成美元】列使用求和+平均数函数,得出结果;
这样,整个任务就被简化成三步:
【货币数据提取器】,将数值同货币分离;
【货币转换器】,计算货币同美元汇率;
Excel人工计算平均数;
虽然没法一步到位,但通过任务的拆解,99%的工作其实被【货币数据提取器】和【货币转换器】所承接,人的工作量大幅减少。
那么闲话少叙,正式开始【货币转换器】的生成:
一开始的提示词如上,但太过复杂,AI生成的结果并不好,无法获取到实时汇率,最后尝试了五六次,提示词改成如下:
逻辑越是简单,越是具体,AI生成的成功率越高。这一次,它生成了令我满意的结果:
大功告成,到这里已经凌晨1点多了。这就是所谓的VibeCoding么,像抽卡一样,不只是提示词要反复调整,每一次还得看运气,看模型生成的效果,有的效果好一次就可用,有的效果不好,还得反复调试或是重新生成。所有的逻辑和代码运行都是黑盒,一切都是天意。
但要说和传统手工编程相比,那VibeCoding还是快的,整个任务算上调试的时间,其实最多3-5小时,这中间可能超过一半的时间是等待大模型在运行,如果运行的速度能加快,那时间还能被缩短。
当然,工具的使用也有一些毛病:
Oracle的模式下除了初始节点能够创建分支,后续的任务只能修改任务提示词或者RefinewithAI;而我希望每个任务都能被并行多线程触发(同一提示词),这样抽卡的结果多,我能有更多的选择而不至于每次得重头再来;
基于1,我希望每个任务都可以被拆解新的分支,这样我可以并行尝试多个不同类型提示词;
支持每个任务的结果保留,支持回退上一步而保持当时生成的结果还在,而不是大模型重新运行一遍节点;
支持RefinewithAI时查看自己的调试过程和调试词,结合3能够随时回退前进,但是每次运行的结果是被保留的;
生成的网页希望有直接查看的入口,现在只能整个Recipe保留,但大模型每次运行的效果都不同;
应该有一个workflow,能够自己调用自己制作的智能体,或者说能力,规定好彼此间的传递物就行;
Atlast,总结下这次实践下来的经验:
要多修改提示词、多运行,耐心;
自己拆解任务,而把原子工作交给AI;每个智能体应该被单独构建,专注于解决一件事;
任务应该单一、具体;
相信命运,享受随机性。
题图来自Unsplash,基于CC0协议。