【Agent智能体24 | 规划-创建和执行LLM计划】
声明:本篇博客是以吴恩达的【Agent智能体】教程为基础,并对其中的内容做了笔记整理以及个人收获的总结。
这一篇将详细介绍如何提示LLM生成一个计划以及如何阅读、理解并执行该计划
依旧客户服务智能体的例子
这个例子用简单的文本描述以高层次的方式展示了这个计划,现在我们看看,如何让LLM编写更清晰的计划,超越这些简单的高层次文本描述
这个图展示了如何引导大语言模型(LLM)将执行计划从非结构化的自然语言,升级为高度结构化的机器可读数据(JSON 格式)
更新系统提示词 (Updated system prompt)
要让 LLM 输出如此规范的格式,关键在于修改它的“大脑指令”(System Prompt)。
- 明确输出格式要求:系统提示词中明确加入了
Create a step-by-step plan in JSON format.(创建一个 JSON 格式的逐步计划)。 - 定义数据结构:强制要求每个步骤必须包含四个特定的键值(Keys):
step number(步骤编号)description(步骤描述)tool name(工具名称)args(参数)
- 明确输出格式要求:系统提示词中明确加入了
JSON 格式计划解析 (Formatting plan as JSON)
当用户输入“你们有100美元以下的圆形太阳镜现货吗?”时,LLM 不再输出一段文字,而是输出一个名为
"plan"的 JSON 数组。的具体步骤如下:- 步骤 1 (Step 1):
"step": 1:第一步。"description": "Find round sunglasses":描述这一步的目的是“查找圆形太阳镜”。"tool": "get_item_descriptions":关键,它精准指定了系统需要调用的函数/API名称。"args": {"query": "round sunglasses"}:它提取了用户的需求,转化为传递给该工具的具体参数
- 步骤 2 (Step 2):
"step": 2"description": "Check available stock":目的是“检查可用库存”。"tool": "check_inventory":指定调用查库存的工具。"args": {"items": "results from step 1"}:展现了逻辑链条。它知道这个工具需要输入参数,而这个参数来自于“步骤1的结果”。
- 步骤 1 (Step 1):
在真实的软件开发中,如果 LLM 输出文本,你需要写复杂的正则表达式去提取工具名字和参数,非常容易出错。而如果是 JSON,开发者可以用一行代码(如 Python 的json.loads())直接将其转化为字典对象,提取tool和args直接运行。
这种JSON格式相比于用普通文本写计划,可以让下游代码更清晰的解析出计划的每一步,从而可以可靠的逐步执行。
除了JSON,也可以使用XML,也有用markdown的,但是解析的时候稍有模糊。纯文本是最不可靠的!
关于让LLM进行规划,还有一个非常巧妙的思路,可以让LLM输出非常复杂的计划并可靠的执行,那就是让LLM编写代码,并用代码表达计划。下面会详细说明。
如果这篇文章对你有帮助,欢迎点赞、评论、关注、收藏。你们的支持是我前进的动力!
