2026年7月2日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

Agent开发者坦白:窘境中前行

发布日期:2024-07-23 07:39:15 浏览次数: 2685


1. 引言

上一篇文章产品经理研读:Agent的九种设计模式(图解+代码)阅读量到了4.1万,大家对Agent的热情可见一斑。今天这篇有点泼冷水的意思:如果你正在或准备通过 AI Agent 来解决实际问题,不管是产品经理,开发者还是管理者,都需要清醒的意识到以下几点:

1.Agent 的规划能力依赖于prompt 工程能力,它比想象中更重要、执行起来也更琐碎。

2. 目前 LLM 的数学、逻辑推理能力在 COT 的基础上也仅能勉强达到及格水平,所以不要让Agent一次性做复杂的推理性规划工作,而是把复杂任务人工拆解后再教给Agent。

3.Agent 的 Action 能力强烈依赖于基座模型的 function calling 能力。在规划 Agent 之前,对模型的 function calling 能力要充分调研。

4.十天前加州伯克利大学新鲜出炉了 function calling 榜单(https://gorilla.cs.berkeley.edu/leaderboard.html),其中表现最好的 GPT4 准确率是 86%,还不够理想。

5.Agent 的记忆力分为短期记忆和长期记忆。

- 短期记忆由 prompt负责,类似 Plan and resolve 模式中的“碎碎念”,告诉Agent已完成了啥,原始目标是啥。

- 在长期记忆中,事实性记忆用RAG实现,程序性记忆可用微调实现。

6.Agent 的反思能力依赖于它的记忆能力。

而上述几点正好对应着 Agent 的四大能力:规划、反省、记忆、执行。我用一张图来表示,其中绿色代表对 Agent 开发友好,黄色代表经过一定努力可以达成目标期望,红色代表对 Agent 应用开发有一些难以逾越的阻碍因素,需要靠产品降级来解决。

将这张图命名为Agent 开发者的窘境一方面感觉 LLM 无所不能、充满希望,另一方面又感觉每个地方都差那么一点点。但这种窘境之下,总有可以努力的方法来达成目标。网上有一个段子视频,大概是形容 Agent 和人之间合作的情形:Agent一往无前,开发者在身后费力把控。

搞笑之余,它阐明了当下 Agent 开发的关键,即:

如何对 Agent 有更好的控制力。

这也是本文的核心内容。


2.如何让你的 Agent 更可控

开始之前,声明本文所说的 Agent 特指具备自主规划,独立执行能力的 Agent。这个概念下,类似 Coze 这种需要人工搭建工作流的 Agent,算是半个 Agent,绝没有贬低的意思,只是不在今天的讨论范围内。


2.1

   

概述

下图是一个 Agent 的工作过程。

Agent 的工作过程和人是极其相似的,都要经过思考→执行→输出,这三步反复迭代,且每一步都要经过LLM。按照 Agent 开发窘境里的各种能力,我大概展示出每一步的准确率漏斗,接下来我们看看每一步能做什么以达到 Agent 的最高可用性。


2.2

   

对 Agent 的思考能力的控制:即 prompt 工程优化。

为了 Agent 开发,我重新回炉了 Prompt 工程,有了两个新的认知,也许对你有启发。

1. ”打靶“式的开发者的提示词实践

如果你是用户,写提示词就像玩盲盒: 你对结果有所期待,但不要求确定。你需要了解的是提示词框架,推荐 WayToAGI 的框架练习就好:https://waytoagi.feishu.cn/wiki/AgqOwLxsHib7LckWcN9cmhMLnkb

如果你是 Agent 的开发者,写提示词就像打靶: 你有一个确定的目标,达到目标才能截止。面向 AI 开发者、AI 产品经理,要懂 tech,可以参考: https://www.promptingguide.ai/zh/techniques/cot.

比如下面这道头部模型公司的面试题中就严格限制了输出的期待,甚至是格式,而你就需要以此靶心设计提示词,并尽量做到稳定发挥。

然这道题并非针对规划能力,但打靶这个类比是适用于大多数Agent开发场景。在 Agent 规划能力的控制上,我们希望通过提示词打到两个靶心:

  • 规划合乎逻辑。

  • 能合理利用你自己定制的 tool,以便进行后续的 function calling。

拿如下例子来说明。

(来源:https://huggingface.co/datasets/chats-bug/agent_action_plan?row=3)

其中:

  • GOAL,ATTENTION,PERFORMANCE EVALUATION 是依照 plan and resolve 模式的模板写的,GOAL,ATTENTION 体现的是规划能力,PERFORMANCE EVALUATION 体现的是反思能力。所有的提示词模板可以在产品经理研读:Agent的九种设计模式(图解+代码)里提到的提示词样例基础上修改,

  • ROLE,EXAMPLES 是用来控制 Agent 的规划合乎逻辑。

  • CONSTRAINTS,TOOLS 是用来控制 Agent 合理利用手头工具。

那么这时候就会产生一个不太合理的现象:每次使用 Agent,除了 INITIALIZATION 里的 user request 之外,我们大模型发的都是几乎一样的 prompt 。如果 user request 数量增加,会有巨大的 token 消耗。仔细想想,这种几乎一样的 prompt 实际上是一种“程序性记忆”,于是就有了 Instruction prompting 来进行固化这种程序性记忆,以降低成本。


2. 固化 Agent 程序性记忆—通过 Instruction prompting 微调小模型

Instruction prompting:中文叫指令微调,主要是通过高质量的数据对基座模型进行微调,提高模型的指令遵循能力。微调的数据中包含:task instruction, input, ground truth output,下图是 REWOO 设计模式所使用的指令微调数据,数据集中提供了大约 2000 条数据(来源:https://huggingface.co/datasets/rewoo/planner_instruction_tuning_2k),经过微调后的模型就可以无需再输入冗长的 prompt,从而节约 token 成本 。

这里顺便再普及一下 Prompt engineering 中和 Instruction prompting 平行的两个概念:

1.Hard Prompting:在应用层出现,就是常规意义上的 prompt:给定已知模型,输出期待的答案,这是人工给定的。

2.Soft prompting:由模型层自动生成,早些时候也叫 Auto prompt,需要使用一定量的 prompt 样本作为数据对基座模型进行 prompt 微调,之后模型就可以将用户的输入转换为新的 prompt,这个工程叫 Soft prompting。常见的如 Prompt tuning, Prefix tuning,P tuning。(参考https://huggingface.co/docs/peft/conceptual_guides/prompting ) 。Soft prompting 与 Instruction prompting 听起来原理差不多,但不同的是:Soft prompting 并不改变基座模型的参数,而是将基座模型参数冻结,在其上又增加了少量参数,因此训练成本低,不过只能做一些微小的特定任务。

在上述 prompt 工程中,可以总结出 prompt 生命周期,

也就是说,在产品实验阶段,通过 hard prompting 进行验证,上线验证成功后,通过 Soft prompting 和 Instruction following 进行微调,形成 Agent 的程序性记忆,就像健身一样:通过反复练习(hard prompting)之后,形成了肌肉记忆(Instruction/Soft prompting),这个时候身体的肌肉组织会产生变化(LLM参数改变)。

上述就是如何通过 prompt 工程来控制 Agent 的规划能力。在非推理任务中,通过基本的提示词工程能够达到较为稳定的输出。但在推理类任务(比如类似旅行规划中花费要低于预算(数学),订酒店时不能将非夫妻的异性安排在同一房间等)中,Prompt 的规划能力就弱了,大多数论文的准确率在 60% 左右,还达不到商用的标准。当然如果推理场景比较单一,是可以尝试 COT+Few Shot 看看效果(参考 https://arxiv.org/pdf/2210.11416)。

以上就是对 Agent 规划能力的控制方法,主要通过 prompting 工程来实现,接下来看看如何控制 Agent 的执行力。


2.3

   

对 Agent 执行能力的控制:选择合适的 Function calling 模型

模型的 function calling 能力是指能否根据规划出来的 Action 描述,按照 tools 中指定的 API request 格式,生成正确的 request。在加州伯克利大学的 function calling 榜单上,他们也给出了 Gorilla 模型的 demo,大家可以去试试,左侧是 Action 描述和按照 function calling 模型指定的 JSON 格式对 API 的描述。点击 Submit 后,就可以生成 API request。

可以说,Agent 的执行能力强烈依赖于模型的 function calling 能力,我们试过同样的 Action 描述,在不同的模型中表现完全不同,选择哪个模型是关键因素。从排行榜中,可以看出:

1.模型参数越大,准确率越高。但 Berckly 自己的 Gorrila 模型是个例外,仅 6.91B 的参数就可以 PK GPT4, Claude。不过考虑到这是 Berckly 自己在当裁判,结果准确可能会少有偏袒。

2.同时考虑得分和成本,llama3,Mistral Medium,Gorilla 三个是优秀的候选对象。

3.排行榜对国产模型没有评测。虽然我们自己试了智谱的 function calling,但因为样本不足,不予评价,欢迎大家留言,如果有同学想要在国内发表论文,不妨考虑一下这个话题,惠泽众生:)

看起来对于普通开发者,对 Agent 的执行能力的控制比较有限,我们能做的就是准确描述 API 的功能、各参数的命名,以及描述。一般在模型厂商的官网上有详细描述。比如:

- OpenAI 的 function calling 使用指南https://platform.openai.com/docs/guides/function-calling
- Google 的 function calling 使用指南
https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/function-calling#function-description-bp

4. 由于执行准确率有限(评测最高分为 86.76),充分测试的同时也要考虑到 function calling 失败的备选方案,比如:

- 客服案例中,function calling 失败直接对接到人工。
- API 参数缺失,考虑根据 API 返回的错误信息,转换成用户语言继续追问用户。

以上是对 Agent 执行能力的控制,接下来是比较轻松的 Agent 输出能力控制,实际上就是 function calling 的反向能力,即:将 API 返回的 JSON response 正确解读为自然语言,这比 function calling 要简单,就像读答案比问问题要简单一些。


2.4

   

对 Agent 的输出能力控制:API增强生成的prompt 工程

到输出的阶段,Prompt 中将 API response 加上其他上下文一并教给大模型,API 的 response 中各字段的名字和描述可以作为补充,大体上就能生成合理的答案,这一步骤的准确率很高,大概 95%,就不再赘述。


3

   

总结

在写这篇文章之前,有几位同学顺着上一篇文章产品经理研读:Agent的九种设计模式(图解+代码)找过来,和我探讨他们在 Agent 开发过程中的问题。和大家一样,我也在起步阶段。在各种论文结果、产品效果、市场宣传的媒体环境中,大家对 Agent 充满热情,同时也充斥着焦虑,这一篇有点让大家冷静一下的意思。不过在我看来,这是件好事,正因为如此,那些坚持长线积累的产品才有机会跨越周期,做出真正好用的 Agent 产品。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅