大模型学习·第46天:Agent智能体核心概念与ReAct框架

一、什么是Agent智能体?

一句话:Agent 是一种能自主规划、决策、执行任务的组件,核心是让大模型根据任务需求,选择并调用工具,完成单靠模型自身无法解决的复杂问题。

没有Agent 有Agent
模型只能基于训练数据回答 模型像"指挥官",能思考步骤→选择工具→执行调用→根据结果调整策略

核心特点:目标驱动、工具调用能力、自主决策与迭代。

公式:Agent智能体 = 大语言模型(大脑)+ 工具集(手脚)+ 决策逻辑(思维)

二、工具调用(Function Calling)

工具调用是Agent的核心。通过 @tool 装饰器把普通函数变成工具,然后通过 create_agent 提供给模型。

python 复制代码
from langchain.agents import create_agent
from langchain_ollama import ChatOllama
from langchain_core.tools import tool

@tool(description="查询天气")
def get_weather() -> str:
    return "晴天"

agent = create_agent(
    model=ChatOllama(model="qwen3:4b"),
    tools=[get_weather],
    system_prompt="你是一个聊天助手,可以回答用户问题"
)

res = agent.invoke(
    {"messages": [{"role": "user", "content": "明天深圳的天气怎么样"}]}
)

注意 :qwen:1.8b 不支持工具调用,需要换 qwen3:4b 或更大的模型。

Agent 也是 Runnable 接口子类,支持 invoke(一次性)和 stream(流式)。

多个工具示例:提供股票价格和股票信息两个工具,模型会根据用户问题自主决定调用哪个。

三、ReAct框架

ReAct = Reasoning(推理)+ Acting(行动),是Agent的核心思考与行动框架。让Agent不再是"直接回答问题",而是通过"自然语言思考过程"指导工具调用,逐步解决复杂问题。

ReAct循环流程:

复制代码
思考(分析需求)→ 行动(调用工具)→ 观察(分析结果)→ 思考(是否继续)→ ...

代码中通过 system_prompt 要求模型遵循ReAct框架:

python 复制代码
system_prompt = """
你是严格遵循ReAct框架的智能体,必须按「思考→行动→观察→再思考」的流程解决问题,
且每轮仅能思考并调用1个工具,禁止单次调用多个工具。
"""

作用:适合多步推理、工具协作的场景,如智能客服、报告生成、任务规划等。

四、Middleware中间件

中间件用于对Agent每一步工作进行控制和自定义执行。

作用场景:日志记录、调试、转换提示词、工具选择、重试、安全防护等。

六种中间件钩子:

钩子 触发时机
@before_agent Agent执行前
@after_agent Agent执行后
@before_model 模型调用前
@after_model 模型调用后
@wrap_model_call 模型执行中
@wrap_tool_call 工具执行中
python 复制代码
@before_model
def log_before_model(state, runtime):
    print(f"[before_model]模型即将调用")

agent = create_agent(
    model=ChatOllama(model="qwen3:4b"),
    tools=[get_weather],
    middleware=[log_before_model, ...]
)

今日核心总结

  1. Agent = LLM + 工具集 + 决策逻辑,让模型从"只会说"升级为"会做事"
  2. 工具调用 :@tool 定义工具,create_agent 组合模型和工具
  3. ReAct框架:思考→行动→观察循环,是Agent的核心工作方式
  4. Middleware:六种钩子控制Agent每一步,适合日志、调试、安全防护
  5. 模型要求 :Agent需要模型支持 Function Calling,qwen:1.8b 不支持,需换 qwen3:4b
相关推荐
m4Rk_2 小时前
【论文阅读】Agent 记忆机制(83):Inside Out——用可演化 PersonaTree 构建 Agent 的核心长期记忆
论文阅读·人工智能·学习·开源·github
FungLeo2 小时前
成为全栈·React 管理后台篇·总复盘:从“接口能调通”到“后台值得使用”
前端·react.js·前端框架·项目复盘·成为全栈
鬓戈2 小时前
Rust 语言与 AI 应用生态调研及学习路径
人工智能·学习·rust
传奇开心果编程3 小时前
【SwiftUI娓娓道来】第3课:让界面活起来——交互与动画指南
学习·macos·ui·ios·swiftui·swift
xian_wwq3 小时前
【学习笔记】等保合规安全基线核查实战
笔记·学习
Csvn3 小时前
并发模式:让渲染学会排队、插队和让路
前端
可乐鸡翅yeah_3 小时前
新手梳理:M3U8 线上问题,哪些是前端锅,哪些是后端锅
前端·ios·音视频·实时音视频·m3u8·音视频在线播放
Flynt3 小时前
Linear 用 1000 个 PR 换掉 styled-components,我写了 200 个按钮,把这笔账复现了一遍
前端·css·preact
传奇开心果编程3 小时前
【Jetpack Compose进阶学与练】第14课:系列收尾复习总结;Compose项目常见坑点汇总;学习路线与后续学习方向
android·学习·ui·kotlin·android jetpack
yangmu32034 小时前
发动机是怎么把油变成动力的:四冲程内燃机原理拆解
学习