从零搭建 AI Agent
引言:Agent 是什么,为什么值得从零开始
如果把大语言模型比作一个知识渊博但足不出户的学者,那么 AI Agent 就是给这位学者配上了手脚、眼睛和记事本,让他能够走出书房,查阅资料、调用工具、执行任务,最终独立完成一个复杂目标。
一个典型的 AI Agent 由四个核心组件构成:作为“大脑”的 LLM、负责制定和执行计划的“规划模块”、存储经验的“记忆系统”,以及连接外部世界的“工具集”。从零搭建 Agent 的真正价值,不在于代码本身,而在于亲手构建这个闭环系统,理解每个齿轮如何咬合——这是直接调用现成框架永远无法替代的认知收益。
本文的目标,是带你走完一条最小可行路径:用三天时间,从空白项目起步,搭建一个能调用 API、拥有记忆、具备基础任务规划能力的 Agent。
第一步:认知准备——拆解 Agent 的核心机制
动手之前,先理解 Agent 如何“思考”和“行动”。当前最主流的 Agent 工作范式是 ReAct(Reason + Act) ,它将推理与行动交替进行,形成一个闭环:
思考(Thought) → 行动(Action) → 观察(Observation) → 思考(Thought) → ……
举个例子。当用户问“今天北京的天气怎么样,适合户外活动吗?”,Agent 的内部流程大致如下:
-
Thought:用户想了解北京的天气,我需要调用天气查询工具,参数是城市名“北京”。
-
Action:调用
weather_api(city="Beijing")。 -
Observation:工具返回“Sunny, 25°C”。
-
Thought:天气晴朗,气温舒适,可以建议用户进行户外活动。
-
Final Answer:输出最终回复。
这个循环持续进行,直到 Agent 认为自己已经完成任务。理解了这个模式,后续代码就不再是零散的函数堆积,而是一个有机的思考-执行系统。
第二步:环境与框架选型——选择你的起点
搭建 Agent 有多种路径,取决于你的目标和资源。这里给出三种典型选择:
| 路径 | 适合场景 | 技术栈示例 |
|---|---|---|
| 纯手动 Python | 深度理解原理、轻量级项目 | requests + 基础 LLM API |
| 开源框架 | 快速原型、功能丰富的应用 | LangChain + LangGraph |
| 云平台一键部署 | 生产环境、免运维 | 阿里云 ECS + OpenClaw/Hermes |
对于初学者,从 Python 手写开始是最佳学习路径——它强迫你直面每个组件的实现细节,而非被框架的“魔法”遮蔽视野。
前置条件很简单:
-
Python 3.8+ 及虚拟环境
-
一个 LLM API 密钥(OpenAI、通义千问、MiniMax 等均可)
-
一个免费天气 API 密钥(如 OpenWeatherMap)
mkdir ai_agent_demo && cd ai_agent_demo
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install requests python-dotenv
第三步:构建 MVP——让 Agent 第一次“动起来”
3.1 定义核心类与“大脑”
创建一个 SimpleAgent 类,它包含记忆列表和一个“思考-行动”的骨架:
class SimpleAgent:
def __init__(self):
self.memory = [] # 短期记忆
def think(self, user_input):
# 基础规划:关键词匹配来决定行动
if "weather" in user_input.lower():
return "action: weather"
return "action: unknown"
def act(self, action, params=None):
if action == "weather":
# 暂用模拟数据
return {"temperature": "25°C", "condition": "Sunny"}
return None
这是 Agent 的最小雏形:它能解析用户意图(思考),并执行预设动作(行动)。
3.2 接入真实工具——给 Agent 装上“手和脚”
Agent 的魅力在于与外部世界交互。将模拟天气替换为真实 API 调用:
import requests
def call_weather_api(city, api_key):
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
resp = requests.get(url)
if resp.status_code == 200:
data = resp.json()
return f"{data['weather'][0]['main']}, {data['main']['temp']}°C"
return "无法获取天气数据"
关键设计原则:工具(Tool)本质上是 Agent 可以调用的任何函数,输入输出应尽量标准化,以便 Agent 在“思考”后能够准确选择并调用。
3.3 实现 ReAct 循环——让思考和行动交替进行
把上述模块组装成一个真正的 ReAct 循环:
def run_agent(user_input):
agent = SimpleAgent()
thought = agent.think(user_input)
if "weather" in thought:
observation = call_weather_api("Beijing", API_KEY)
# 将观察结果存入记忆
agent.memory.append(f"天气查询结果: {observation}")
return f"天气信息:{observation}"
return "我不理解这个问题"
至此,你的 Agent 已具备思考 → 行动 → 观察 → 记忆的完整链路。
第四步:增强记忆与上下文感知
4.1 短期记忆与长期记忆
Agent 默认是无状态的——每次对话都像初次见面。为了让 Agent 具备上下文感知能力,需要引入记忆模块。
短期记忆:当前会话中最近几轮对话,直接放在上下文窗口里传递。
长期记忆:将历史信息存入外部存储(如 JSON 文件或向量数据库),必要时检索并注入上下文。
import json
from datetime import datetime
class Memory:
def __init__(self, filepath="memory.json"):
self.filepath = filepath
self.storage = self._load()
def add(self, content):
entry = {"timestamp": datetime.now().isoformat(), "content": content}
self.storage.append(entry)
self._save()
def retrieve(self, query):
# 简单关键词匹配,实际项目可用向量检索
return [m for m in self.storage if query.lower() in m["content"].lower()]
长期记忆让 Agent 能够“记住”过去的关键信息,并在未来任务中复用。
4.2 上下文窗口管理
LLM 的上下文窗口有限,不能无限制地塞入所有历史。常用的策略包括:
-
滑动窗口:只保留最近 N 轮对话
-
摘要压缩:用 LLM 将长对话压缩成简短摘要
-
按需检索:只检索与当前问题最相关的记忆片段
第五步:规划与多步骤任务
简单任务可以用“关键词→动作”的规则处理,但复杂任务需要更智能的规划能力。
5.1 任务分解
当用户提出“帮我规划一次北京一日游”时,Agent 需要将其拆解为若干子任务:查询景点、查询天气、规划路线、生成建议等。这可以通过提示工程实现,让 LLM 输出结构化的步骤列表。
5.2 带反馈的规划(ReAct 的进阶)
Agent 不是一次生成完整计划就执行到底——它会每执行一步,观察结果,然后调整下一步计划。这种“边做边修正”的能力,使得 Agent 在面对不确定环境时更加鲁棒。
while not task_complete:
thought = agent.think(current_state)
action = agent.decide_action(thought)
observation = agent.execute(action)
current_state = update_state(current_state, observation)
第六步:测试、部署与持续优化
6.1 测试策略
Agent 的行为具有不确定性,测试不能只依赖固定用例。建议采用:
-
手动测试:验证核心用例是否能正常运行
-
自动化评测:用更强的模型(如 GPT-4)对 Agent 的输出进行评分(LLM-as-a-judge)
-
红队测试:尝试输入越狱提示或边界条件,检查 Agent 的安全性
6.2 部署与监控
生产环境部署可选择云服务器(如阿里云 ECS),借助 pm2 等工具实现进程守护和开机自启。上线后必须建立监控体系:
-
全链路追踪:记录每次工具调用的耗时、成本和结果
-
用户反馈收集:让用户对 Agent 的回答进行评价,形成优化闭环
6.3 持续迭代路径
从 MVP 到成熟系统,可以沿着这条路线演进:
-
从单个 Agent 起步
-
引入 LangChain 管理 prompt 和工具定义
-
用 LangGraph 实现多 Agent 协作
-
接入 MCP 协议实现标准化数据通信
-
构建模型适配层,支持动态切换不同 LLM
结语:从“搭建”到“思考”
从零搭建一个 AI Agent,本质上是在构建一个模拟人类解决问题方式的软件系统。它需要思考、需要工具、需要记忆、需要修正错误。三天时间走完这条路径,你得到的不仅是几百行可以运行的代码,更是对 Agent 核心机制的切身理解。
当你遇到 Agent 的“幻觉”问题时,你会知道应该优化检索而非更换模型;当响应变慢时,你会先检查工具调用的瓶颈而非盲目升级硬件。这种系统思维,才是从零搭建的真正收获。
AI Agent 的未来不在单一模型的能力高低,而在如何将模型、工具、记忆、规划这些组件编织成一个优雅的协作系统。而你现在,已经站在了这个系统的设计起点上。
更多推荐



所有评论(0)