从 Q-Learning 到 LLM:我把 AI 的“大脑”换成了 GPT,发生了什么?

前言

在前两篇文章中强化学习:3 分钟读懂强化学习的底层逻辑, 从 0 上手强化学习:用 Q-Learning 玩冰湖游戏,新手也能懂,我们一起从零手写了一个基于 Q-Learning 的强化学习智能体。它通过不断试错、更新 Q 表,最终学会了走出冰湖迷宫。但传统 Q-Learning 存在明显局限:智能体只能处理训练中见过的状态,面对未知场景无法泛化;同时 Q 表结构简单,难以应对复杂的现实业务场景。

如果把智能体原本 "查表式" 的大脑,替换为 ChatGPT、DeepSeek 这类大语言模型,会带来怎样的改变?这正是当下人工智能领域最热门的方向 ------LLM Agent(大模型智能体)。它的核心运行逻辑,与我们之前实现的 Q-Learning 一脉相承,依旧遵循观察 --- 思考 --- 行动的闭环。唯一的本质区别是:大模型智能体不再需要从零开始试错学习,其本身已具备强大的语言理解、逻辑推理与知识储备。

今天,我将以 Java 开发者熟悉的面向对象思维为切入点,带你理解大模型智能体的核心架构,并亲手将 "超级大脑" 融入代码,实现属于你的第一个 AI 助手。

一、 思维转换:Agent 到底是什么?

传统强化学习开发中,开发者需要自主设计算法、定义奖励函数、维护并更新策略表,开发成本高且泛化能力有限。而在大语言模型时代,构建一个可用的 LLM Agent,只需掌握三大核心组件。对于后端开发者而言,这一架构极易理解与落地:

  • **大脑(LLM Inference)**无需从零训练神经网络,直接接入 GPT-4、DeepSeek、文心一言等成熟大模型的 API。以自然语言提示词(Prompt)作为输入,大模型完成理解、推理并输出决策结果,承担智能体的 "思考中枢" 角色。

  • **双手(Function Calling / Tool Use)**这是工程落地的关键。大模型本身存在天然局限:无法直接查询数据库、获取实时数据、执行高精度数学计算。作为开发者,我们提前封装工具函数(Tools),类比 Java 中的 Service 层业务方法,并通过提示词告知大模型调用规则,让大模型在需要时主动调用外部能力。

  • **记忆(Context / RAG)**大模型本身无状态,不具备长期记忆能力。我们可以借鉴后端 HTTP Session 的管理思路,将用户历史对话、企业知识库(PDF、数据库、文档)检索出的相关信息作为上下文,持续传递给大模型,让智能体拥有连贯的 "记忆"。

二、 核心原理解析:ReAct 模式

目前业界最主流的 Agent 运行逻辑被称为 ReAct (Reason + Act,即思考+行动) 模式。它是一个经典的 While 循环:

  • 观察 (Observe):接收用户的指令。
  • 思考 (Reason):大模型分析指令,决定是直接回答,还是需要调用外部工具。
  • 行动 (Act):如果需要工具,大模型会生成调用参数,由我们(代码)去执行具体的函数逻辑。
  • 反馈 (Observation):将函数的执行结果返回给大模型,大模型基于结果再次思考,直到得出最终答案。

三、 手把手实操:用 Python 写一个最简 Agent 引擎

为了让你彻底吃透 ReAct 循环的底层逻辑,本节不依赖任何复杂框架,仅用最基础的 Python 代码,手写一个极简但完整的 Agent 核心引擎。

背景设定 :大模型在数学计算上容易出现幻觉(错误结果)。我们实现一个智能体:当用户询问数学问题时,不依赖大模型估算,而是精准调用本地乘法函数,保证结果可靠。

在 VS Code 中新建一个文件夹,并在里面新建一个文件名为 agent_demo.py,将以下代码复制进去:

复制代码
# agent_demo.py

# ======================
# 1. 定义工具集 (Agent的双手)
# 类比 Java 中的 Service 层方法
# ======================
def multiply_tool(a, b):
    """乘法计算工具"""
    print(f"    [系统日志] 执行乘法工具: {a} * {b}")
    return a * b

def get_weather_tool(city):
    """模拟天气查询工具"""
    print(f"    [系统日志] 请求天气接口: {city}")
    return f"{city} 今天晴转多云,气温25℃"

# ======================
# 2. 模拟大模型 (Agent的大脑)
# 真实场景替换为模型 API 调用
# ======================
def mock_llm_brain(user_query):
    """
    模拟大模型的意图识别与决策能力:
    解析用户问题 → 决定直接回答 或 调用工具
    """
    if "乘" in user_query or "*" in user_query:
        return {
            "action": "call_tool",
            "tool_name": "multiply",
            "args": [123, 456]
        }
    elif "天气" in user_query:
        return {
            "action": "call_tool",
            "tool_name": "get_weather",
            "args": ["北京"]
        }
    else:
        return {
            "action": "reply",
            "content": "您好,我是 AI 助手,支持乘法计算与天气查询。"
        }

# ======================
# 3. Agent 主引擎 (ReAct 循环)
# ======================
def run_agent(query):
    print(f"\n用户: {query}")
    print("Agent: 思考中...")
    
    # 限制最大步数,避免死循环
    max_steps = 3
    
    for step in range(max_steps):
        # 1. 思考:交给大模型决策
        response = mock_llm_brain(query)
        
        # 2. 决策:直接回答
        if response["action"] == "reply":
            print(f"Agent: {response['content']}")
            break
            
        # 3. 决策:调用工具
        elif response["action"] == "call_tool":
            tool_name = response["tool_name"]
            args = response["args"]
            
            # 执行对应工具
            tool_result = None
            if tool_name == "multiply":
                tool_result = multiply_tool(args[0], args[1])
            elif tool_name == "get_weather":
                tool_result = get_weather_tool(args[0])
            
            # 输出工具结果
            print(f"    [工具返回] {tool_result}")
            
            # 整合结果并回复
            print(f"Agent: 已完成任务,结果为:{tool_result}")
            break

# ======================
# 4. 测试运行
# ======================
if __name__ == "__main__":
    print("=== 测试 1:常规对话 ===")
    run_agent("你好,你能做什么?")

    print("\n=== 测试 2:乘法计算(触发工具)===")
    run_agent("帮我计算 123 乘 456")

代码与原理对照讲解

Tools 层 对应 "Agent 的双手",是纯业务函数,与后端接口逻辑一致,负责执行具体任务。LLM Brain对应 "Agent 的大脑",本例用简单规则模拟;真实开发中替换为 HTTP 请求调用大模型 API。ReAct 循环对应核心流程:

  • Observe:接收用户 query
  • Reason:mock_llm_brain 做决策
  • Act:调用 multiply /get_weather 工具
  • Observation:拿到结果并回复用户

运行与观察

运行代码后,控制台会依次输出:

  • 常规闲聊的直接回复
  • 计算任务时的工具调用日志与精准结果 56088

出现以上输出,说明你已经从底层理解了 LLM Agent 的工作机制。

结尾

从 Q-Learning 查表式的传统智能体,到基于大模型的 LLM Agent,本质都是感知 --- 决策 --- 执行 的强化学习思想。不同的是,大模型为智能体提供了开箱即用的认知能力,而我们后端开发者的价值,在于为它加上可靠的工具可控的记忆,让 AI 真正落地到业务中。

本文实现的极简引擎,是所有复杂 Agent 框架(如 LangChain、AutoGPT)的底层原型。后续我们将在此基础上,接入真实大模型 API、实现动态参数提取、接入数据库与 RAG 知识库,一步步构建可用于生产环境的企业级 AI 助手。

如果你是 Java 后端开发者,不必因为示例使用 Python 而困惑 ------ 下一篇,我会将这套 ReAct 思想完整迁移到 Java 中,用 SpringBoot 实现一个生产可用的 LLM Agent。

相关推荐
王夏奇1 小时前
python-pytest学习
python·学习·pytest
skywalk81631 小时前
在AIStudio星河社区配置OpenClaw小龙虾
人工智能·openclaw
来自于狂人1 小时前
[特殊字符] 2026年AI Agent新范式:用“特工团队“取代通用提示词,效率提升10倍
人工智能
进步一丢点everyday2 小时前
2026 AI 技术趋势:这 5 个方向最赚钱
人工智能
LaughingZhu2 小时前
Product Hunt 每日热榜 | 2026-03-12
大数据·数据库·人工智能·经验分享·搜索引擎
GEO_Huang2 小时前
扎根珠三角,数谷 AI 定制助千企数智化转型
人工智能·aigc·rpa·geo·ai+rpa
XiYang-DING2 小时前
【Java SE】Java代码块详解
java·开发语言·python
liliangcsdn2 小时前
如何基于LLM对文档进行任务划分
人工智能·全文检索