声明:本篇博客是以吴恩达的【Agent智能体】教程为基础,并对其中的内容做了笔记整理以及个人收获的总结。

在这里插入图片描述

从这一篇开始将介绍"规划"这个设计模式,这一篇主要是用几个例子介绍一下规划工作流

规划工作流例子1:客户服务智能体

在这里插入图片描述

  • 用户的原始问题是:
    • “Do you have any round sunglasses in stock that are under $100?” (你们有100美元以下的圆形太阳镜现货吗?)
  • AI 工作流并没有直接去猜答案,而是将这个复杂问题拆解成了三个需要验证的核心参数
    • 红色条件 (款式): round(圆形)
    • 蓝色条件 (库存): in stock(有现货/库存大于0)
    • 橙色条件 (价格): under $100(低于100美元)
  • 在明确了三个搜索条件后,工作流进入规划与执行阶段。AI 开始在左侧的结构化库存数据库(Inventory Database)中进行逐层筛选:
    • 步骤一:匹配红色条件 (round) AI 扫描 description(描述)列,寻找包含“round”的商品。数据库中符合条件的是 Moon (ID 1003)Classic (ID 1004)。图中用红框圈出了这两个词。
    • 步骤二:匹配蓝色条件 (in stock) AI 继续检查这两个候选商品的 stock(库存)列。Moon 的库存是 15,Classic 的库存是 9,两者都大于 0,符合“有现货”的条件(图中用蓝框圈出)。
    • 步骤三:匹配橙色条件 (under $100) 最后,AI 检查这两个商品的 price(价格)列。Moon 的价格是 120(超出预算,被淘汰),而 Classic 的价格是 60(图中用橙色框圈出,完全符合低于100美元的要求)。
  • 生成最终回复
    • 经过逻辑过滤后,智能体成功找到了唯一符合所有条件的商品:ID 1004 的 Classic 款太阳镜
    • 最后,工作流的生成模块将这些检索到的结构化数据(名称、描述、价格)重新转化为人类友好的自然语言(右下角的框):“是的,我们有 Classic 款太阳镜,它是经典的圆形金属镜架,价格为60美元”

客户服务智能体的技术解析

在这里插入图片描述

这张图揭示了 AI Agent 在底层是如何通过代码和工具(Tools)具体实现这些步骤的。这涉及到了 Agent 工作流中最核心的机制:计划(Planning)与工具调用(Tool Calling / Action)

  • 系统提示词和工具(System Prompt & Tools)

    AI 启动时的基础设置:

    • System Prompt (系统提示词): 这是给 AI 下达的全局指令。告诉它:“你可以使用以下工具{description of tools},请针对用户的请求,返回一个分步执行计划 (step-by-step plan)”。
    • Tools (工具库/API库): 虚线框内是开发者为 AI 提供的工具。在这个例子中,AI 有 6 个可用的函数接口,比如 get_item_descriptions (获取商品描述)、check_inventory (查库存)、get_item_price (查价格) 等。大模型本身不知道库存,它必须通过调用这些工具来获取实时信息。
  • 第一阶段:制定规划 (Planning Phase)

    当用户输入问题后,这段文本连同 System Prompt 一起被送入 LLM(大语言模型)。LLM 不会立刻给出最终答案,而是先生成一个执行计划(左下方灰底框):

    1. 红色步骤: 使用 get_item_descriptions 工具,寻找圆形的太阳镜。
    2. 蓝色步骤: 使用 check_inventory 工具,检查步骤1找到的商品是否还有现货。
    3. 橙色步骤: 使用 get_item_price 工具,检查步骤2确认有货的商品价格是否低于100美元。
  • 第二阶段:链式执行 (Execution Phase)

    制定好计划后,Agent 进入图右侧的循环执行阶段。这是一个非常经典的“链式反应”(Chain),每一步的输出都会作为下一步的输入:

    • Step 1 执行: LLM 读取“步骤1的计划”,调用 get_item_descriptions 工具。工具会在数据库里查一圈,返回结果(找到了 Moon 和 Classic 两款)。这就是 Step 1 output
    • Step 2 执行: 此时非常关键!系统会将 “步骤1的查询结果 (Step 1 output)” + “步骤2的计划 (Step 2 text)” 一起打包再次丢给 LLM。LLM 明白现在的任务是查这两款的库存,于是调用 check_inventory 工具。工具返回结果(两款都有货)。这就是 Step 2 output
    • Step 3 执行: 同理,系统将 “步骤2的结果 (Step 2 output)” + “步骤3的计划 (Step 3 text)” 再次送入 LLM。LLM 调用 get_item_price 工具查价格。最后过滤出唯一符合条件的结果(Classic,60美元)。

这些只是简化的流程,实际上LLM编写的方案要详细、复杂得多,但是基本的工作流程就是让LLM写出方案的多个步骤,然后依次执行每一步,并结合适当上下文信息。

LLM以这种方式进行规划的令人兴奋之处在于,我们无需提前决定为满足较复杂的客户请求应该以什么顺序调用工具。

核心:为什么要“拆解计划 + 链式执行”?

这展示了当代高级 AI Agent 的核心设计模式(通常被称为 ReAct 模式:Reasoning and Acting,即推理与行动)。

  1. 打破“黑盒”: 直接让模型回答容易出错,强制要求模型先写“计划 (Plan)”,能让 AI 的逻辑变得透明、可控。如果最后结果不对,开发者可以清楚地看到是哪一步计划写错了,还是哪一个工具调用失败了。
  2. 上下文传递 (Context Passing): 右侧阶梯状的流程说明了 Agent 的记忆机制。每一步的查询结果都会作为上文传递给下一步,确保任务能够一环扣一环地连贯完成。

规划工作流例子2:客户服务智能体

如果用户提出了不同的请求,例如:

  • I would like to return the gold frame glasses I purchased, but not the metal frame ones." (我想退掉我买的金框眼镜,但不是那副金属框的。)
    在这里插入图片描述

难点在于: 机器不知道这个用户是谁,不知道历史订单号,也不知道这两副眼镜在数据库里的商品代码(ID)是什么。

  • 第一阶段:制定分步计划 (Planning)
    • 第1 步 (红色): 使用 check_past_transactions(查询历史交易记录)工具,先弄清楚这个用户到底买过哪些眼镜。
    • 第 2 步 (蓝色): 使用 get_item_descriptions(获取商品描述)工具,去比对刚才查到的眼镜记录,找出哪副是“金框 (gold frame)”。
    • 第 3 步 (橙色): 使用 process_item_return(处理商品退货)工具,把确认好的那副金框眼镜退掉。
  • 第二阶段:链式执行 (Execution)
    • 系统把“第1步的计划”喂给 LLM,LLM 调用查询交易记录的工具。工具返回了该用户的购买历史(比如:买过 ID为1001和1004的商品)。这就是 Step 1 output(输出)
    • 系统把 “买过1001和1004 (Step 1 output)” 加上 “寻找金框眼镜 (Step 2 text)” 一起交给 LLM。LLM 明白现在要查这两个ID的详情,于是调用查描述的工具。工具返回结果,确认 1004 是金框。这就是 Step 2 output(输出)
    • 最后,系统把 “确定目标是1004 (Step 2 output)” 加上 “执行退货 (Step 3 text)” 交给 LLM。LLM 终于集齐了所有必要参数,果断调用 process_item_return 工具,成功帮用户完成了退货操作。

从“只读(Read)” 升级为 “写入/执行(Write/Action)”

  • 上一个例子(查库存): 所有的工具调用(查描述、查库存、查价格)都是“只读”操作。Agent 只是在数据库里找信息,不会对现实世界或系统状态产生任何改变。
  • 这一个例子(退货): 用户的诉求是:“我要退掉我买的金框眼镜”。工作流的最后一步调用了 process_item_return处理退货)这个工具。这是一个**“写入”操作**。它意味着 Agent 不仅仅是在陪你聊天或查资料,它真正在触发真实的业务流程,改变了系统的状态(例如:将订单状态改为已退货,触发退款流程等)。

规划工作流例子3:邮件助手

在这里插入图片描述

它的底层逻辑结构(“制定计划” + “链式执行”)和前两个客服例子一样,但这个案例的教学重点在于展示 Agent 处理“复合型多步骤任务(Compound Tasks)”的能力

  • 原始指令 (User Request)

    “Reply to that email invitation from Bob about dinner in New York and tell him I’ll attend. Then archive his email.” (回复 Bob 关于纽约晚餐邀请的那封邮件,告诉他我会参加。然后把他的邮件归档。)

    • 这一句话里包含了三个连续的动作,而且后两个动作都依赖于第一个动作的结果(必须先找到那封邮件,才能回复它,最后才能归档它)。
  • 第一阶段:制定分步计划 (Planning Phase)

    AI 接收到指令后,结合其右上角的“工具库”(搜索邮件、移动邮件、删除邮件、发送邮件),在左下方灰底框内拆解出了清晰的三步计划:

    • 第 1 步 (红色 - 检索阶段): 使用 search_email 工具,提取关键参数:发件人是“Bob”,关键词是“dinner (晚餐)”和“New York (纽约)”,去找到那封特定的邮件。

    • 第 2 步 (蓝色 - 执行阶段 1): 找到邮件后,使用 send_email 工具,自动撰写回复并发送,确认会出席。

    • 第 3 步 (橙色 - 执行阶段 2): 使用 move_email 工具,将刚才那封 Bob 的邮件移动到“archive (归档)”文件夹。

  • 第二阶段:链式执行与上下文传递 (Execution Phase)

    核心依然是上下文的传递

    • 执行 Step 1: LLM 根据第一步的计划,调用 search_email 工具。工具会在用户的邮箱里搜索,找到那封邮件后,返回该邮件的具体信息(比如邮件的唯一 ID)。这就是 Step 1 output

    • 执行 Step 2: 系统将“找到的邮件 ID (Step 1 output)”结合“回复出席 (Step 2 text)”的指令,再次交给 LLM。LLM 此时知道要回复给谁,于是调用 send_email 工具完成回复。

    • 执行 Step 3: 系统将“已回复完毕的状态及邮件 ID (Step 2 output)”结合“归档指令 (Step 3 text)”交给 LLM。LLM 最后调用 move_email 工具,把这封目标邮件移入归档文件夹,任务结束

总结

上面只是高层次的介绍了规划流程,主要是列出步骤清单,然后将语言模型逐步执行计划中的每一步,后面将深入探讨这些计划的具体结构和细节。

如果这篇文章对你有帮助,欢迎点赞、评论、关注、收藏。你们的支持是我前进的动力!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐