现在AI智能体(AI Agent)的概念很火,似乎智能体是用AI解决问题的银弹,有了智能体就可以解决很多问题。但也有很多人持不同意见,认为智能体不过是噱头,并没有看到靠谱的应用场景。
一个被频繁提及的例子是吴恩达老师写的多智能体翻译。简单来说,这个方法使用三个智能体:一个直译智能体、一个审查智能体和一个意译润色智能体,确实可以大幅提升翻译质量。但是,并非一定要三个智能体才能提升翻译质量。我以前也提出过基于Prompt的翻译方法,让LLM在翻译时使用直译+反思+意译三个步骤输出,同样可以得到高质量的翻译结果。
本质上,使用大语言模型(LLM)来解决问题时,思维链(COT, Chain of Thought)是一种有效提升生成质量的方法。也就是说,翻译质量能提升的原因不是因为有了智能体,而是因为有了思维链。至于思维链的每个环节是用一个独立的智能体,还是作为输出的一个步骤,并没有太本质的差别。
其实大部分AI应用场景都类似:要用AI解决问题,核心不在于智能体,而在于设计出一个适合AI的工作流。
那么,怎么才能设计一个适合AI的工作流呢?我认为有几个因素需要考虑:
一、不要将AI的解决方案局限在人类现有的解决方案上
有时候我们过于将AI拟人化,会不自觉地用人类解决问题的方式来套用在AI上。这种做法有时候确实有效,但很多时候并不一定是最优解。就像专业的翻译员,他们并不需要直译、反思、意译三个步骤,他们可以一步到位,直接输出高质量的翻译结果。所以最开始让AI翻译时,Prompt都是直接一步输出翻译结果,而不是分步骤输出,结果翻译出来的比较生硬。而当我们发现思维链是大语言模型的一种有效提升方法后,就可以设计出更适合AI的工作流,分成几步来解决问题。
我看到一些智能体项目,尝试模拟人类软件开发的分工,使用项目经理、产品经理、架构师、程序员、测试等等智能体角色去尝试解决复杂的软件项目。这同样是一个过于拟人化而不一定适合AI解决问题的思路,所以也只能出现在论文中,而无法在实际项目中落地。相反,像GitHub Copilot这样辅助生成代码的工具倒是真正适合当前AI编程的工作流,能实实在在提升开发效率。
二、不必完全依赖AI做决策,而是让AI辅助做决策或者做简单的决策
去年有一个超级火爆的项目叫AutoGPT,就是你输入一个任务,GPT-4会将任务分解,制定计划,调用外部工具,比如Google搜索,甚至执行代码,最终完成任务。这也算是AI智能体的先驱项目之一,但现在已经很少有人提及了。原因是以现在AI的智能程度,还不足以对开放性的任务做出靠谱的决策,最终除了帮OpenAI卖了大量的Token外,并没有解决什么实际问题。所以现在AI应用的主流是把AI当"副驾驶(Copilot)",只是让AI辅助人类完成任务,主要还是人在做决策。
另外就是自己设计工作流,让AI在工作流中完成一部分工作,并不过于依赖AI做决策,或者只需要做简单的决策。比如说商家借助AI处理差评的工作流:
-
1. 程序抓取评论信息
-
2. AI分析每一条评论的情感,筛选出差评
-
3. AI生成回复(可能需要人工审核)
这是一个典型的设计好流程的适合AI的工作流,AI只需要做简单的情感分析和回复生成,而不需要做复杂的决策。这样的工作流可以很好地提升效率,并且结果也相对靠谱。
三、结合不同领域的AI模型或者工具,设计合适的工作流
去年起AI大热,一个很重要的原因是大语言模型的出现。这些模型一方面确实能力强大,有一定的通用性,有简单的推理能力,另一方面使用也简单,无论是通过聊天机器人,还是通过API调用,都能很方便地使用。即使像我这样不是人工智能专业的人,也能很容易地使用这些模型。而在以前,人工智能相对来说是个高门槛的领域,需要筛选数据、需要训练,还需要调参,对于非专业人士来说是很难使用的。
但这也导致一个问题,就是很多解决方案过于依赖大语言模型,而不知道或者不会使用其他领域的AI模型。但当你能够根据任务,将不同领域的AI模型或者工具结合起来,设计出合适的工作流,就能够得到更好的解决方案。
四、回归问题本质,AI只是解决问题的工具
上面提的几点都是容易犯的一些错误。之所以容易犯这些错误,恰恰是因为我们有时候过于关注一些流行的概念或技术,而忽略了要解决的根本问题是什么,将AI变成了目的而不是手段。如果你了解马斯克的第一性原理思维,其强调的就是回归事物最基本的条件,把其解构成各种要素进行分析,从而找到实现目标最优路径的方法。
运用第一性原理通常有三个步骤:
-
1. 定义清楚你要解决的根本问题。
-
2. 拆解问题。
-
3. 从头开始创建解决方案。
这个思路也适用于我们去借助AI解决问题,设计出适合AI的工作流。
举两个设计合适AI工作流解决问题的例子:
一个例子是PDF转Markdown。做过PDF翻译的人有经验,要得到好的翻译结果,将PDF的内容整理成Markdown,再让大语言模型翻译,效果是相当好的。但这个不好做,因为PDF是用来打印的格式,并不是结构化的数据,很难直接提取成Markdown,再加上各种图表、表格等,更是复杂。
最近看到一个项目叫PDFGPT,它就做得很巧妙,本质上是基于GPT-4o和PyMuPDF设计了一个工作流:
-
1. 用PDF操作库PyMuPDF检测PDF中的图片、图表、表格等,提取成图片并保存
-
2. 每一页PDF生成一张图片,将图片、图表、表格等位置用红框标记出来,并附上对应的图片名称
-
3. 借助GPT-4o的视觉能力,解析标注后的图片,生成对应的Markdown
如果纯粹依赖大语言模型,恐怕无法完成这样的任务。一方面受限于上下文窗口的长度限制,一次无法处理多页PDF,另一方面对于图片、图表、表格等内容无法嵌入Markdown中。如果结合PyMuPDF这样的库和一个简单的工作流,就可以方便地实现PDF转Markdown,生成的结果也挺不错。
另一个例子是漫画的翻译。有很多那种气泡文字的漫画,如果要翻译成其他语言,就需要将气泡文字提取出来,翻译后再放回去。漫画翻译的难点在于:
-
• 漫画的气泡文字位置不固定,有时候还会有重叠,不好提取;
-
• 翻译的时候,如果只是把提取出来的文字按字面翻译,但不知道当前画面的内容,翻译的结果可能会不通顺;
-
• 翻译后要对图片进行处理,抹掉原来的文字,将翻译后的文字放回到原来的位置。
如果人工做会怎么做?可能是读懂漫画,翻译,然后用Photoshop这样的工具抹掉原来的文字,再放上翻译后的文字。可以想象这样的工作量还是不小的。
有一个开源项目comic-translate,就做得很好,它也是设计了一个适合漫画翻译的工作流:
-
1. 用一个专业模型做气泡检测,找出文字气泡的位置
-
2. 用OCR做气泡内文字的提取
-
3. 用一个专业模型移除气泡内的文字
-
4. 借助GPT-4o的视觉能力,根据漫画内容,翻译气泡内的文字
-
5. 用程序将翻译后的文字绘制到原来的气泡位置
如果不考虑翻译质量的话,这几乎是一个全自动的工作流,效率相当高,成本也很低。最贵的部分是GPT-4o的API,一页也才$0.02左右。就算加上人工审核对翻译结果和图片生成结果的处理,也能比以前的人工翻译效率高很多。
从上面的例子可以看出,真正要用好AI,让AI发挥最大效能,核心还是要基于你要解决的问题,重新设计一个适合AI的工作流,让AI在工作流中完成它最擅长的工作。至于是不是智能体,是不是大语言模型,是不是AI帮你决策,都不是最重要的。