AI Agent:从“被动响应”走向“主动做事”

196 阅读16分钟

文章首发于微信公众号《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的工作流程都遵循固定逻辑,新手可通过“处理客户退货请求”的案例理解:

  1. Prompt提示词:接收初始输入(如用户说“我想退货订单#12345的商品,因为商品有缺陷”),明确任务背景和需求;
  2. LLM分析:大语言模型解析请求,识别出“退货”核心需求、订单号和退货原因;
  3. 记忆调用:检索订单#12345的信息,核对商品是否符合退货条件、库存状态等;
  4. 任务规划:规划执行步骤——验证订单、生成退货标签、通知仓库、反馈客户;
  5. 行动执行:调用相关工具(如订单系统、仓库通知工具),一步步完成任务并向用户反馈结果。

1. Agent 工作核心原理

任务规划是 Agent 的灵魂。 如果只有推理(Reasoning),模型便无法付诸行动;如果只有行动(Acting),系统则会陷入盲目执行。Agent 的真正价值,在于将语言模型的深度思考与实际行动完美结合,以应对各类复杂的推理与决策挑战。ReAct 框架正是这一理念的典范,它让决策过程变得像人类思维一样有迹可循,从而更容易被我们理解、调试和控制。

它的典型流程如下图所示,可以用一个有趣的循环来描述:思考(Thought)→ 行动(Action)→ 观察(Observation),简称TAO循环,直到任务完成终止。

  • 思考(Thought) :AI的大脑LLM接收到用户目标指令,通过推理拆解任务,明确目标与路径。 例:计算企业减速机总成本时,先拆分“采购费用”与“运行电费”子任务。

  • 行动(Action) :调用工具执行具体操作(如计算、搜索API)。 技术细节:需预定义工具(如乘法计算工具)并通过Prompt模板引导LLM调用。

  • 观察(Observation) :验证结果有效性,若失败则重新规划。 例:若搜索航班超预算,Agent自动调整“直飞→转机”策略。

image.png

二、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个常用工具(按“易上手程度”排序):

  1. 百度AgentBuilder:全流程可视化工具,无需编程,提供构建、训练、部署AI Agent的一站式支持,适合完全零基础的新手,访问地址:agents.baidu.com/center;
  2. 字节扣子平台:可快速搭建基于大模型的问答Bot等AI Agent,支持发布到社交平台、个人网站,操作简单,访问地址:www.coze.cn/home;
  3. AgentGPT:基于GPT-4的开源工具,在浏览器中即可配置和部署自主AI机器人,只需输入名称和目标,就能快速启动,访问地址:agentgpt.reworkd.ai/zh;
  4. LangChain:开源框架,其中的Agents模块专门用于开发AI Agent,提供记忆管理、工具集成等能力,适合有基础编程知识的新手,访问地址:github.com/langchain-a…
  5. 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. 前期环境配置

首先完成基础环境搭建,步骤简单,全程复制指令即可:

  1. 安装Python:确保电脑安装Python 3.10-3.11版本,终端输入python --version可查看版本,未安装可访问www.python.org/下载;
  2. 安装依赖包:终端输入以下指令,安装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即可启动任务。执行成功后,会实现三个效果:

  1. 作家Agent生成一封情感真挚的情书;
  2. 内容编辑Agent优化情书并保存到本地txt文档;
  3. 寄信人Agent读取文档内容,发送邮件到指定收件人,收件人可收到标题为“520小情书”的邮件。

五、总结

AI Agent正逐步改变我们的工作和生活方式,从简单的任务自动化到复杂的决策辅助,其应用潜力无限。对于新手而言,抓住“目标导向”和“自主能力”这两个核心,多动手实践,就能快速入门,跟上人工智能的下一个风口。

参考:

www.runoob.com/ai-agent/ai…

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.