Agentic AI 教程

5.3 结合代码执行的规划

探讨让LLM直接编写代码来表达计划的优势、风险以及实现方式。

5.3 结合代码执行的规划

在上节中,我们让LLM用JSON描述了自己的动作。但是不妨想想,与其让 LLM 输出 JSON 等结构化数据来表示计划,不如直接让 LLM 直接编写软件代码来的效果更好。LLM可以直接用代码来表达计划的多个步骤和工具调用。

在处理复杂的数据查询(如“哪个月份热巧克力销量最高?”)时,如果只提供少量基础工具(如 获取最大值过滤行),代理需要极其复杂且冗长的工具调用序列来解决问题。

更糟糕的是,对于新的、更复杂的查询(如“上周有多少风险交易?”),还需要不断地创建新的定制工具,这种方法是脆弱且低效的。

而若是允许LLM直接执行代码,就能获得下列优势:

  • 利用大型库: LLM 得以利用像 Pandas 这样的数据处理库中数百甚至数千个内置函数。
  • 高表达能力: LLM 能够编写简洁的代码来表达一个涉及多步骤、复杂逻辑的计划,例如解析日期、按日期排序、过滤、去重、计数。
  • 性能更优: 研究表明,在许多任务中,让 LLM 编写代码来采取行动的性能优于让它编写 JSON 或纯文本计划。

不过,这种CodeAgent的形式也有些需要注意的风险点:

  • 提示词要求: 明确要求LLM编写代码来解决用户的查询,并以 Python 代码返回结果,通常使用 `````或 <code> 等标签进行分隔。
  • 安全问题: 直接运行 LLM 生成的代码存在安全风险,需要考虑使用沙箱 (Sandbox) 等安全执行环境。

现在,我们已经充分了解了这种使用代码执行任务的规划模式Agent系统。该模式下 LLM 可以生成一个详细的“构建清单”并逐步执行复杂的软件开发任务。

规划模式的缺点是难以控制,因为开发者无法预先知道 LLM 会生成什么样的行动序列。尽管如此,放弃一些控制权可以显著增加模型的能力范围,大多数时候这是值得的。

On this page