
欢迎来到 AI Agent 的世界!
你可以把 Agent 想象成一个拥有超级能力的智能助手。你给它一个目标(比如“帮我规划下周去北京的旅行”),它就能像人一样,自己上网查信息、分析利弊、制定计划,甚至调用工具(比如订票网站)来完成任务。
那么,Agent 是如何实现这一切的呢?奥秘就在于它具备的五大核心能力。
Prompt:五大能力的“总指挥”
那么,我们作为开发者,如何驾驭这五大能力呢?答案是 Prompt。
如果说五大核心能力是 Agent 身体的“器官”(大脑、眼睛、手、记忆系统),那么 Prompt 就是向这些器官下达指令的“灵魂”和“总指挥”。它是一个蓝图,用来定义和编排这五大能力该如何协同工作。
它们的关系如下:
| 🎯 目标导向 | |
| 🧠 规划 | |
| 🎬 行动 | |
| 📚 记忆 | |
| 👀 感知 |
总而言之,我们正是通过编写高水平的 Prompt,才能将大语言模型(LLM)强大的底层能力,组织和激发出来,形成一个真正好用的 Agent。
你可能会问,这和我们微调模型时用的
system_prompt有什么关系?你的理解完全正确!
system_prompt正是承载“目标”的容器。但对于 Agent 来说,这个容器里装的东西更丰富:
简单聊天机器人 system_prompt= 目标 + 角色Agent system_prompt= 目标 + 角色 + 详细的规划 + 行动/工具说明书所以,你为 Agent 设计的
system_prompt,本质上就是一个更高级、更详尽的行动纲领。
用户发送的 Prompt 归属于哪里?
那么,用户在对话中发送的 prompt,在 Agent 的五大核心能力中又扮演什么角色呢?
它直接归属于 👀 感知 (Perception) 环节。
用户发送的 prompt 是 Agent 从环境中接收到的初始刺激或具体任务指令。它的整个处理流程是这样的:
外部环境触发:用户输入并发送 prompt。 Agent 进行感知:Agent 的“感知”模块捕获到这个外部信息。 信息传递至规划:这个被感知到的用户 prompt,会作为 LLM 进行“规划”时的重要输入,指导它如何结合自身的“目标”和“记忆”来制定下一步的行动方案。
区分总结:
| 系统提示 (System Prompt) | |||
| 用户提示 (User Prompt) |
可以想象成一位前台接待员(Agent):
系统提示 是她的岗位职责手册(设定了她的使命、工作流程和工具使用规范)。 用户提示 则是访客(你)对她提出的具体请求(比如“我找张三”)。她通过耳朵(感知)接收到这个请求,然后参考手册(系统提示)来完成工作。
一张图看懂 Agent 如何工作
为了把所有概念串联起来,我们可以用一张图来总结 System Prompt、用户提示、模型返回 和 工具 这四个部分,是如何与五大核心组件协同工作的。
System Prompt: 为 Agent 定义了 🎯 目标,预设了 🧠 规划 的蓝图和 🎬 行动 的工具清单。 用户提示: 作为外部指令,被 Agent 的 👀 感知 模块捕获。 模型返回: 是 🧠 规划 模块的输出,它可能是一个最终答案,也可能是一个调用工具的决策。 工具: 是 🎬 行动 的具体体现,其返回结果会再次被 👀 感知 模块捕获,形成循环。
这张图清晰地描绘了 Agent 著名的 ReAct (Reason + Act) 循环:思考 -> 行动 -> 观察 -> 再思考...

Agent 的五大核心能力
这五大能力——目标导向、感知、规划、行动、记忆——是当前 AI Agent 领域普遍认可的核心框架。它并非某个单一的学术定义,而是对人工智能研究(尤其是经典的 BDI 模型)的现代化提炼和实践总结。
我们可以通过下面这张图直观地理解这五大能力是如何协同工作的:

从代码层面看五大能力
下面这张图表将五大核心能力与 LangChain 生态中的具体代码实现联系起来,帮助你更直观地理解如何在代码中构建一个 Agent:
接下来,我们将逐一解析这五大能力,并为你揭示实现它们需要哪些“技术工具箱”。

关于“技术工具箱”: 这里的“工具箱”是一个比喻。它并非特指某个软件,而是指为了实现某种能力,我们需要用到的一系列技术、库、框架或设计模式的组合。
1. 🎯 目标导向 (Goal-Oriented) - “我最终要做什么?”
是什么:这是 Agent 所有行动的出发点和最终目的,是驱动它工作的“初心”。 核心技能:需求分析 与 提示工程 (Prompt Engineering)。 新手理解:就像你对一位真人助手说:“帮我整理下笔记”。助手首先要动脑筋,把这个模糊指令变得清晰具体:“好的,您的意思是扫描 /notes目录下的所有.md文件,并按YYYY-MM-DD的格式创建文件夹来存放它们吗?” 这个将模糊想法精确化的过程,就是“目标导向”的核心。在 Agent 开发中,我们通过精良的提示词(Prompt)来赋予 Agent 这种能力。
2. 👀 感知 (Perception) - “我看到了什么?”
是什么:Agent 用来“观察”和“听取”外部世界信息的方式。 技术工具箱:主要是信息抓取相关的 Python 库。 新手理解:这是 Agent 的“眼睛”和“耳朵”。 看网页:使用 requests+BeautifulSoup读取静态网页,或者用Playwright/Selenium浏览需要复杂交互的动态网站。调接口:通过调用 API 从其他系统获取数据。 读文件:利用 pathlib库在你的电脑上查找和读取本地文件。
3. 🧠 规划 (Planning) - “我该怎么做?”
是什么:Agent 的“大脑”,根据目标和感知到的信息,制定一步一步的行动计划。 技术工具箱:指导 Agent 思考和决策的设计模式与框架。 新手理解: 基础模式 (ReAct): 这是所有现代 Agent 的思考基础,即 “思考 -> 行动 -> 观察” 的循环。就像人一样,想一下做什么,然后动手,再看看结果,接着想下一步。 进阶模式 (思维树/反思): Agent 也可以“深思熟虑”。它可以在一个决策点上,想象多种可能(思维树),或者在行动后“复盘”反思,看看计划是否需要调整(反思)。
4. 🎬 行动 (Action) - “开始动手!”
是什么:Agent 执行规划好的具体步骤,通常通过调用 工具 (Tools) 来与外部世界互动。 技术工具箱:函数调用 (Function Calling / Tool Use) 技术。 新手理解:如果说“规划”是写菜谱,“行动”就是真正拿起锅铲。这里的“锅铲”就是 Agent 的工具。一个工具本质上就是一个 Python 函数(例如 read_file)。我们需要教会 LLM 如何理解这个函数的功能、参数,并在需要时准确地调用它。同时,还要考虑工具调用失败了怎么办?是重试、换个工具,还是向你求助?
5. 📚 记忆 (Memory) - “我记住了什么?”
是什么:Agent 记录和回忆信息的能力,让它不是“金鱼脑”。 技术工具箱:对话历史管理与向量数据库 (Vector Database)。 新手理解: 存入知识: 使用向量数据库(入门可选 ChromaDB、FAISS)将大量信息(如你的个人笔记、公司文档)存起来。提取知识: 当 Agent 需要时,它能快速从这个数据库中检索出最相关的信息来辅助回答。比如,记住你“不吃香菜”的偏好,下次找菜谱时就会自动避开。 短期记忆 (聊天上下文): Agent 能记住你们当前的对话内容,这样你就可以说“上一步提到的那个链接怎么样?”它能理解你的意思。 长期记忆 (知识库/RAG): 这是让 Agent 变得更“博学”和“个性化”的关键。通过检索增强生成 (RAG) 技术,我们可以给 Agent 一个外部知识库。
实战演练:设计一个“菜谱 Agent”
理论有点枯燥?没关系!让我们通过一个具体的“菜谱 Agent”例子,看看这五大能力是如何无缝协作的。
你的提问: "如何做西红柿炒鸡蛋?"
1. 🎯 目标导向 (Goal-Oriented)
Agent 首先明确了你的意图,并设定了清晰的内部目标:“找到一份靠谱的西红柿炒鸡蛋菜谱,并以‘食材清单’和‘步骤说明’的格式清晰地呈现给你。”
2. 🎬 行动 (Action) - 定义工具箱
为了实现目标,Agent 需要一套称手的“工具”:
search_recipes(dish_name): 上网搜索菜谱链接。get_webpage_content(url): 获取网页的详细内容。extract_recipe_details(content): 从杂乱的网页内容中,提取出结构化的食材和步骤。
3. 🧠 规划 (Planning) - Agent 的思考过程 (ReAct 循环)
Agent 的“大脑”开始运转,通过“思考 -> 行动 -> 观察”的循环来解决问题。
第1轮:搜索
🤔 思考: "用户想找‘西红柿炒鸡蛋’的菜谱。我应该先上网搜一下。我需要用 search_recipes工具。"🎬 行动: 调用 search_recipes(dish_name="西红柿炒鸡蛋")。👀 观察: 工具返回了几个高分链接。 第2轮:抓取内容
🤔 思考: "第一个链接评分最高,看起来最靠谱。我需要用 get_webpage_content工具获取它的内容。"🎬 行动: 调用 get_webpage_content(url="...")。👀 观察: 工具返回了一大段带 HTML 代码的原始文本,很乱。 第3轮:提取信息
🤔 思考: "内容太乱了,我得把它整理成干净的格式。我需要用 extract_recipe_details工具。"🎬 行动: 调用 extract_recipe_details(content="...")。👀 观察: 工具成功返回了结构化的 JSON 数据,包含食材和步骤。 第4轮:完成任务
🤔 思考: "我已经拿到了所有需要的信息,任务完成了。现在可以整理并回复用户了。" 🎬 行动: 将 JSON 数据格式化为易读的文本,作为最终答案输出。
4. 👀 感知 (Perception) 与 📚 记忆 (Memory)
这两个能力贯穿始终:
感知:Agent 在每个“观察”阶段都在感知上一步行动的结果(搜索结果、网页内容、提取的数据)。 记忆: 短期记忆让它在整个流程中记得自己每一步做了什么。 长期记忆(如果配置了)则更强大:它可以记住你“喜欢少盐”的偏好,或者缓存这次找到的菜谱,下次再有人问同样问题时,就能秒回答案,又快又准。
LangChain 实现“菜谱 Agent”的学习要点
如果你想用 LangChain 生态从零到一构建这个 Agent,下面是你需要重点关注的核心模块:
1. Agent 的“大脑”:AgentExecutor 与 Chat Models
学什么: Chat Models: 选择一个大语言模型作为推理核心,如ChatOpenAI。create_openai_tools_agent: 这是组装 Agent 的现代化“工厂”,它将 LLM、Tools 和 Prompt 粘合在一起。AgentExecutor: 这是 Agent 的“执行器”,负责驱动 ReAct 循环,让 Agent 真正“活”起来。
2. Agent 的“行动”能力:自定义工具 (Tools)
学什么: @tool装饰器: 将任何 Python 函数变成 Agent 可用工具的最简单方法。现成工具: 学习使用 LangChain 提供的 DuckDuckGoSearchRun(搜索)、WebBaseLoader(网页加载)等工具。提取链 (Extraction Chains): 这是实现 extract_recipe_details的关键。学习create_extraction_chain,它可以让 LLM 自动从文本中提取信息并填充到你定义的 Pydantic 模型中。
3. Agent 的“规划”蓝图:提示工程 (Prompt Engineering)
学什么: ChatPromptTemplate: 构建 Agent 核心提示的“模板”。MessagesPlaceholder: 这是模板中的关键“占位符”,用于动态插入用户输入 (input) 和 Agent 的思考轨迹 (agent_scratchpad),是实现多步推理的基石。
4. Agent 的“记忆”系统:Memory 与 Retriever
学什么: 短时记忆: 学习 ConversationBufferMemory,让 Agent 能够联系上下文进行对话。长时记忆 (RAG): 学习完整的 RAG 流程,包括用 FAISS或Chroma创建向量存储,用OpenAIEmbeddings生成词向量,并最终用create_retriever_tool将你的知识库也包装成一个工具,让 Agent 可以在需要时主动查询。
学习路径建议:
从工具开始: 先学会用 @tool把简单的 Python 函数变成工具。创建简单 Agent: 用 AgentExecutor把工具和简单的 Prompt 组合起来,让它跑起来。强化工具: 学习 Document Loaders 和 Extraction Chains,让 Agent 能与外部世界进行更复杂的交互。 添加记忆: 最后,学习加入对话记忆和 RAG,让你的 Agent 变得更智能、更个性化。
完整实现代码与运行指南
本节提供了“菜谱 Agent”的完整 Python 实现代码,您可以将其保存为 recipe_agent.py 文件并运行。
1. 依赖文件 (requirements.txt)
在运行代码之前,请确保安装了所有必要的库。将以下内容保存到 requirements.txt 文件中:
langchainlangchain-openailangchain-google-genaigoogle-generativeaiduckduckgo-searchbeautifulsoup4faiss-cpupydanticlxml
2. Agent 核心代码 (recipe_agent.py)
代码,可以自己拷贝下来,保存到本地运行:
https://gist.github.com/xiaodizi/fb99dc602a26e7a4ddd9f3a407abd764
3. 运行指南
请按照以下步骤来运行您的“菜谱 Agent”:
第 1 步:设置环境变量
在您的终端中,确保已设置我们之前讨论过的全部 5 个环境变量。每次新开一个终端都需要重新设置,或者您可以将它们添加到您的 shell 配置文件中(如 .zshrc 或 .bash_profile)。
# 聊天模型配置export OPENAI_API_KEY='XXX'export OPENAI_API_BASE='XXX'export OPENAI_CHAT_MODEL_NAME='XXX'# 嵌入模型配置export GOOGLE_API_KEY='XXX'export GOOGLE_EMBEDDING_MODEL_NAME='XXX'
第 2 步:安装依赖库
在包含 requirements.txt 和 recipe_agent.py 的目录下,运行以下命令来安装所有必需的 Python 库:
pip install -r requirements.txt第 3 步:运行 Agent
安装完成后,运行 Python 脚本来启动 Agent:
python recipe_agent.py第 4 步:与 Agent 交互
脚本运行后,您会看到欢迎信息。您可以开始与它对话了:
提问菜谱:直接输入菜名,例如 如何做可乐鸡翅。记录偏好:使用 偏好:开头来告诉 Agent 您的口味,例如偏好: 我不吃香菜。退出程序:输入 退出。
代码中的 verbose=True 设置会打印出 Agent 详细的思考和行动过程,便于您观察和理解它的工作原理。
夜雨聆风