上下文:Agent 的眼睛
上下文是 Agent 在每个决策点能看到的全部信息。就像一个人在做决策时需要看到桌上摊开的所有资料------任务说明、参考手册、之前的沟通记录、最新的数据------Agent 的上下文窗口就是它的"视野"。从 API 的视角看(详见第二章),每次调用 LLM 时的上下文由以下五个部分构成:
-
**系统提示词**(System Prompt):与用户每次输入的提示词不同,系统提示词由开发者编写,在整个对话过程中保持不变,相当于 Agent 的"岗位说明书"------定义它的身份、权限和行为准则。通过提示工程(Prompt Engineering)精心设计系统提示词,我们可以塑造 Agent 的工作方式。系统提示词中还会包含跨会话保存的**用户记忆**(用户偏好、历史行为、背景设定等个性化信息,详见第三章)和动态注入的环境状态。
-
**工具定义**(Tool Definitions):声明 Agent 可用工具的名称、功能描述和参数格式。没有工具定义,Agent 就无法识别和调用任何工具------消融实验(实验 1-1)将验证这一点。工具定义与系统提示词一起构成对话中保持不变的**静态前缀**。
-
**用户消息**(User Messages):来自用户的输入。用户消息中还可能包含通过 RAG(检索增强生成,Retrieval-Augmented Generation,详见第三章)动态检索引入的**外部知识**------覆盖训练数据截止后的信息或私有领域知识。
-
**模型回复**(Assistant Messages):模型之前生成的回复,最多包含三个部分------思考过程(`reasoning`,即内部思考链,保持思维连贯性和决策可解释性)、文本内容(`content`,即对用户的回复)和工具调用请求(`tool_calls`,即 Agent 采取行动的方式)。在一次具体的回复中,三者不一定同时出现:例如 Agent 决定调用工具时通常只有 `reasoning` + `tool_calls`,给出最终回答时通常只有 `reasoning` + `content`。
-
**工具执行结果**(Tool Results):Agent 框架执行工具后返回的结果。这些结果是 Agent 下一步思考的直接依据,也让它能够从执行结果中学习、避免重复犯错。
前两项(系统提示词 + 工具定义)是静态前缀,后三项(用户消息 + 模型回复 + 工具执行结果)是随交互不断增长的动态消息历史。这五个部分共同构成了 LLM 每次推理时的上下文。