文章首发于微信公众号《itThinking》, 原文链接:mp.weixin.qq.com/s/z_JRnP9q6…
当AutoGPT火出圈、各类AI工具开始从“被动响应”走向“主动做事”,AI Agent逐渐成为人工智能领域的热门关键词。对于新手而言,AI Agent看似高深莫测,实则是一套可落地、可理解的智能系统。本文用通俗的语言拆解AI Agent的核心知识,从概念定义到实践案例,带你快速入门这一未来趋势性技术。
一、什么是AI Agent?
当大模型横空出世,我们最开始使用大模型的方式是对话框问答,这个时候大模型空有一个大脑。后面补充补充工具,大模型有手有脚了,在引导下大模型就能干更多活了。AI Agent俗称智能体,AI Agent(人工智能代理)是一种能够感知环境、进行决策并执行动作的智能实体。它不同于我们常见的聊天机器人、简单AI工具,核心优势在于“自主能力”——无需人类一步步指令引导,只需给定明确目标,就能通过独立思考、调用工具,逐步完成任务。
举个直观的例子:如果让AI Agent完成“从新浪娱乐最新报道中提取所有电影标题并保存到本地文档”的任务,你无需告诉它“如何访问网站”“如何提取标题”“如何创建文档”,它会自主规划步骤:先检索新浪娱乐的最新内容,再识别其中的电影标题,最后生成文档并保存,全程无需人类干预。
1. AI Agent的核心构成
从技术层面,AI Agent的本质可以用一个公式概括:AI Agent = LLM + 记忆 + 任务规划 + 工具使用,四个核心模块缺一不可:
- LLM(大语言模型) :核心“大脑”,负责理解目标、分析问题、生成解决方案,是AI Agent进行思考和决策的基础;
- 记忆(Memory) :相当于AI Agent的“知识库”,可存储用户输入、上下文信息、外部网页内容、向量知识库等,支撑其后续决策的连贯性;
- 任务规划(Planning) :核心能力之一,负责将复杂目标拆解为可执行的子任务,规划执行路径,甚至在执行中反思优化;
- 工具使用(Tools) :AI Agent的“手脚”。这是Agent的工程落地关键, 借助外部工具扩展自身能力,将思考转化为实际动作。从只会动嘴到会干活,从通用智能转化成专业助手。常见工具有:
-
- 搜索工具:联网获取最新信息。比如天气,股票等。
- 计算器/代码解释器:进行数学运算或者运行代码处理数据。
- 软件操作:通过API发送邮件、操作电子表格、控制智能家居;
- 专业工具:调用专业软件生成图像生成、数据分析等。
2. AI Agent的主要类别
根据能力和应用场景,AI Agent主要分为三类,新手可通过案例快速区分:
- 反应型Agent:最简单的类型,仅根据当前环境状态做出直接反应,无记忆、无规划。例如:温度调节器,根据实时温度自动切换加热/制冷模式;
- 目标导向型Agent:具备明确目标,能规划序列动作达成目标。例如:特斯拉自动驾驶汽车,以“安全到达目的地”为目标,自主完成转向、刹车、避让等操作;
- 学习型Agent:能基于过往经验和数据持续优化自身表现。例如:可根据用户反馈调整回复风格、优化回答质量的聊天机器人。
目前我们热议的AI Agent,大多是基于大语言模型的“自主智能体”,本质是控制LLM解决复杂问题的代理系统,融合了记忆、规划和工具使用能力。
3. AI Agent的工作流程
无论应用场景如何,AI Agent的工作流程都遵循固定逻辑,新手可通过“处理客户退货请求”的案例理解:
- Prompt提示词:接收初始输入(如用户说“我想退货订单#12345的商品,因为商品有缺陷”),明确任务背景和需求;
- LLM分析:大语言模型解析请求,识别出“退货”核心需求、订单号和退货原因;
- 记忆调用:检索订单#12345的信息,核对商品是否符合退货条件、库存状态等;
- 任务规划:规划执行步骤——验证订单、生成退货标签、通知仓库、反馈客户;
- 行动执行:调用相关工具(如订单系统、仓库通知工具),一步步完成任务并向用户反馈结果。
1. Agent 工作核心原理
任务规划是 Agent 的灵魂。 如果只有推理(Reasoning),模型便无法付诸行动;如果只有行动(Acting),系统则会陷入盲目执行。Agent 的真正价值,在于将语言模型的深度思考与实际行动完美结合,以应对各类复杂的推理与决策挑战。ReAct 框架正是这一理念的典范,它让决策过程变得像人类思维一样有迹可循,从而更容易被我们理解、调试和控制。
它的典型流程如下图所示,可以用一个有趣的循环来描述:思考(Thought)→ 行动(Action)→ 观察(Observation),简称TAO循环,直到任务完成终止。
-
思考(Thought) :AI的大脑LLM接收到用户目标指令,通过推理拆解任务,明确目标与路径。 例:计算企业减速机总成本时,先拆分“采购费用”与“运行电费”子任务。
-
行动(Action) :调用工具执行具体操作(如计算、搜索API)。 技术细节:需预定义工具(如乘法计算工具)并通过Prompt模板引导LLM调用。
-
观察(Observation) :验证结果有效性,若失败则重新规划。 例:若搜索航班超预算,Agent自动调整“直飞→转机”策略。
二、AI Agent与传统软件:核心区别是什么?
很多新手会混淆AI Agent与传统软件,其实两者的核心差异在于“架构范式”——从“面向过程”到“面向目标”的转变,具体区别可总结为以下3点:
1. 核心要素不同
传统软件的核心是“软件工程师”,所有流程都由工程师提前编写好指令、逻辑和规则;而AI Agent的核心是“Agent本身”,以大模型为基础设施,自主规划和驱动任务完成。
2. 运行机制不同
传统软件是“被动执行”:人类需要按照预设的指令逻辑一步步操作,才能达成目标(比如用Excel统计数据,需要手动输入公式、筛选数据);
AI Agent是“主动完成”:人类只需给出明确目标,无需干预执行过程,Agent会自主规划、调用工具,最终达成目标(比如让AI Agent统计数据,只需说“统计近3个月的销售额并生成报表”,它会自主完成所有操作)。
3. 生产方式与适用范围不同
传统软件以“人类为中心,AI辅助”,生产过程需要工程师编写大量代码,且只能解决有限范围的固定任务;
AI Agent以“AI为中心,人类辅助”,无需大量手动编码,可灵活适配不同场景,解决“无限域”的复杂任务——这也是AI Agent最核心的优势。
三、AI Agent的应用场景与入门工具
AI Agent的应用范围极为广泛,已渗透到电商、教育、金融、制造等多个行业,同时市面上也有很多适合新手的开发工具,无需深厚编程基础也能上手。
1. 常见应用场景
AI Agent的核心价值是“降本增效、提升体验”,在电商、教育、金融、医疗、制造行业都有广阔的应用场景:
- 电商行业:语音助手集成到智能设备,用户通过语音指令完成购物、查询订单等操作;
- 教育行业:辅助远程教育平台,提供个性化学习资源、在线辅导,甚至自主规划学习路径;
- 金融行业:智能风控系统,自主完成风险评估、欺诈检测,提升风险管理效率;
- 医疗行业:辅助医生分析医疗影像,提高诊断的准确性和速度;
- 制造行业:控制工业机器人执行生产任务,提升生产自动化水平。
当前热门的实际应用:
AI编程助手:这是目前应用最成功的领域。比如Claude Code、OpenClaw等能够先读懂现有项目,在此基础上编写新功能、重构、修复Bug等,大幅提高开发效率;
内容创作:根据用户要求创作生成具有特色的创意图片、视频、虚拟数字人、3D模型等;比如Midjourney、还有各个大模型。
日常生活办公:总结报告、日报生成、邮件处理、日程安排等;比如元宝、千问打通阿里各个app后一句话点外卖打车;
AI科研助手:分析医疗报告、股票分析等;
2. 新手友好的实现工具
无需精通编程,借助以下工具,新手也能快速搭建或使用AI Agent,推荐5个常用工具(按“易上手程度”排序):
- 百度AgentBuilder:全流程可视化工具,无需编程,提供构建、训练、部署AI Agent的一站式支持,适合完全零基础的新手,访问地址:agents.baidu.com/center;
- 字节扣子平台:可快速搭建基于大模型的问答Bot等AI Agent,支持发布到社交平台、个人网站,操作简单,访问地址:www.coze.cn/home;
- AgentGPT:基于GPT-4的开源工具,在浏览器中即可配置和部署自主AI机器人,只需输入名称和目标,就能快速启动,访问地址:agentgpt.reworkd.ai/zh;
- LangChain:开源框架,其中的Agents模块专门用于开发AI Agent,提供记忆管理、工具集成等能力,适合有基础编程知识的新手,访问地址:github.com/langchain-a…
- CrewAI:基于LangChain的多Agent协作框架,可通过多个AI代理分工协作完成复杂任务,适合想尝试多Agent开发的新手,访问地址:github.com/joaomdmoura…
四、AI Agent实践入门:
4.1 自动查询天气并给出穿衣建议
# 伪代码示例:简易天气穿衣助手Agent
import requests
class WeatherAgent:
def __init__(self):
self.memory = [] # 简单的记忆存储
self.tools = {
'get_weather': self.get_weather_api,
'give_advice': self.generate_advice
}
# 工具1: 调用天气API
def get_weather_api(self, city):
"""调用外部天气API获取数据"""
# 这里模拟一个API调用
print(f"[Agent 行动] 正在查询{city}的天气...")
# 假设返回的数据
mock_data = {'city': city, 'temp': 22, 'condition': '晴朗', 'wind': '3级'}
return mock_data
# 工具2: 根据天气生成建议
def generate_advice(self, weather_data):
"""根据天气数据生成穿衣建议"""
temp = weather_data['temp']
condition = weather_data['condition']
advice = f"当前{weather_data['city']}气温{temp}℃,天气{condition}。"
if temp > 25:
advice += "建议穿短袖、短裤。"
elif temp > 15:
advice += "建议穿长袖T恤、薄外套。"
else:
advice += "建议穿毛衣、厚外套。"
return advice
# 规划与执行核心
def run(self, user_input):
"""解析用户目标并执行任务"""
print(f"[用户指令] {user_input}")
# 步骤1: 规划 - 从指令中提取关键信息(城市)
# 这里简化处理,实际会用更复杂的NLP模型
if "天气" in user_input and "北京" in user_input:
city = "北京"
else:
return "请告诉我您想查询哪个城市的天气?"
# 步骤2: 行动 - 调用工具获取天气
weather_info = self.tools['get_weather'](city)
self.memory.append({'step': 'fetched_weather', 'data': weather_info}) # 存入记忆
# 步骤3: 行动 - 调用工具生成建议
final_advice = self.tools['give_advice'](weather_info)
self.memory.append({'step': 'generated_advice', 'data': final_advice}) # 存入记忆
# 步骤4: 输出结果
return final_advice
# 使用Agent
agent = WeatherAgent()
result = agent.run("我想知道北京的天气,该怎么穿衣服?")
print(f"[Agent 回复] {result}")
# 输出示例:
# [用户指令] 我想知道北京的天气,该怎么穿衣服?
# [Agent 行动] 正在查询北京的天气...
# [Agent 回复] 当前北京气温22℃,天气晴朗。建议穿长袖T恤、薄外套。
4.2 自动生成书信并发送邮件
理论结合实践是最快的入门方式,下面以“用CrewAI开发AI Agent,实现自动写情书、保存文档并发送邮件”为例,拆解新手可落地的实践步骤(无需复杂编程,跟着操作即可)。
4.2.1. 实践核心框架:CrewAI
CrewAI是一款多角色AI Agent框架,核心优势是“分工协作”——可创建多个不同角色的Agent,各自负责不同任务,共同完成复杂目标。其核心组件包括:Agent(代理,有专属角色和技能)、Task(任务,分解后的具体目标)、Tools(工具,供Agent调用)、Process(流程,任务执行顺序)。
4.2.2. 前期环境配置
首先完成基础环境搭建,步骤简单,全程复制指令即可:
- 安装Python:确保电脑安装Python 3.10-3.11版本,终端输入python --version可查看版本,未安装可访问www.python.org/下载;
- 安装依赖包:终端输入以下指令,安装CrewAI、LangChain、OpenAI等必备工具包:
pip3 install crewai
pip3 install langchain
pip3 install openai
3. 配置OpenAI API-Key:需获取API密钥(可开通OpenAI Plus会员,或通过第三方平台购买),用于调用大模型。
4.2.3. 核心代码实现
本次实践需编写两个脚本文件:custom_tools.py(自定义工具,用于保存文档、发送邮件)和main.py(核心逻辑,定义Agent和任务)。
(1)custom_tools.py:自定义工具脚本
功能:定义两个核心工具——将AI生成的情书保存到本地文档、读取文档内容并发送邮件,代码如下(可直接复制,替换邮箱相关信息即可):
from langchain.tools import tool
import datetime
import os
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
class CustomTools():
@tool("将文本写入文档中")
def store_poesy_to_txt(content: str) -> str:
"""将编辑后的书信文本内容自动保存到txt文档中"""
try:
filename = f"./LLM/Agents/Email_Generate/poie.txt"
with open(filename, 'w') as file:
file.write(content)
return f"File written to {filename}."
except Exception:
return "Error with the input for the tool."
@tool("发送文本到邮件")
def send_message(self):
"""读取生成的本地书信文件txt文本,并以邮件的形式发送到指定邮箱"""
from_name = "小可爱" # 发件人昵称
from_addr = "934***65@qq.com" # 发件人邮箱
from_pwd = "ar***wzbtbfah" # 发件人邮箱授权码
to_addr = "lg1***9@163.com" # 收件人邮箱
my_title = "520小情书" # 邮件标题
filename = f"./LLM/Agents/Email_Generate/poie.txt"
with open(filename)as f:
my_msg = f.read()
msg = MIMEText(my_msg, 'plain', 'utf-8')
msg['From'] = formataddr([from_name, from_addr])
msg['Subject'] = my_title
smtp_srv = "smtp.qq.com" # QQ邮箱SMTP服务器地址
try:
srv = smtplib.SMTP_SSL(smtp_srv.encode(), 465)
srv.login(from_addr, from_pwd)
srv.sendmail(from_addr, [to_addr], msg.as_string())
print('发送成功')
return "信件已发送"
except Exception as e:
print('发送失败')
return f"发送失败:{str(e)}"
finally:
srv.quit()
(2)main.py:核心逻辑脚本
功能:定义3个不同角色的Agent(作家、内容编辑、寄信人),分配具体任务,启动任务执行,代码如下:
import os
from crewai import Agent, Task, Crew, Process
from tools.custom_tools import CustomTools
from dotenv import load_dotenv, find_dotenv
from langchain_community.chat_models import ChatOpenAI
# 环境变量配置
_ = load_dotenv(find_dotenv())
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
base_url = os.environ['OPENAI_BASE_URL']
# 定义大模型客户端
client = ChatOpenAI(model_name="gpt-3.5-turbo")
# 1. 定义作家Agent(负责撰写情书)
poet = Agent(
role='作家',
goal='根据用户需求,创作出情感丰富的情书(最长字数不超过300个词)。',
backstory="""你作为一名著名的作家,拥有千万级别的粉丝,最擅长写情感类型的文章,文笔细腻、深情,能精准传递爱意。""",
verbose=True,
allow_delegation=False,
llm=client
)
# 2. 定义内容编辑Agent(负责编辑情书并保存到本地)
letter_writer = Agent(
role='内容编辑',
goal='对作家撰写的情书进行精心编辑,整理成规范书信格式,并保存到本地磁盘。',
backstory="""作为一名经验丰富的编辑,你在编辑书信方面有多年的专业经验,擅长优化文笔、规范格式,必须使用提供的工具将书信保存到指定文件,保存成功后返回"书信已保存"。""",
verbose=True,
allow_delegation=False,
tools=[CustomTools.store_poesy_to_txt],
llm=client
)
# 3. 定义寄信人Agent(负责发送邮件)
sender = Agent(
role='寄信人',
goal='将编辑好的书信以邮件的形式发送给指定收件人,确保发送成功。',
backstory="""你是一名勤恳的信使,专注于将书信传递给收件人,必须使用提供的工具读取本地文件内容并发送邮件,发送成功后返回"信件已发送"。""",
verbose=True,
allow_delegation=True,
tools=[CustomTools.send_message],
llm=client
)
# 定义用户需求(可修改为自己的需求)
content = "帮我写一封520情书,深情、细腻,表达对心仪之人的喜爱和陪伴的渴望"
# 4. 为每个Agent分配任务
task1 = Task(
description=f"""用户需求:{content}。你最后给出的答案必须是一份富含爱意的情书,语言简洁、情感真挚。""",
agent=poet
)
task2 = Task(
description="""查找情书的语法错误,优化文笔和格式,将内容保存到本地磁盘。你最后的答案必须是“书信已保存”,确保文件成功存储。""",
agent=letter_writer
)
task3 = Task(
description="""读取本地磁盘保存的情书内容,整理并发送邮件给指定收件人。你最后的答案必须是“信件已发送”,确保邮件发送成功。""",
agent=sender
)
# 5. 启动任务执行(按顺序执行,上一个任务结果传递给下一个)
crew = Crew(
agents=[poet, letter_writer, sender],
tasks=[task1, task2, task3],
verbose=2,
process=Process.sequential
)
# 执行任务并输出结果
result = crew.kickoff()
print("任务执行结果:", result)
4.2.4. 执行与结果展示
将两个脚本文件放在对应目录下,终端进入文件所在路径,输入python main.py即可启动任务。执行成功后,会实现三个效果:
- 作家Agent生成一封情感真挚的情书;
- 内容编辑Agent优化情书并保存到本地txt文档;
- 寄信人Agent读取文档内容,发送邮件到指定收件人,收件人可收到标题为“520小情书”的邮件。
五、总结
AI Agent正逐步改变我们的工作和生活方式,从简单的任务自动化到复杂的决策辅助,其应用潜力无限。对于新手而言,抓住“目标导向”和“自主能力”这两个核心,多动手实践,就能快速入门,跟上人工智能的下一个风口。
参考:
Yao S , Zhao J , Yu D ,et al.ReAct: Synergizing Reasoning and Acting in Language Models[J].ArXiv, 2022, abs/2210.03629.DOI:10.48550/arXiv.2210.03629.