AI 应用扫盲:AI 应用的基础组件及选型
1. AI 应用扫盲:AI 应用的基础组件及选型
终于看了 Anthropic 的《Building effective agents》这篇文章,收获很大,我觉得如果要做 AI 应用,这篇文章可以称得上是"必读圣经"。
1.1. 介绍
首先,做 AI 应用,要区分两个概念:
一个是 Workflow,一个是 Agent。
1.1.1. Workflow 与 Agent 的区别
1.1.1.1. Workflow(工作流)
是通过预先定义好的流程来协同 LLMs 和工具的系统。工作流适合固定的处理流程,可以为明确定义的任务提供可预测性和一致性。
1.1.1.2. Agent(智能体)
由 LLMs 自主、动态规划它们的任务及工具使用,对如何完成任务始终拥有控制权。Agent 更适合开放性问题(例如写代码),这类问题难以或无法预测所需步骤数量,无法硬编码固定路径,LLM 可能会进行多轮操作。
1.1.2. 构建原则
对于 Workflow,有一些 building blocks,它们就像乐高积木一样,可以在需要的时候拿来使用。
Anthropic 建议,先从 LLM 入手开始构建应用,只有当复杂性能够明确改善结果时,才应考虑增加复杂度,并且要确保可以持续地衡量性能并迭代解决方案。
1.2. 增强型 LLM
这是 Agentic systems(智能代理系统)的基本组件,是在检索、工具调用和记忆等方面经过强化的 LLM。
Anthropic 建议根据使用场景定制使用工具能力,并确保通过 MCP 协议保持客户端调用的简洁性以及对第三方繁荣生态的集成。
1.3. Prompt chaining(提示链)
提示链将任务分解为一系列步骤,其中每一个 LLM 调用处理前一个步骤的输出。可以在中间步骤中增加程序化的检查(如下图中的"gate"),以确保流程仍在正轨上。
-
生成营销文案,然后将其翻译为另一种语言。
-
撰写文档大纲,检查大纲是否符合特定标准,然后根据大纲编写完整文档。
1.4. Routing(路由)
路由机制对输入进行分类并将其导向专门的后续任务,它实现了关注点分离,能够针对不同的后续任务构建更专业的提示词。如果不使用路由,针对某类输入的优化可能会损害其他输入的处理效果。
-
客服场景,将用户的不同问题(例如一般问题,退款请求,技术支持)分流至不同的下游流程、提示词和工具。
-
将简单问题路由至 Claude 3.5 Haiku 等较小模型,将困难/特殊问题路由至 Claude 3.5 Sonnet 等更强模型,以优化成本和速度。
1.5. Parallelization(并行处理)
LLM 可以同时处理一项任务,并通过编程方式对输出进行聚合,它有两个关键变体:
-
sectioning(任务分块),将任务分为可并行执行的独立子任务。
-
voting(投票),多次执行相同任务以获得多样化的输出。
-
实施防护机制时,一个模型处理用户查询,另一个模型筛查不当内容或请求,这种方案通常比一个 LLM 同时处理用户响应和内容防护效果更好。
-
自动化进行 LLM 性能测试,每次调用评估模型在给定提示下不同方面的表现。
- 例如,把同一个输出的质量拆成多个相互独立的维度(如:正确性、完整性、可读性、事实性/安全、格式合规等),为每个维度各起一次评审调用,并行跑,最后把各个维度的结论/分数聚合成一条评测记录(rubric-style)。
- 目标是让每个评审 prompt 聚焦单一指标,减少干扰,也能并行提速,可用于离线/在线质量监控与 A/B 评估。
一个 rubric-style 的 LLM 评审示例
Voting(投票)
-
检查一段代码是否存在漏洞,可以通过多个不同的 prompt 对代码进行检查并找出潜在的问题。
-
评估特定内容是否不当,多个提示词评估文本的不同方面,或者设置投票阈值以平衡漏判和误判。这里是针对同一个维度的冗余判断,用"集体智慧"确保结果可控。voting 倾向于评审同一个维度,但使用不同的提示词。
Sectioning 是分开并行评测多个方面,Voting 是评审同样的维度并综合考虑他们给出的结果。
1.6. Orchestrator-workers(任务分解 - 任务执行)
在任务分解 - 任务执行工作流中,一个核心 LLM 动态分解任务,将子任务分配给工作者 LLM,并综合它们的结果。
-
每次对多个文件进行复杂修改的编码产品。
-
涉及从多个来源收集和分析信息以寻找可能相关信息的搜索任务。
1.7. Evaluator-optimizer(评估优化器)
在评估 - 优化工作流中,一个 LLM 负责生成响应,另一个 LLM 则为该响应提供评估与反馈。
当我们对 LLM 的产出有明确的评估标准,并且当迭代优化能带来可衡量的价值时,这个流程尤为有效。
可以通过两个指标来判断该流程对于应用场景是否有效:
- 当人类明确表达反馈时,LLM 的响应能获得显著改进。
- LLM 本身可以代替人类提供此类反馈。
评估 - 优化的适用场景包括:
- 文学翻译场景,初始 LLM 可能难以把握文字中的细微差异,而借助 评估 LLM 可以提供有价值的反馈。
- 需要多轮搜索和分析以收集全面信息的复杂搜索任务,由评估 LLM 确定是否需要进行进一步的搜索。
1.8. Agent(智能体)
对于 Agents,任务明确后,它能够自主规划执行任务,过程中可能返回向人类请求更多信息。在 Agent 执行过程中,在每一步执行中获取环境反馈的"ground truth"非常重要(例如工具调用结果或代码调用结果),这会帮助 Agent 判断当前的进展。Agent 通常在任务完成时停止,也可以为 Agent 设置停止条件(例如迭代步数)以保持控制。
Agent 通常是 LLM 基于环境的反馈调用各种各样的工具,因此清晰而周密地设计工具集及其文档至关重要。
智能体适用于开放式问题,这类问题难以或无法预测所需步骤数量,且无法预先设定固定路径,智能体的自主性使其成为可信环境中规模化任务的理想选择。
智能体的自主性意味着更高的成本和错误累积的风险,Anthropic 建议在沙盒中进行充分测试,并设置适当的防护措施。
1.8.1. Agent 示例
Anthropic 的 Agent 示例包括:
- 编程代理(Coding Agent),涉及到根据任务描述对多个文件进行编辑。
- 计算机使用(Computer use),其中 Claude 利用计算机完成任务。
1.9. 开发建议
开发者可以根据不同的使用场景灵活调整和组合这些常见的模式及 building blocks,成功的关键在于衡量效果并逐步迭代实现方案。 Anthropic 再次强调,只有当复杂性被证明能切实改善结果时,才应考虑增加复杂度。
1.10. Agent 的价值
Anthropic 发现,智能体在需要"对话 + 行动"结合的任务中能创造最大价值,这类任务具有明确的成功标准,可实现的反馈循环,并能融入有效的人工监督机制。【这一段很金句,值得反复阅读及思考潜在的场景】
agents add the most value for tasks that require both conversation and action, have clear success criteria, enable feedback loops, and integrate meaningful human oversight.
1.11. 构建原则
Anthropic 在构建 AI 智能体时,遵循的三大核心原则:
- 保持简洁性(simplicity)
- 优先考虑透明度,明确展示智能体的规划步骤(transparency)
- 通过详尽的工具文档和测试,精心设计智能体 - 计算机交互界面(ACPI,agent-computer interface )
1.12. 构建框架
对于构建智能体的框架,Anthropic 在文档中列出的包括 LangGraph,Amazon Bedrock 的 AI Agent Frameworks,Rivet(拖拉拽形式构建 LLM 工作流的界面工具),Vellum(另一款用于构建和测试复杂工作流的图形界面工具)。
Anthropic 在文章中提醒,框架可以帮助快速上手,但实际上线时不必拘泥于抽象层,应基于基础组件构建。如果确实需要使用框架,需要确保理解底层代码(错误的假设可能会导致用户侧出现错误)
1.13. 应用前景
两个极具前景的应用方向:
1.13.1. 客户支持
a. 客户支持将聊天机器人和工具增强型 LLM 相结合,交互自然遵循对话流程,同时需要访问外部信息和执行操作;工具可以获取客户数据、订单历史和知识库;所执行的操作包括发放退款或更新工单等,可通过编程方式自动操作;成功可以被用户定义及衡量。
b. Anthropic 发现多家公司已通过按使用量付费的模式验证了这一方法的可行性(仅在问题成功解决时收费),说明他们对 Agent 的效能很有信心。
1.13.2. 编程代理
在编程领域,智能体非常高效的原因在于:
a. 代码解决方案可通过自动化测试进行验证
b. Agent 可以利用测试结果作为反馈来迭代优化解决方案
c. 问题空间定义明确且结构清晰
d. 输出质量可以客观衡量
1.14. 总结
以上就是阅读 Anthropic 的《Building effective agents》这篇文章的收获,感觉经典就是经典,值得一读再读,反复回味及思考。
同时,它也很简洁,看一篇顶若干篇。推荐大家对这篇文章进行精读~