本文从Anthropic的文章《Build effective agents》出发,为构建高效的工作流、Agent提出实战指南。我在保留原文精华的基础上增强了三个核心方面:
核心内容
1.技术选型指南:明确工作流/Agent选用标准。
2.设计模式解析:通过实际业务场景展示复杂工作流模式的应用。
3.实践要点扩展:增添详细的实施建议和操作要点,将理论转化为可执行方案。
本文适合AI Agent技术管理者、开发者、产品经理及爱好者阅读,通过实践层面的指导,帮您实现更合理的方案与更高效的实施。
文章概览
"Agent"有多种定义方式。部分客户将其视为完全自主系统,能在较长时间内独立运行,使用各种工具完成复杂任务。也有人用此术语描述更固定的、预定义的工作流。Anthropic将这些变体归类为类Agent系统,但在工作流和智能体间做了重要区分:
Workflow | Agent | |
---|---|---|
定义 | 通过预定义流程编排LLM和工具的系统 | LLM动态决定自己的处理过程和工具使用的系统 |
适用范围 | 可预测和定义解决步骤的问题 | 无法预先定义解决步骤的开放问题 |
优势 | 稳定、准确、可预测 | 解决没有固定流程的开放性问题 |
劣势 | 为准确性牺牲了解决问题的延迟 | 成本高、问题解决成功率有提升空间 |
在附录1("Agent实战")中,Anthropic描述了客户在使用这类系统时发现特别有价值的两个应用领域。
Anthropic强烈建议:在构建LLM应用时,寻找尽可能简单的解决方案,只在必要时增加应用复杂性。
关键权衡:类Agent系统通常以延迟和成本为代价换取更高性能,应谨慎评估这种取舍。
复杂性增加的指导原则:
重要提示:对许多应用而言,优化单个LLM调用(通过检索增强和上下文示例)通常已足够有效。
开发框架虽然便捷,但常存在过度抽象问题,使底层提示词和LLM调用被隐藏。这导致两个主要风险:
Anthropic建议采取渐进式开发方法:
“我们建议开发者直接使用LLM API:许多模式可以用几行代码实现。如果你使用框架,请确保理解底层代码。对底层工作的错误假设是客户错误的常见来源。”
参考Anthropic的cookbook[1]获取示例实现。
本节探讨生产环境中常见的类Agent系统模式。Anthropic从基础构建模块——增强型大语言模型(LLM)开始,逐步增加复杂性,从简单组合工作流到自主Agent。
定义:类Agent系统最基础的模块是"增强的LLM",即具备检索、工具使用和记忆等功能的语言模型。Anthropic当前的模型能够主动使用这些功能——生成搜索查询、选择合适工具以及确定需要记忆的信息。
增强型LLM
工程实现的关键要点:
虽然实现这些增强功能的方法很多,一种推荐方式是通过Anthropic最近发布的模型上下文协议[2](MCP),该协议允许开发者通过简单的客户端实现与不断扩展的第三方工具生态系统集成。
定义:提示链将任务分解为一系列有序步骤,每个LLM调用处理前一个调用的输出。可在任何中间步骤添加程序检查("门控")以确保流程保持在正确轨道上。
提示链工作流
适用场景:
应用示例:
定义:路由工作流对输入进行分类并将其引导到专门的后续任务。这种工作流实现关注点分离,并构建更专门化的提示。不使用路由时,为某一类输入优化可能会降低其他类型输入的处理效果。
路由工作流
适用场景:
应用示例:
定义:并行化工作流让LLM同时处理多个任务,并通过程序化方式聚合输出。分为两种关键形式:
并行化工作流
适用场景:
应用示例:
假设我们正在构建一个社交媒体平台的内容审核系统,需要评估用户发布的以下内容是否适当:
用户发布内容示例
"这些政客都是垃圾,应该被扔进海里喂鲨鱼。大家都应该去抗议这个荒谬的新政策,让他们知道我们的愤怒!"
实现方案:
1、并行LLM提示(专注不同维度)
2、差异化投票阈值设置
1. **暴力威胁**:低阈值(高敏感度)
3、决策流程示例
1. **并行评估结果**:
系统优势:平衡误报和漏报
这种多方面并行评估系统能够:
1. **减少漏报**:低阈值捕获严重违规(如明确暴力威胁)
2. **减少误报**:多角度评估避免过度审查合法内容
3. **细粒度分析**:识别具体问题方面,非简单二分法
4. **差异化风险应对**:对不同类型违规设置不同敏感度
这种并行投票系统能同时考虑内容多个维度,根据不同维度的严重性设置差异化决策标准,实现更平衡、更细致的内容适当性评估,特别适合处理复杂边界案例。
定义:在编排者-工作者工作流中,编排者(LLM)动态分解任务,将其委派给工作者LLM,并综合其结果。
编排者-工作者工作流
适用场景:
应用示例:
假设我们正在构建一个医疗研究助手,研究人员输入了以下查询:
用户查询
"我需要了解最近三年内关于长新冠与认知障碍关联的研究结果,特别是那些包含临床试验数据的研究。"
编排者-工作者工作流实现
编排者将任务分配给多个专门的工作者LLM:
工作者1:医学文献搜索
工作者2:研究机构报告搜索
工作者3:临床试验数据库搜索
工作者4:医学会议与预印本资料搜索
编排者接收所有工作者的搜索结果,然后:
1. 识别重复信息:消除不同来源的重复研究
2. 评估证据质量:按照研究设计、样本量、期刊影响因子等标准评估每篇研究
3. 识别共同主题:分析跨多个研究的一致性发现
4. 发现研究差距:识别缺乏研究的领域
5. 权衡相互矛盾的结果:评估不同研究之间的差异原因
编排者可能发现需要进一步信息:
编排者综合所有信息生成最终报告:
工作流优势
定义:一个LLM调用生成响应,而另一个在循环中提供评估和反馈。
评估-优化工作流
适用场景:
应用示例:
背景与设置
流程示例
原文:
"In my younger and more vulnerable years my father gave me some advice that I've been turning over in my mind ever since. 'Whenever you feel like criticizing anyone,' he told me, 'just remember that all the people in this world haven't had the advantages that you've had.'"
迭代1
初次翻译:
"在我年轻、更加脆弱的岁月里,父亲给了我一些建议,我自那以后一直在脑海中回味。'每当你想批评任何人的时候,'他对我说,'请记住,这个世界上的所有人都没有得到过你所拥有的那些优势。'"
评估(7/10):
迭代2
修改版:
"在我年少轻狂、尚且脆弱的岁月里,父亲给了我一条忠告,此后我一直在心中反复思量。'每当你想要批评任何人的时候,'他对我说道,'请记住,这世上并非所有人都拥有过你所享有的那些机遇和条件。'"
评估(9/10):
迭代3(最终版):
最终翻译:
"在我年少青涩、心思易伤的岁月里,父亲给了我一条忠告,此后我便一直在心中反复思量。'每当你想要批评任何人,'他告诫我道,'请记住,这世上并非所有人都有幸获得你所享有的那些机遇。'"
最终评估(10/10):
工作流优势
实施建议
这种工作流特别适合需要高质量、精心斟酌输出的场景,模拟了人类专业人士的迭代改进过程。
随着大模型核心能力的成熟(理解复杂输入、推理规划、工具使用、错误恢复),智能体正在生产环境中崭露头角。智能体的典型工作流程为:
Agents can handle sophisticated tasks, but their implementation is often straightforward. They are typically just LLMs using tools based on environmental feedback in a loop. It is therefore crucial to design toolsets and their documentation clearly and thoughtfully.
智能体可以处理复杂任务,但其实现通常很直接 - 本质上是在循环中基于环境反馈使用工具的LLMs。
因此,清晰且合理的工具集及其说明文档至关重要。
我们在附录2中详述了工具开发的最佳实践。
工具集及其文档质量直接决定智能体的成功率和速度,体现在:
自主Agent
何时使用Agent:
Agent适用于开放性问题,这些问题特点是:
在这类场景中,LLM可能需要多轮操作,您必须对其决策过程有一定信任度。
需要注意的是,Agent的自主性意味着:
建议在实际部署前在沙盒环境中进行广泛测试,并设置适当的保护措施。
Agent应用举例:
以下是来自Anthropic实际实现的示例:
编码Agent的流程
正如文章开头所强调,"最成功的实现采用简单、可组合的模式,而非复杂的框架"。这些设计模式是灵活的构建模块,可以根据具体应用需求进行组合和定制。
「在LLM领域,最成功的实现不是构建最复杂的系统,而是为特定需求构建最合适的系统。」首先从简单的提示词开始,通过全面评估进行优化,仅在简单解决方案不足时才添加更多步骤的类Agent系统。
在实现Agent时,我们尽量遵循三个核心原则:
虽然开发框架可帮助快速入门,但转向生产环境时,应减少抽象层级,直接使用基本组件构建。遵循上述原则,你可以创建强大、可靠、可维护且受用户信赖的智能体系统。
基于客户合作经验,AI智能体在同时满足以下条件的任务中能创造最大价值:
多家企业采用基于成功解决的定价模型(仅对成功解决的案例收费),证明了Agent在客户支持领域的实际价值和可靠性。
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。