AI Agent 入门:从概念解析到代码实战,构建你的第一个智能助手
引言:从“被动问答”到“主动执行”
当我们与 ChatGPT 等大语言模型(LLM)对话时,它像一个知识渊博的学者,能够回答问题、撰写文章、翻译文本。然而,它的能力边界通常止于“对话”本身。它无法帮你预订机票,无法自动查询数据库,也无法在收到指令后自主规划并执行一个复杂的多步骤任务。
这正是 AI Agent 所要解决的问题。如果说传统 LLM 是“思考者”,那么 AI Agent 就是“行动者”。它不仅能“想”,还能“做”——通过感知环境、制定计划、调用工具,最终自主完成目标。
本文将带你从零理解 AI Agent 的核心原理,并通过一个具体的 Python 代码示例,展示如何构建一个能联网搜索并执行计算的简单智能体。
一、什么是 AI Agent?
AI Agent,即人工智能体,是一种能够自主感知环境、做出决策并采取行动以实现特定目标的软件程序。
与传统软件或单纯的 LLM 不同,AI Agent 具有以下三个关键特征:
- 自主性(Autonomy):无需人类持续干预,能独立运作。
- 目标驱动(Goal-Oriented):所有行为都围绕一个明确的目标展开。
- 工具使用(Tool Use):能够调用外部工具(如搜索引擎、计算器、API、数据库)来扩展自身能力。
1.1 Agent 的核心架构
一个典型的 AI Agent 通常包含以下组件:
- 大脑(Brain):通常是一个强大的 LLM(如 GPT-4、Claude 3),负责推理、规划、理解用户意图。
- 感知(Perception):接收来自外部的信息,如用户输入、环境状态、工具返回的结果。
- 行动(Action):执行具体的操作,可以是生成文本,也可以是调用一个函数。
- 记忆(Memory):短期记忆(上下文窗口)和长期记忆(外部存储),用于记录历史交互和经验。
- 工具集(Toolset):一组可供 Agent 调用的外部函数或 API。
1.2 工作流程:观察-思考-行动(ReAct 模式)
大多数现代 AI Agent 遵循 ReAct(Reasoning + Acting) 模式。其循环过程如下:
- 观察(Observation):接收用户的问题或环境反馈。
- 思考(Thought):LLM 分析当前状态,决定下一步该做什么,可能需要调用哪个工具。
- 行动(Action):执行一个具体的动作,例如调用一个搜索函数。
- 观察(Observation):获取工具返回的结果。
- 循环:重复思考-行动-观察,直到获得最终答案或任务完成。
二、AI Agent 的实际应用场景
AI Agent 的能力远不止于聊天。以下是几个典型应用:
- 自动化研发助手:根据需求自动搜索技术文档、编写代码、运行测试、甚至提交 PR。
- 智能客服:不仅能回答问题,还能查询订单、发起退款、安排物流。
- 数据分析师:连接数据库,用自然语言提问,Agent 自动编写 SQL 查询、生成图表。
- 个人日程管家:理解模糊指令(如“帮我安排下周与张三的会议”),自动查询日历、发送邮件、确认时间。
三、代码实战:构建一个“搜索+计算”的 AI Agent
理论讲完,我们动手实践。我们将使用 LangChain 框架和 OpenAI 的 API,构建一个能够自主决定是“搜索网络”还是“执行数学计算”的智能体。
3.1 环境准备
首先,安装必要的库:
pip install langchain langchain-openai langchain-community python-dotenv
创建一个 .env 文件并填入你的 OpenAI API Key:
OPENAI_API_KEY=sk-your-api-key-here
3.2 定义工具
Agent 需要工具。我们定义两个工具:一个用于联网搜索(使用 DuckDuckGo),一个用于数学计算。
import os
from dotenv import load_dotenv
from langchain.agents import Tool
from langchain.tools import DuckDuckGoSearchRun
from langchain.agents.tools import tool
# 加载环境变量
load_dotenv()
# 工具1:联网搜索
search = DuckDuckGoSearchRun()
# 工具2:数学计算器
@tool
def calculator(expression: str) -> str:
"""用于执行数学计算。输入应为合法的数学表达式,例如 '2 + 3 * 4' 或 'sqrt(16)'。"""
try:
# 注意:这里使用 eval 仅用于演示,生产环境请使用更安全的方法
result = eval(expression, {"__builtins__": {}}, {})
return f"计算结果: {result}"
except Exception as e:
return f"计算错误: {e}"
# 将工具包装成 Agent 可识别的格式
tools = [
Tool(
name="Search",
func=search.run,
description="当你需要查找最新信息时使用此工具。输入为搜索关键词。"
),
Tool(
name="Calculator",
func=calculator,
description="当你需要进行数学运算时使用此工具。输入为数学表达式。"
)
]
3.3 创建 Agent
接下来,我们使用 LangChain 的 create_react_agent 函数来构建一个 ReAct 模式的 Agent。我们需要一个 LLM 和一个提示模板。
from langchain_openai import ChatOpenAI
from langchain.agents import create_react_agent, AgentExecutor
from langchain.prompts import PromptTemplate
# 初始化 LLM
llm = ChatOpenAI(model="gpt-4o", temperature=0)
# 定义 ReAct 提示模板
# 这个模板告诉 Agent 如何思考、行动和观察
react_template = """尽可能帮助用户回答问题。你可以使用以下工具:
{tools}
使用以下格式:
问题:你需要回答的输入问题
思考:你应该做什么
行动:你要使用的工具名称,必须是 [{tool_names}] 中的一个
行动输入:工具的输入
观察:工具返回的结果
...(这个 思考/行动/行动输入/观察 可以重复 N 次)
思考:我现在有了最终答案
最终答案:对原始问题的最终回答
开始!
问题:{input}
思考:{agent_scratchpad}"""
# 创建提示
prompt = PromptTemplate.from_template(react_template)
# 创建 Agent
agent = create_react_agent(llm, tools, prompt)
# 创建 Agent 执行器
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True, # 打印思考过程
handle_parsing_errors=True
)
3.4 运行 Agent
现在,让我们测试两个问题,看看 Agent 如何自主选择工具。
测试1:需要搜索的问题
response = agent_executor.invoke({"input": "2024年巴黎奥运会的吉祥物是什么?"})
print("\n最终答案:", response["output"])
运行后,你会在控制台看到类似如下的日志(verbose=True 的效果):
> 进入新的 AgentExecutor 链...
思考:用户想知道2024年巴黎奥运会的吉祥物。我需要搜索一下。
行动:Search
行动输入:2024年巴黎奥运会 吉祥物
观察:2024年巴黎奥运会的吉祥物是“弗里吉”(Phryge),是一种红色的弗里吉亚帽...
思考:我找到了答案。
最终答案:2024年巴黎奥运会的吉祥物是“弗里吉”(Phryge)...
测试2:需要计算的问题
response = agent_executor.invoke({"input": "计算 12345 乘以 6789 等于多少?"})
print("\n最终答案:", response["output"])
日志输出:
> 进入新的 AgentExecutor 链...
思考:这是一个数学计算问题,我需要使用计算器工具。
行动:Calculator
行动输入:12345 * 6789
观察:计算结果: 83810205
思考:我得到了计算结果。
最终答案:12345 乘以 6789 等于 83,810,205。
测试3:需要多步推理的问题
response = agent_executor.invoke({"input": "特斯拉最新季度的营收是多少?然后帮我计算这个数字除以1000的结果。"})
print("\n最终答案:", response["output"])
Agent 会先调用 Search 搜索特斯拉最新财报中的营收数据,然后调用 Calculator 进行除法运算,完美展示了多工具协作的自主性。
四、AI Agent 的挑战与未来
尽管 AI Agent 潜力巨大,但目前仍面临一些挑战:
- 幻觉与错误累积:Agent 在多次调用工具和推理过程中,可能累积错误,导致最终结果偏离事实。
- 安全性:需要严格控制 Agent 可以调用的工具和权限,防止恶意操作。
- 成本与延迟:多次调用 LLM 和外部工具会带来较高的 API 成本和响应延迟。
未来的 Agent 将朝着多模态感知(理解图像、音频)、长期记忆(跨会话学习)、以及多 Agent 协作(多个 Agent 分工完成复杂任务)的方向发展。
结语
AI Agent 代表了 AI 从“对话工具”向“数字员工”的重要跃迁。它让大模型不再只是“纸上谈兵”,而是真正拥有了“动手能力”。通过本文的介绍和代码示例,相信你已经对 AI Agent 的核心概念和实现方式有了清晰的理解。
下一步,你可以尝试为 Agent 添加更多自定义工具(如读取本地文件、调用公司内部 API),或使用更高级的框架(如 AutoGPT、CrewAI)来构建更复杂的自主系统。AI 的未来,属于那些能够自主行动的智能体。
文档信息
- 本文作者:JiliangLee
- 本文链接:https://leejiliang.cn/2026/05/13/%E4%BB%80%E4%B9%88%E6%98%AF-AI-Agent/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)