
ChatGPT 能和你对话,但如果你让它"帮我订一张明天去北京的机票",它只能告诉你步骤,无法真正操作。而 AI Agent 能自己调用工具、执行操作、完成任务。
Agent = 大模型(大脑)+ 工具(手脚)+ 记忆(经验)+ 规划(思维链)
如果说传统 AI 是"回答问题",Agent 就是"解决问题"——它会自主拆解任务、调用外部工具、根据反馈调整策略,直到目标达成。
模块 | 作用 | 技术实现 |
|---|---|---|
感知 | 接收用户指令和外部信息 | 多模态输入、环境感知 |
规划 | 拆解复杂任务,制定执行步骤 | ReAct、CoT(思维链) |
工具调用 | 操作外部系统获取能力 | 函数调用、API 集成 |
记忆 | 短期上下文 + 长期知识存储 | 向量数据库、RAG |
用 OpenAI 的 Function Calling 实现最简单的 Agent:
import openai
import json
import requests
# 1. 定义工具函数(让大模型能调用的能力)
def get_weather(city: str) -> str:
"""获取城市天气(示例:模拟调用天气API)"""
# 实际项目可接入真实天气API
weather_data = {
"北京": "晴朗,25°C",
"上海": "多云,28°C",
"广州": "雷阵雨,30°C"
}
return weather_data.get(city, "暂无该城市天气数据")
# 2. 工具定义(告诉大模型它能调用什么)
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称"}
},
"required": ["city"]
}
}
}]
# 3. Agent 核心循环:推理 → 调用 → 执行 → 回答
def agent(user_query):
messages = [{"role": "user", "content": user_query}]
# 第一步:大模型决定是否需要调用工具
response = openai.ChatCompletion.create(
model="gpt-4",
messages=messages,
tools=tools,
tool_choice="auto"
)
message = response.choices[0].message
# 如果需要调用工具
if message.tool_calls:
for tool_call in message.tool_calls:
# 解析参数
args = json.loads(tool_call.function.arguments)
city = args.get("city")
# 执行工具函数
weather = get_weather(city)
# 将工具结果返回给大模型
messages.append(message)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": weather
})
# 第二步:大模型根据工具结果生成最终回答
final_response = openai.ChatCompletion.create(
model="gpt-4",
messages=messages
)
return final_response.choices[0].message.content
return message.content
# 4. 测试
print(agent("北京今天天气怎么样?"))
# 输出:北京今天晴朗,25°C,适合外出活动。这段代码展示了 Agent 的核心模式:
ReAct(Reasoning + Acting)是当前最流行的 Agent 范式。它让模型交替输出"思考"和"行动":
# ReAct 模式示例(伪代码展示推理过程)
def react_agent(task):
thoughts = []
actions = []
while not task_complete:
# 思考当前状态
thought = llm.think(f"当前任务:{task},已有信息:{thoughts}")
thoughts.append(thought)
# 决定行动
action = llm.decide_action(thought)
actions.append(action)
# 执行行动(调用工具/搜索/计算等)
observation = execute(action)
thoughts.append(observation)
# 判断是否完成
if llm.check_complete(thoughts):
return llm.summarize(thoughts)ReAct 让 Agent 拥有了类似人类的"边做边想"能力,在复杂任务中表现远超纯粹的"一次推理"。
框架 | 特点 | 适用场景 |
|---|---|---|
LangChain | 组件丰富,生态完善 | 快速原型、复杂流程编排 |
AutoGen | 多 Agent 协作对话 | 多角色任务分解 |
CrewAI | 角色化团队协作 | 模拟不同专家协同工作 |
Dify | 低代码可视化 | 业务人员快速搭建 |
原生Function Calling | 轻量级,可控性强 | 生产环境、定制化需求 |
1. 数据分析 Agent
# 用户说:"分析上个月销售额下降的原因"
# Agent 自动执行:
# → 查询数据库获取数据
# → 使用 pandas 进行统计分析
# → 生成可视化图表
# → 给出可能原因和建议2. 智能客服 Agent
# 用户说:"我的订单还没发货"
# Agent 自动执行:
# → 查询订单状态(调用订单API)
# → 如果超时则发起催单(调用工单系统)
# → 返回处理结果给用户3. 代码开发 Agent
# 用户说:"写一个爬虫爬取豆瓣电影TOP250"
# Agent 自动执行:
# → 分析需求设计代码结构
# → 编写 Python 爬虫脚本
# → 测试运行并修复错误
# → 返回完整可运行的代码挑战 | 说明 | 解决方向 |
|---|---|---|
稳定性 | 多步推理容易出错,错误会累积 | 增加验证步骤、人机回环 |
安全性 | 工具调用可能产生风险操作 | 权限控制、操作审计、沙箱隔离 |
成本 | 多次 LLM 调用,Token 消耗大 | 缓存机制、小模型预处理 |
幻觉 | 大模型可能编造工具调用结果 | 严格校验、结果溯源 |
长期记忆 | 对话结束后遗忘历史 | 向量数据库持久化 |
推荐学习路径:
LangChain 快速入门示例:
from langchain.agents import Tool, AgentExecutor, create_react_agent
from langchain_openai import ChatOpenAI
from langchain.tools import DuckDuckGoSearchRun
# 定义工具列表
tools = [
Tool(name="Search", func=DuckDuckGoSearchRun().run, description="搜索信息"),
# 可以添加更多工具...
]
# 创建 Agent
llm = ChatOpenAI(model="gpt-4")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 执行任务
result = agent_executor.invoke({"input": "查找最新的AI Agent开源项目"})AI Agent 就是让大模型拥有了"手"和"眼睛"——它不再只是回答问题,而是能主动规划、调用工具、执行操作、迭代修正,真正成为数字世界中的自主执行者。
未来,Agent 将从"单任务工具调用"演进到"长期自主工作":像人类助理一样,理解你的习惯、主动提出建议、甚至独立完成跨多天的复杂项目。这不是科幻,而是正在发生的变化。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。