Agentic AI 教程

5.1 工作流规划

介绍规划设计模式,以及如何通过提供工具集和LLM编写计划来构建高度自主的智能体。

5.1 工作流规划

就像复杂软件系统需要工厂模式、单例模式、依赖倒置等等设计模式和原则一样,Agent系统想要实现复杂度与效率并重,也需要一些设计模式。

本节我们将介绍规划 (Planning) 设计模式,规划模式的Agent系统高度自主,能够自行决定执行复杂任务所需的工具调用序列,而无需事先硬编码。


真实案例:客服助理Agnet

  • 目标: 构建能够回答广泛、复杂查询的智能体,在运行时灵活地决定采取哪些行动。在本系统中,是一个能够回答客户像“你们有没有库存中售价低于100美元的圆形太阳眼镜?”这类复杂问题的Agent。
  • 方法:
    • 提供工具集: 给 LLM 提供一套功能工具。在本例中,是如下工具:

      工具名功能说明示例用途
      get_item_descriptions获取商品的文字描述或元数据(如名称、款式、材质、颜色、形状等)当用户说“round sunglasses”时,用它来查出所有带“round”特征的太阳眼镜
      get_item_price查询指定商品的价格在找到商品后,用它来判断哪些低于 $100
      check_inventory检查商品是否有库存(以及库存数量)找到圆形眼镜后,查询这些商品是否在库
      check_past_transactions查看用户的历史交易记录(如购买过哪些商品、是否退换货过)用于客户支持场景,如“我上周买的眼镜有问题”
      process_item_sale处理购买行为,即创建销售订单或执行购买交易当用户确认要买时,调用这个工具执行交易
      process_item_return处理退货操作当用户想退货时,用它发起退货请求
    • LLM 编写计划: 要求LLM根据用户请求返回一个逐步的执行计划,说明应按什么顺序调用哪些工具。在本例中,是如下流程:

      1. LLM 计划调用 get_item_descriptions 来找“round sunglasses”
      2. 根据 Step 1 的输出(找到的产品)
      3. 再调用 check_inventory 查看库存
      4. 对库存中有货的结果
      5. 调用 get_item_price 检查哪些低于 $100
      6. 输出最终结果
    • 逐步执行: 按照计划,将每一步的指令和上一步的输出/上下文依次喂给 LLM,让它调用相应的工具并执行。

    • 最终输出: 将所有步骤的结果反馈给 LLM,生成最终的用户答案。


可以看出,规划模式的Agent有许多好处,比如Agent拥有非常丰富的能力,进而扩展了能执行的任务范围。开发者也无需事先编排工具调用的确切序列,提高了系统的灵活性和自主性。

规划模式的Agent系统在流程控制与实际场景上也有些风险点。在运行时,开发者无法预知 LLM 会生成什么样的计划,带来了结果不稳定/出错/越权的风险。目前,规划模式在AI Coding应用中非常成功,但在其他领域仍然处在尝试阶段。

On this page