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 执行流程如下:

是

否

是

否

接收用户目标

LLM 理解并规划

是否需要调用工具?

调用工具执行

获取执行结果

LLM 评估结果

目标是否完成?

返回最终结果

整个流程的核心是一个循环:规划 → 行动 → 观察 → 再规划。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 会经历这样的过程:

  1. LLM 收到问题,判断需要调用 get_weather,get_student_info 工具;
  2. Agent 执行工具,拿到「小雨,16℃,学号 2021001,班级 计算机2101,专业 计算机科学与技术,GPA 3.8。」;
  3. 把结果反馈给 LLM;
  4. LLM 组织语言,返回「云南天气:小雨,16℃。

张三信息:学号 2021001,班级 计算机2101,专业 计算机科学与技术,GPA 3.8。」。

这就是一个最简 Agent 的完整闭环。

在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐