声明:本篇博客是以吴恩达的【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的结果”。

在真实的软件开发中,如果 LLM 输出文本,你需要写复杂的正则表达式去提取工具名字和参数,非常容易出错。而如果是 JSON,开发者可以用一行代码(如 Python 的 json.loads())直接将其转化为字典对象,提取 toolargs 直接运行。

这种JSON格式相比于用普通文本写计划,可以让下游代码更清晰的解析出计划的每一步,从而可以可靠的逐步执行

除了JSON,也可以使用XML,也有用markdown的,但是解析的时候稍有模糊。纯文本是最不可靠的!

关于让LLM进行规划,还有一个非常巧妙的思路,可以让LLM输出非常复杂的计划并可靠的执行,那就是让LLM编写代码,并用代码表达计划。下面会详细说明。

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

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐