Published on

AI智能体开发:简单性胜过复杂性

作者
  • avatar
    姓名
    Ajax
    Twitter

智能体的定义

智能体的概念多种多样。有人将其视为能够独立思考、自主决策并运用工具完成复杂任务的“全能管家”。另一些人则认为它是按部就班执行预设工作流程的“规矩员工”。Anthropic 将这两者统称为智能系统,并区分了工作流和智能体:

  • 工作流:通过预定代码路径编排大型语言模型(LLM)和工具的系统。
  • 智能体:由 LLM 动态指导自身流程和工具使用的系统,可自主控制任务完成方式。

何时选用智能体

Anthropic 建议在开发 AI 应用时,应遵循“能简单就不要复杂”的原则。并非所有场景都需要构建复杂的智能系统。智能系统功能强大,但可能导致响应变慢和成本增加。开发者需要在功能与效率之间权衡。

  • 工作流:适合需要可预测性和一致性的明确任务。
  • 智能体:更适合需要灵活性和模型驱动决策的大规模场景。

对于许多应用,使用好的提示词配合检索和上下文示例,直接向大模型提问通常已足够。

框架的使用

目前,市面上存在多种帮助开发者构建 AI 智能体的框架,例如:

  • LangChain 的 LangGraph
  • 亚马逊 Bedrock 的 AI Agent 框架
  • 拖放式大模型工作流构建工具 Rivet
  • 用于构建和测试复杂工作流的 GUI 工具 Vellum

这些框架简化了开发流程,但也会增加代码的抽象层,使底层逻辑不够透明,增加调试难度,并可能导致在简单场景中引入过度复杂的解决方案。

Anthropic 建议开发者从直接使用大模型的 API 开始。许多模式仅需几行代码即可实现。如果选择使用框架,务必理解其底层原理。对框架底层机制理解不足是导致开发问题的主要原因。Anthropic 的 cookbook 提供了具体示例。

构建模块、工作流和智能体

基础构建模块:增强版 LLM

智能系统的基本构建模块是增强的 LLM,具备检索和记忆等功能。Anthropic 的模型可以主动使用这些能力,例如生成搜索查询、选择工具和决定保留的信息。

在扩展功能时,应重点关注:

  • 根据具体应用场景定制功能
  • 确保为模型提供简单且文档完备的接口

Anthropic 最近发布的模型上下文协议简化了 AI 模型与第三方工具生态系统的集成。

工作流:提示链

提示链将复杂任务分解为多个步骤,每个步骤调用一次大模型,后续步骤基于前一步的结果进行处理。开发者可在中间环节加入检查点,确保流程按预期推进。

提示链适合将复杂任务清晰分解为一系列固定子任务的场景。每个模型专注于完成一个简单任务,虽然整体响应时间可能稍长,但准确率会显著提高。

典型应用案例:

  • 先生成营销文案,再将其翻译成其他语言。
  • 先写文档大纲并进行合规性检查,再基于大纲撰写完整文档。

工作流:智能分流

分流技术判断输入任务类型,并将其分配给相应的模块。这种设计让每个模块针对特定任务进行优化,避免不同任务类型之间的相互干扰。智能分流适用于任务有明显分类特征的场景。AI 系统可以通过大语言模型或传统算法,准确识别任务类型并进行分流。

典型应用案例:

  • 客服系统中,将一般咨询、退款申请和技术支持等问题分别引导到相应流程。
  • 将简单常见问题分配给较小模型,将困难罕见问题分配给更强大的模型,以优化成本和速度。

工作流:并行

大语言模型可以同时处理任务,并以编程方式聚合输出。并行工作流的特点:

  • 任务分段:将任务拆分为可并行运行的子任务,最后整合结果。
  • 投票机制:对同一任务进行多次运行,选择最优结果或综合多个答案。

当子任务可以并行执行以提高速度,或需要多角度尝试以获得更高置信度的结果时,并行方法非常有效。对于复杂任务,让每次调用专注于处理特定方面,会获得更好的效果。

典型应用案例:

  • 任务分段
    • 安全防护:一个模型处理用户请求,另一个进行内容审核。
    • 性能评估:不同模型评估系统性能指标。
  • 投票机制
    • 代码安全检查:多个检测模型共同发现代码漏洞。
    • 内容审核:多个模型从不同角度评估内容安全性。

工作流:领导 - 执行者

中央大语言模型动态分解任务,分配给执行者模型,并汇总结果。

这种工作流适用于难以提前确定具体步骤的复杂任务。任务拆分不是固定的,而是由 AI 系统根据情况动态决定。

典型应用案例:

  • 需要对多个文件进行复杂修改的编程应用。
  • 需要从多个来源收集和分析相关信息的搜索任务。

工作流:评估 - 优化

一个 LLM 调用生成响应,另一个提供评估和反馈,形成循环。

当存在明确评估标准,且通过迭代细化可以带来显著价值时,此工作流特别有效。LLM 能够提供反馈,类似于人类作家反复修改的过程。

典型应用案例:

  • 文学翻译:评估模型发现翻译遗漏的语言差异并提供修改建议。
  • 复杂搜索:评估模型判断是否需要继续深入搜索。

智能体

智能体随着 LLM 在理解复杂输入、推理规划、工具使用和错误恢复等关键能力上的成熟而出现。

智能体的工作始于人类用户的命令或互动讨论。一旦任务明确,智能体会独立规划和操作,可能需要向人类索取更多信息或让人类做判断。

执行过程中的每一步,从环境中获得“真实情况”至关重要。智能体可以在检查点或遇到阻塞时暂停以获取人类反馈。任务通常在完成后终止,但也通常包含停止条件。

智能体能够处理复杂任务,但其实现通常很简单,通常只是循环中根据环境反馈来使用工具的大型语言模型。因此,设计工具集及其文档清晰、周到至关重要。

智能体适用于开放性问题,此类问题难以预测所需步骤数量,并且不能硬编码固定路径。智能体的自主性使其成为在受信任环境中扩展任务的理想选择。智能体的自主性意味着成本更高,并且可能存在错误累积的风险。建议在沙盒环境中进行广泛测试,并设置适当的防护措施。

智能体的应用示例:

  • 一个代码智能体,用于解决涉及根据任务描述编辑多个文件的 SWE-bench 任务。
  • Anthropic 的“Computer use”功能,其中 Claude 使用计算机完成任务。

组合与定制

这些构建模块并非规定性,开发者可以根据用例进行塑造和组合。成功的关键在于衡量性能并迭代实现。只有当更简单的解决方案无法实现时,才应考虑增加复杂性。在 LLM 领域取得成功不在于构建最复杂的系统,而在于构建适合需求的系统。从简单的提示开始,用全面的评估优化它们,只有当更简单的解决方案无法实现时才添加多步骤智能体系统。

在部署智能体时,需要遵循以下原则:

  • 保持智能体设计的简单性。
  • 优先确保智能体的透明度,清楚展示计划中的每一步。
  • 通过全面的工具文档和测试,精心打造智能体-计算机界面(ACI)。