AI Agent从概念到第一个智能体
1. 引言
大语言模型(LLM)的爆发让「AI Agent(智能体)」成为技术圈最热门的话题之一。从 AutoGPT 到 LangChain、从 Copilot 到各类 Agent 框架,似乎一夜之间,所有 AI 产品都在向「智能体」演进。
但很多初学者面对铺天盖地的概念时,往往一头雾水:Agent 到底是什么?它和普通的 Chatbot 有什么区别?我该从哪里开始学?
这篇文章就是为你准备的 Agent 入门指南。我会从最基础的概念讲起,逐步拆解 Agent 的核心组成、工作原理,并带你动手实现一个最简单的智能体,帮你建立完整的知识框架。
2. 什么是 AI Agent
2.1 从 Chatbot 到 Agent
要理解 Agent,先要理解它和传统 Chatbot 的区别。
传统的 Chatbot 是一个「被动应答」的系统:用户提问,模型回答。它的能力边界就是单轮对话,即使有上下文记忆,本质上仍然是一个「问答工具」。
而 Agent 是一个「主动行动」的系统:它不仅能理解用户的意图,还能自主规划任务、调用工具、执行操作,并根据执行结果调整策略,直到完成目标。
用一个比喻来说:
- Chatbot 像一个「客服」,你问什么它答什么;
- Agent 像一个「助理」,你交代一个目标,它会自己想办法去完成。
2.2 Agent 的经典定义
学术界对 Agent 没有统一的定义,但业界普遍认可的一个描述是:
Agent 是一个以大语言模型为核心控制器,能够感知环境、自主决策、调用工具并执行行动,以实现特定目标的智能系统。
这个定义里有几个关键词:
- 感知(Perception):接收用户的指令或环境反馈;
- 决策(Decision):基于当前状态规划下一步行动;
- 行动(Action):调用工具、执行代码或返回结果;
- 目标(Goal):所有行动都围绕一个明确的目标展开。
3. Agent 的核心组成
一个完整的 Agent 系统通常由以下几个核心模块组成:
3.1 大语言模型(LLM)——大脑
LLM 是 Agent 的「大脑」,负责理解指令、推理规划、生成行动指令。它决定了 Agent 的「智力水平」。
3.2 规划(Planning)——思考
规划模块让 Agent 具备「拆解任务」的能力。面对一个复杂目标,Agent 会将其分解为多个子任务,并安排执行顺序。
常见的规划策略包括:
- 任务分解:把大目标拆成小步骤;
- 思维链(Chain-of-Thought):让模型逐步推理;
- 反思(Reflection):执行后自我检查并修正。
3.3 记忆(Memory)——经验
记忆让 Agent 能够「记住」上下文和历史经验,分为两类:
- 短期记忆:当前对话的上下文,通常通过上下文窗口实现;
- 长期记忆:跨会话的知识沉淀,通常借助向量数据库存储和检索。
3.4 工具(Tools)——手脚
工具是 Agent 与外部世界交互的「手脚」。通过调用工具,Agent 可以:
- 搜索网页获取实时信息;
- 执行代码完成计算;
- 调用 API 操作外部系统;
- 读写文件持久化数据。
3.5 行动(Action)——执行
行动模块负责把 LLM 的决策转化为实际的操作,并收集执行结果反馈给 LLM,形成「感知-决策-行动-反馈」的闭环。
4. Agent 的工作原理
理解了核心组成后,我们来看 Agent 是如何工作的。一个典型的 Agent 执行流程如下:
整个流程的核心是一个循环:规划 → 行动 → 观察 → 再规划。Agent 每执行一步,都会把结果反馈给 LLM,LLM 根据反馈决定下一步行动,直到任务完成或达到最大轮次限制。
5. 动手实现第一个 Agent
理论讲完了,我们来动手写一个最简单的 Agent。
5.1 准备工作
首先安装依赖:
pip install -U langchain
pip install -U langchain-openai
pip install -U langchain-anthropic
5.2 定义工具
我们定义一个模拟的天气查询工具和一个学生信息查询的工具:
# 工具1 :查天气
@tool
def get_waether(city: str)-> str:
"""获取指定城市的天气(模拟调用天气API)"""
weater_data={
"北京": "晴,25℃",
"云南":"小雨,16℃",
"四川":"晴,30℃",
}
return weater_data.get(city,f"暂无{city}的天气数据")
# 工具2 :查学生信息
@tool
def get_student_info(name :str) ->str:
"""根据学生姓名查询学生信息"""
student_data={
"张三": "学号:2021001,班级:计算机2101,专业:计算机科学与技术,GPA:3.8",
"李四": "学号:2021002,班级:软件工程2102,专业:软件工程,GPA:3.6",
"王五": "学号:2021003,班级:人工智能2103,专业:人工智能,GPA:3.9",
}
return student_data.get(name,f"未找到{name}的信息")
5.3 实现 Agent 循环
接下来实现 Agent 的核心循环:
local_model=ChatOpenAI(
base_url="http://*****/v1",
api_key="sk-*****",
model="qwen3.8-27b",
temperature=0,
)
# 将两个工具都注册给agent
agent=create_agent(
model=local_model,
tools=[get_waether,get_student_info],
system_prompt="你是一个乐于助人的助手"
)
result=agent.invoke(
{"messages" : [{
"role":"user",
"content":"云南的天气怎么样,在帮我查一下张三的信息"
}]}
)
print(result["messages"][-1].content)
5.4 运行效果
运行上面的代码,Agent 会经历这样的过程:
- LLM 收到问题,判断需要调用
get_weather,get_student_info工具; - Agent 执行工具,拿到「小雨,16℃,学号 2021001,班级 计算机2101,专业 计算机科学与技术,GPA 3.8。」;
- 把结果反馈给 LLM;
- LLM 组织语言,返回「云南天气:小雨,16℃。
张三信息:学号 2021001,班级 计算机2101,专业 计算机科学与技术,GPA 3.8。」。
这就是一个最简 Agent 的完整闭环。

更多推荐


所有评论(0)