找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

AI Agent从原理到实战:手把手教你打造一个能自主干活的智能体 ...

2026-7-8 20:25| 发布者: admin| 查看: 9| 评论: 0

摘要: 先看一个场景,感受Agent的魅力假设你给AI布置一个任务:"帮我查一下本周AI领域最热门的三个开源项目,然后整理成一份Markdown格式的周报,发送到我的邮箱。"传统RAG能做到的:根据你的知识库回答一些历史问题。AI A ...
 

先看一个场景,感受Agent的魅力

假设你给AI布置一个任务:

"帮我查一下本周AI领域最热门的三个开源项目,然后整理成一份Markdown格式的周报,发送到我的邮箱。"

传统RAG能做到的:根据你的知识库回答一些历史问题。

AI Agent能做到的

  1. 自主搜索GitHub,找出本周热门AI项目

  2. 阅读每个项目的README,提取关键信息

  3. 按照模板格式整理成周报

  4. 调用邮件服务发送到你指定的邮箱

  5. 整个过程完成后,告诉你"任务已完成"

这就是Agent的威力——它不再是被动回答问题的对话工具,而是主动完成任务的数字助手。


第一章:Agent到底是什么?——用一个比喻讲清楚

在动手之前,我们先建立对Agent的直观认知。

1.1 Agent = 大脑 + 手脚

text
┌─────────────────────────────────────────────────┐
│                    AI Agent                      │
│                                                  │
│   ┌─────────────┐    ┌────────────────────────┐ │
│   │   大脑       │    │        手脚            │ │
│   │  (大模型)    │    │    (工具集)            │ │
│   │             │    │                        │ │
│   │  思考策略    │◄──►│  搜索引擎             │ │
│   │  分解任务    │    │  代码执行器           │ │
│   │  决策判断    │    │  API调用              │ │
│   │  反思复盘    │    │  数据库查询           │ │
│   └─────────────┘    │  文件读写             │ │
│                      └────────────────────────┘ │
└─────────────────────────────────────────────────┘

核心逻辑:大模型(大脑)决定"做什么",工具集(手脚)负责"怎么做"。

1.2 三种主流架构模式

目前Agent有三种主流实现范式,我帮你梳理好了:

模式核心思想优点适用场景
ReAct思考→行动→观察→循环简单透明,易于调试任务步骤可枚举的场景
Plan-and-Execute先列计划,再依次执行结构清晰,适合复杂任务多步骤、有依赖关系的任务
Multi-Agent多个Agent协作,各司其职专业化分工,能力强大规模、跨领域的复杂问题

新手建议:从ReAct开始,这是最经典也最易理解的模式。本文也重点围绕ReAct展开。


第二章:实战——从零搭建一个ReAct Agent

我们用LangChain实现一个最简单的Agent,让它具备搜索+计算两种能力。

2.1 准备工作

bash
pip install langchain langchain-openai langchain-community tavily-python

工具说明:Tavily是一个专为AI设计的搜索引擎API,比普通搜索更适合Agent场景。你也可以替换为百度搜索API或自定义工具。

2.2 定义工具(Agent的"手脚")

python
from langchain.tools import tool
from langchain_community.tools.tavily_search import TavilySearchResults
import math

# 内置工具:搜索
search_tool = TavilySearchResults(
    api_key="你的Tavily密钥",
    max_results=3,
    include_answer=True
)

# 自定义工具:计算器
@tool
def calculator(expression: str) -> str:
    """
    用于执行数学计算。输入一个数学表达式,返回计算结果。
    例如:输入 "2 + 3 * 4",返回 "14"
    """
    try:
        # 安全计算(仅允许数字和基本运算符)
        allowed = set("0123456789+-*/.() ")
        if not all(c in allowed for c in expression):
            return "错误:表达式包含非法字符"
        result = eval(expression)
        return f"计算结果:{result}"
    except Exception as e:
        return f"计算错误:{str(e)}"

# 工具列表
tools = [search_tool, calculator]

2.3 构建Agent(核心部分)

python
from langchain_openai import ChatOpenAI
from langchain.agents import create_react_agent, AgentExecutor
from langchain.prompts import PromptTemplate

# 初始化大模型
llm = ChatOpenAI(
    model="gpt-4o-mini",  # 推荐用GPT-4级模型,推理能力强
    temperature=0,
    api_key="你的OpenAI密钥"
)

# ReAct提示词模板
react_prompt = PromptTemplate.from_template("""
你是一个能调用工具的智能助手。你拥有以下工具:

{tools}

工具名称:{tool_names}

请使用以下格式回答:

Question: 用户的问题
Thought: 你需要思考下一步做什么
Action: 你要调用的工具名称,必须是 [{tool_names}] 中的一个
Action Input: 传给工具的输入参数
Observation: 工具返回的结果
...(Thought/Action/Action Input/Observation 可以重复多次)
Thought: 我现在知道最终答案了
Final Answer: 给用户的最终回答

开始!

Question: {input}
Thought: {agent_scratchpad}
""")

# 创建Agent
agent = create_react_agent(
    llm=llm,
    tools=tools,
    prompt=react_prompt
)

# Agent执行器(负责运行循环)
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    verbose=True,  # 打印思考过程,方便调试
    max_iterations=5,  # 防止死循环
    handle_parsing_errors=True
)

2.4 测试运行

python
# 测试问题
result = agent_executor.invoke({
    "input": "2024年诺贝尔物理学奖得主是谁?他/她的年龄是多少?"
})

print("\n=== 最终答案 ===")
print(result["output"])

运行效果(Verbose模式输出)

text
> Entering new AgentExecutor chain...

Thought: 我需要搜索2024年诺贝尔物理学奖得主的信息
Action: tavily_search_results_json
Action Input: "2024年诺贝尔物理学奖得主"

Observation: [{'title': '2024年诺贝尔物理学奖...', 'content': 'John J. Hopfield 和 Geoffrey E. Hinton...'}]

Thought: 现在我知道得主是John J. Hopfield和Geoffrey E. Hinton,我需要查他们的年龄。
Action: tavily_search_results_json
Action Input: "John J. Hopfield 出生日期"

Observation: John J. Hopfield 出生于1933年7月15日...

Thought: 我现在可以计算年龄了。
Action: calculator
Action Input: "2024 - 1933"

Observation: 计算结果:91

Thought: 我现在知道最终答案了。
Final Answer: 2024年诺贝尔物理学奖得主是John J. Hopfield(91岁)和Geoffrey E. Hinton(76岁)。

这就是一个完整的ReAct Agent工作流程。它自己决定该搜索什么、什么时候需要计算,最终给出综合答案。



路过

雷人

握手

鲜花

鸡蛋

相关分类

QQ|Archiver|手机版|小黑屋|超联论坛

GMT+8, 2026-7-17 23:14 , Processed in 0.056336 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.