什么是 LLM Agent?
LLM Agent(大语言模型智能体)是一种程序,其执行逻辑由底层模型控制。与简单的少量样本提示(few-shot prompting)或预设工作流程不同,Agent 能够制定并调整执行用户查询所需的步骤。
当拥有诸如代码执行或网络搜索等工具集的访问权限时,Agent 能够自主决定使用何种工具、如何使用,并依据输出结果进行迭代优化。这种灵活性使得系统能够以极低的配置需求应对多样化的场景。
Agent 架构存在于一个连续的变化范围内,从固定工作流程的可靠性到 autonomous agents 的高度灵活性。例如,像检索增强生成(RAG)这样的预设流程,可以通过加入自我反思循环(self-reflection loop)来提升改进,使得程序在初次响应不充分时能够进行改进。另一方面,ReAct Agent 可以配备预设流程作为其工具之一,实现一种既灵活又有条理的处理方式。架构的选择最终应根据具体应用场景以及可靠性与灵活性之间的平衡需求来决定。
从头开始打造一款通用 LLM Agent
第一步:挑选合适的 LLM
挑选合适的模型是实现预期性能的关键。在决策时,需考虑多个因素,如版权许可、成本和语言支持。对于构建 LLM Agent 来说,最关键的考虑因素是模型在核心任务上的表现,例如编程、调用工具和逻辑推理。
评估标准包括:
- 大规模多任务语言理解(MMLU):用于推理能力评估。
- 伯克利大学的函数调用排行榜:用于工具的选择与调用能力评估。
- HumanEval 和 BigCodeBench:用于编程能力评估。
此外,模型的处理窗口大小也非常重要。Agent 的工作流程可能会消耗大量 token —— 有时甚至超过 10 万个 —— 因此,更大的处理窗口将大大提高处理效率。
当前值得关注的模型包括前沿模型(如 GPT-4o, Claude 3.5)和开源模型(如 Llama 3.2, Qwen 2.5)。一般来说,模型越大,性能越优越。但能够在本地运行的小型模型也是一个不错的选择,通常适用于较为简单的场景,并且可能只能与一到两个基础工具对接。
第二步:设定智能体的控制逻辑
简单大语言模型(LLM)与智能体(Agent)之间的核心差异,主要体现在系统提示词上。我们可以通过系统提示词来编码大语言模型应展现的智能体行为。
常见的智能体行为模式包括:
- 工具运用:智能体判断何时应将问题转交给适当的工具处理,或是依赖自身知识库。
- 自我反思:智能体在回复用户前,会审视并修正自己的答案。
- Reason-then-Act(ReAct):智能体通过反复推理来确定解决问题的方法,执行操作,观察结果,并决定是否需要进一步行动或直接给出回答。
- Plan-then-Execute:智能体通过将任务细分为多个子步骤来进行事前规划,然后逐一执行这些步骤。
在构建通用单智能体时,ReAct 和 Plan-then-Execute 这两种模式通常是起步的最佳选择。为了有效地实现这些行为模式,我们需要对提示词进行精心设计,可能还需要采用结构化生成技术,这意味着会调整 LLM 的输出,使其符合特定的格式或架构,从而确保智能体的回复与我们所追求的沟通风格保持一致。
第三步:设定智能体的核心指令
要想实现期望的性能表现,就需要在系统提示词中详细列出应该包含以及不应该包含的功能。这可能涉及以下指令:
- 智能体的名称与职责:智能体的命名及其预期执行的任务。
- 语言风格与简洁性:智能体在交流时应该保持的正式或随意程度,以及信息传达的简洁性。
- 工具使用时机:确定何时应该利用外部工具,何时依赖模型自身的知识库。
- 错误处理:当工具使用或流程执行出现问题时,智能体应采取的行动。
第四步:定义并优化核心工具集
工具就是赋予智能体超能力的魔法。只需一套定义明确的工具,就能实现广泛的应用功能。重要的工具包括代码执行、网络检索、文档读取和数据解析等。
对于每一项工具,都需要定义以下信息,并将其融入系统提示词之中:
- Tool Name:为这项功能起一个独特且具描述性的名称。
- Tool Description:清晰地阐述该工具的作用及其使用时机。


