《Agentic Design Patterns:构建智能系统的实战指南》- 第九章 学习与适应

书籍名称:Agentic Design Patterns: A Hands-On Guide to Building Intelligent Systems
本书作者:Antonio Gulli
链接地址:https://docs.google.com/document/d/1RZ5-2fykDQKOBx01pwfKkDe0GCs5ydca7xW9Q4wqS_M
内容摘要:本文是对《智能体设计模式》第九章的翻译。此章节介绍了支撑智能体学习与适应的原理和机制。
翻译:煤矿工厂

概述

智能体通过基于新的经验和数据改变其思维、行动或知识来进行学习和适应。这使得智能体能够从简单地遵循指令演变为随着时间的推移变得更加智能。

  • 强化学习: 智能体尝试各种行动,并因积极结果获得奖励,因消极结果受到惩罚,从而在变化的情境中学习最优行为。适用于控制机器人或玩游戏的智能体。
  • 监督学习: 智能体从标记好的示例中学习,将输入与期望的输出联系起来,从而能够执行决策和模式识别等任务。非常适合用于分类邮件或预测趋势的智能体。
  • 无监督学习: 智能体在未标记的数据中发现隐藏的联系和模式,有助于洞察、组织信息,并创建其环境的心理地图。适用于在没有特定指导的情况下探索数据的智能体。
  • 基于 LLM 智能体的少样本/零样本学习: 利用大语言模型 (LLM) 的智能体可以通过极少的示例或清晰的指令快速适应新任务,从而能够对新命令或情况做出快速响应。
  • 在线学习: 智能体利用新数据持续更新知识,这对于在动态环境中进行实时反应和持续适应至关重要。对于处理连续数据流的智能体来说非常关键。
  • 基于记忆的学习: 智能体回忆过去的经验,以在相似情境下调整当前行动,从而增强上下文感知和决策能力。对具备记忆调用能力的智能体有效。

智能体通过基于学习改变策略、理解或目标来进行适应。这对于在不可预测、变化或全新环境中的智能体至关重要。

近端策略优化 (PPO)

近端策略优化 (PPO)是一种强化学习算法,用于在具有连续动作范围的环境中训练智能体,例如控制机器人的关节或游戏中的角色。其主要目标是可靠且稳定地改进智能体的决策策略,即其“策略 (policy)”。

PPO 的核心思想是对智能体的策略进行微小而谨慎的更新。它避免了可能导致性能崩溃的剧烈变化。其工作原理如下:

  1. 收集数据: 智能体使用其当前策略与环境互动(例如,玩游戏),并收集一批经验(状态、动作、奖励)。
  2. 评估“代理”目标: PPO 计算一个潜在的策略更新会如何改变预期奖励。然而,它并不仅仅是最大化这个奖励,而是使用一个特殊的“裁剪”过的目标函数。
  3. “裁剪”机制: 这是 PPO 稳定性的关键。它在当前策略周围创建了一个“信任区域”或安全区。该算法被阻止进行与当前策略差异过大的更新。这种裁剪机制就像一个安全刹车,确保智能体不会迈出巨大而冒险的一步,从而使其学习成果付诸东流。

简而言之,PPO 在提升性能与保持接近已知有效策略之间取得了平衡,这可以防止训练过程中的灾难性失败,并带来更稳定的学习效果。

直接偏好优化 (DPO)

直接偏好优化 (DPO)是一种较新的方法,专门为使大语言模型 (LLM) 与人类偏好对齐而设计。它为这项任务提供了一种比使用 PPO 更简单、更直接的替代方案。

要理解 DPO,首先了解传统的基于 PPO 的对齐方法会有所帮助:

  • PPO 方法 (两步过程):
    1. 训练奖励模型: 首先,你收集人类反馈数据,人们对不同的 LLM 响应进行评分或比较(例如,“响应 A 优于响应 B”)。这些数据被用来训练一个独立的 AI 模型,称为奖励模型,其工作是预测人类会给任何新响应打出什么样的分数。
    2. 使用 PPO 进行微调: 接下来,使用 PPO 对 LLM 进行微调。LLM 的目标是生成能够从奖励模型中获得最高可能分数的响应。奖励模型在训练游戏中充当“裁判”的角色。

这个两步过程可能复杂且不稳定。例如,LLM 可能会找到一个漏洞,学会“欺骗”奖励模型,从而为糟糕的响应获得高分。

  • DPO 方法 (直接过程):
    1. DPO 完全跳过 了奖励模型。DPO 不将人类偏好转化为奖励分数然后针对该分数进行优化,而是直接使用偏好数据来更新 LLM 的策略。
  • 它的工作原理是利用一个数学关系,将偏好数据直接与最优策略联系起来。它实质上是在教导模型:“增加生成像偏好的响应的概率,并减少生成像不偏好的响应的概率。”

本质上,DPO 通过在人类偏好数据上直接优化语言模型来简化对齐过程。这避免了训练和使用独立奖励模型的复杂性和潜在的不稳定性,使对齐过程更高效、更稳健。

实际应用与用例

自适应智能体通过由经验数据驱动的迭代更新,在多变的环境中表现出增强的性能。

  • 个性化助理智能体通过对个体用户行为的纵向分析来完善交互协议,确保生成高度优化的响应。
  • 交易机器人智能体通过基于高分辨率、实时市场数据动态调整模型参数来优化决策算法,从而最大化财务回报并降低风险因素。
  • 应用智能体通过基于观察到的用户行为进行动态修改来优化用户界面和功能,从而提高用户参与度和系统直观性。
  • 机器人和自动驾驶汽车智能体通过整合传感器数据和历史行为分析来增强导航和响应能力,从而在多样的环境条件下实现安全高效的操作。
  • 欺诈检测智能体通过利用新识别的欺诈模式优化预测模型来改进异常检测,从而增强系统安全性并最小化财务损失。
  • 推荐智能体通过采用用户偏好学习算法来提高内容选择的精确度,提供高度个性化和与上下文相关的推荐。
  • 游戏 AI 智能体通过动态调整战略算法来增强玩家参与度,从而增加游戏的复杂性和挑战性。
  • 知识库学习智能体:智能体可以利用检索增强生成 (RAG) 来维护一个关于问题描述和已验证解决方案的动态知识库(参见第 14 章)。通过存储成功的策略和遇到的挑战,智能体可以在决策时参考这些数据,从而通过应用先前成功的模式或避免已知的陷阱来更有效地适应新情况。

案例研究:自我改进编码智能体 (SICA)

SICA介绍

由 Maxime Robeyns、Laurence Aitchison 和 Martin Szummer 开发的自我改进编码智能体 (SICA) 代表了基于智能体的学习领域的一项进步,展示了智能体修改自身源代码的能力。这与传统方法形成对比,在传统方法中,一个智能体可能会训练另一个智能体;而 SICA 同时扮演了修改者和被修改实体的角色,通过迭代方式优化其代码库,以提高在各种编码挑战中的性能。

SICA 的自我改进通过一个迭代循环进行(见图 1)。最初,SICA 会审查其过去版本的存档及其在基准测试中的表现。它会选择性能得分最高的版本,该得分是根据一个综合考虑成功率、时间和计算成本的加权公式计算得出的。这个被选中的版本随后进行下一轮的自我修改。它分析存档以识别潜在的改进点,然后直接修改其代码库。修改后的智能体随后会针对基准进行测试,结果记录在存档中。这个过程不断重复,促进了直接从过去表现中学习。这种自我改进机制使得 SICA 能够在不需要传统训练范式的情况下发展其能力。

《Agentic Design Patterns:构建智能系统的实战指南》- 第九章 学习与适应
图1:SICA 基于其过去版本进行自我改进、学习和适应的过程

SICA 经历了显著的自我改进,带来了代码编辑和导航方面的进步。最初,SICA 使用一种基本的文件覆盖方法进行代码更改。随后,它开发了一个能够进行更智能和上下文相关编辑的“智能编辑器” (Smart Editor)。这进一步演变为一个“差异增强型智能编辑器” (Diff-Enhanced Smart Editor),整合了用于定向修改和基于模式的编辑的差异比较功能,以及一个“快速覆盖工具” (Quick Overwrite Tool)以减少处理需求。

SICA 进一步实现了“最小化差异输出优化” (Minimal Diff Output Optimization)和“上下文敏感差异最小化” (Context-Sensitive Diff Minimization),使用抽象语法树 (AST) 解析来提高效率。此外,还增加了一个“智能编辑器输入规范器” (SmartEditor Input Normalizer)。在导航方面,SICA 独立创建了一个“AST 符号定位器 (AST Symbol Locator)”,利用代码的结构图 (AST) 来识别代码库中的定义。后来,开发了一个“混合符号定位器” (Hybrid Symbol Locator),将快速搜索与 AST 检查相结合。这通过“混合符号定位器中的优化 AST 解析” (Optimized AST Parsing in Hybrid Symbol Locator)得到进一步优化,以专注于相关代码段,提高搜索速度。(见图 2)

《Agentic Design Patterns:构建智能系统的实战指南》- 第九章 学习与适应
图2:跨迭代的性能表现。关键改进与其对应的工具或智能体修改一同被标注。(由 Maxime Robeyns、Martin Szummer、Laurence Aitchison 提供)

SICA 的架构包括一个用于基本文件操作、命令执行和算术计算的基础工具包。它包含了用于提交结果和调用专门子智能体(编码、问题解决和推理)的机制。这些子智能体分解复杂任务并管理 LLM 的上下文长度,尤其是在扩展的改进周期中。

一个异步的**监察者 (overseer)**,也是另一个 LLM,监控 SICA 的行为,识别诸如循环或停滞等潜在问题。它与 SICA 通信,并在必要时可以干预以停止执行。监察者会收到一份关于 SICA 行动的详细报告,包括调用图 (callgraph) 以及消息和工具操作的日志,以识别模式和低效之处。

SICA 的 LLM 在其上下文窗口(即其短期记忆)中以一种对其操作至关重要的结构化方式组织信息。这种结构包括一个定义智能体目标、工具和子智能体文档以及系统指令的系统提示 (System Prompt)。一个核心提示 (Core Prompt) 包含问题陈述或指令、打开文件的内容以及目录图。助手消息 (Assistant Messages) 记录了智能体逐步的推理过程、工具和子智能体的调用记录与结果,以及与监察者的通信。这种组织方式促进了高效的信息流动,增强了 LLM 的操作并减少了处理时间和成本。最初,文件更改被记录为差异,只显示修改部分,并定期进行合并。

SICA代码探究

深入研究 SICA 的实现,可以发现支撑其能力的几个关键设计选择。如前所述,该系统采用模块化架构,整合了多个子智能体,例如编码智能体、问题解决智能体和推理智能体。这些子智能体由主智能体调用,类似于工具调用,用于分解复杂任务并有效管理上下文长度,尤其是在那些扩展的元改进迭代中。

该项目正在积极开发中,旨在为那些对在工具使用和其他智能体任务上对 LLM 进行后训练感兴趣的人提供一个强大的框架。完整的代码可在 GitHub 仓库 (https://github.com/MaximeRobeyns/self_improving_coding_agent/) 中获取,以供进一步探索和贡献。

在安全性方面,该项目强烈强调 Docker 容器化,意味着智能体在专用的 Docker 容器内运行。这是一项至关重要的措施,因为它提供了与主机的隔离,鉴于智能体具有执行 shell 命令的能力,这可以减轻诸如无意中操纵文件系统等风险。

为确保透明度和控制,该系统通过一个交互式网页提供了强大的可观测性,该网页可视化了事件总线上的事件和智能体的调用图。这为智能体的行为提供了全面的洞察,允许用户检查单个事件、阅读监察者的消息,并折叠子智能体的追踪以获得更清晰的理解。

就其核心智能而言,该智能体框架支持与来自不同提供商的 LLM 集成,从而能够通过实验不同的模型来找到最适合特定任务的模型。最后,一个关键组件是异步监察者,一个与主智能体并发运行的 LLM。该监察者定期评估智能体的行为是否存在病态偏差或停滞,并可以通过发送通知甚至在必要时取消智能体的执行来进行干预。它接收一个系统状态的详细文本表示,包括调用图和 LLM 消息、工具调用及响应的事件流,这使其能够检测低效模式或重复工作。

在最初的 SICA 实现中,一个显著的挑战是促使基于 LLM 的智能体在每次元改进迭代中独立地提出新颖、创新、可行且有吸引力的修改。这一限制,特别是在培养 LLM 智能体的开放式学习和真实创造力方面,仍然是当前研究的一个关键调查领域。

AlphaEvolve 和 OpenEvolve

AlphaEvolve介绍

AlphaEvolve 是由 Google 开发的一款旨在发现和优化算法的 AI 智能体。它利用了 LLM(特别是 Gemini 模型的 Flash 和 Pro版本)、自动化评估系统以及一个演化算法框架的组合。该系统旨在推动理论数学和实际计算应用的发展。

AlphaEvolve 采用了一个 Gemini 模型集成。Flash 用于生成广泛的初始算法提案,而 Pro 则提供更深入的分析和改进。提出的算法随后会根据预定义标准进行自动评估和评分。这种评估提供了反馈,用于迭代改进解决方案,从而产生优化的新颖算法。

在实际计算中,AlphaEvolve 已被部署在 Google 的基础设施内。它在数据中心调度方面取得了改进,使全球计算资源使用量减少了 0.7%。它还通过为即将推出的张量处理单元 (TPU) 的 Verilog 代码提出优化建议,为硬件设计做出了贡献。此外,AlphaEvolve 加速了 AI 性能,包括将 Gemini 架构的一个核心内核速度提高了 23%,并将 FlashAttention 的底层 GPU 指令优化高达 32.5%。

在基础研究领域,AlphaEvolve 为发现新的矩阵乘法算法做出了贡献,包括一种用于 4×4 复数值矩阵的方法,该方法使用 48 次标量乘法,超越了以往已知的解决方案。在更广泛的数学研究中,它在 75% 的案例中重新发现了超过 50 个开放问题的现有最先进解决方案,并在 20% 的案例中改进了现有解决方案,其例子包括在吻切数问题上的进展。

OpenEvolve介绍

OpenEvolve是一个演化编码智能体,它利用LLM来迭代优化代码(见图 3)。它编排了一个由 LLM 驱动的代码生成、评估和选择的流程,以持续增强用于广泛任务的程序。OpenEvolve 的一个关键方面是其能够演化整个代码文件,而不仅限于单个函数。该智能体设计灵活,支持多种编程语言,并与任何 LLM 的  OpenAI兼容API  兼容。此外,它还集成了多目标优化,允许灵活的提示工程,并能够进行分布式评估,以高效处理复杂的编码挑战。

《Agentic Design Patterns:构建智能系统的实战指南》- 第九章 学习与适应
图 3:OpenEvolve 的内部架构由一个控制器管理。该控制器编排了几个关键组件:程序采样器、程序数据库、评估器池和 LLM 集成。其主要功能是促进它们的学习和适应过程以提高代码质量。

这段代码片段使用 OpenEvolve 库对一个程序执行演化优化。它通过初始程序、评估文件和配置文件的路径来初始化 OpenEvolve 系统。

evolve.run(iterations=1000) 这行代码启动演化过程,运行 1000 次迭代以找到程序的改进版本。最后,它打印出在演化过程中找到的最佳程序的指标,格式化为四位小数。

from openevolve import OpenEvolve

# 初始化系统
evolve = OpenEvolve(
    initial_program_path="path/to/initial_program.py",
    evaluation_file="path/to/evaluator.py",
    config_path="path/to/config.yaml"
)

# 运行演化
best_program = await evolve.run(iterations=1000)
print(f"Best program metrics:")
for name, value in best_program.metrics.items():
    print(f" {name}: {value:.4f}")

本章摘要

问题 (What): AI 智能体经常在动态和不可预测的环境中运行,在这些环境中,预编程的逻辑是不够的。当面临其初始设计中未预料到的新情况时,它们的性能可能会下降。没有从经验中学习的能力,智能体无法优化其策略或个性化其交互。这种僵化限制了它们的有效性,并阻止它们在复杂的现实世界场景中实现真正的自主性。

解决方案 (Why): 标准化的解决方案是集成学习和适应机制,将静态智能体转变为动态、演化的系统。这允许智能体根据新数据和交互自主地完善其知识和行为。智能体系统可以使用各种方法,从强化学习到更先进的技术,如自我修改,正如在自我改进编码智能体 (SICA) 中所见。像 Google 的 AlphaEvolve 这样的先进系统利用 LLM 和演化算法来发现全新的、更高效的复杂问题解决方案。通过持续学习,智能体可以掌握新任务,提升其性能,并适应不断变化的条件,而无需持续的手动重新编程。

经验法则 (Rule of thumb): 在构建必须在动态、不确定或不断变化的环境中运行的智能体时,请使用此模式。它对于需要个性化、持续性能改进以及自主处理新情况能力的应用至关重要。

《Agentic Design Patterns:构建智能系统的实战指南》- 第九章 学习与适应
图4:学习与适应模式

核心要点:

  • 学习与适应是关于智能体利用其经验来提升其工作表现并处理新情况。
  • “适应”是智能体因学习而产生的行为或知识上的可见变化。
  • 自我改进编码智能体 (SICA) 通过根据过去的性能修改其代码来进行自我改进。这催生了像智能编辑器 (Smart Editor) 和 AST 符号定位器 (AST Symbol Locator) 这样的工具。
  • 拥有专门的“子智能体”和一个“监察者”有助于这些自我改进系统管理大型任务并保持在正轨上。
  • LLM 的 “上下文窗口” 的设置方式(包括系统提示、核心提示和助手消息)对于智能体的工作效率至关重要。
  • 对于需要在不断变化、不确定或需要个性化接触的环境中运行的智能体来说,这种模式至关重要。
  • 构建会学习的智能体通常意味着将它们与机器学习工具连接起来,并管理数据的流动方式。
  • 一个配备了基本编码工具的智能体系统可以自主地编辑自己,从而提高其在基准测试任务上的性能。
  • AlphaEvolve 是 Google 的一款 AI 智能体,它利用 LLM 和一个演化框架来自主发现和优化算法,极大地推动了基础研究和实际计算应用的发展。

结论

本章探讨了学习与适应在人工智能中的关键作用。AI 智能体通过持续的数据采集和经验来提升其性能。自我改进编码智能体 (SICA) 通过代码修改自主提升其能力,例证了这一点。

我们回顾了智能体 AI 的基本组成部分,包括架构、应用、规划、多智能体协作、内存管理以及学习和适应。学习原则对于多智能体系统中的协调改进尤为重要。为实现这一点,调整数据必须准确反映完整的交互轨迹,捕捉每个参与智能体的个体输入和输出。

这些元素共同促成了重大的进步,例如 Google 的 AlphaEvolve。这个 AI 系统通过 LLM、自动化评估和一个演化方法来独立发现和完善算法,推动了科学研究和计算技术的进步。这样的模式可以组合起来构建复杂的 AI 系统。像 AlphaEvolve 这样的发展表明,由 AI 智能体进行自主的算法发现和优化是可以实现的。

参考文献

  1. Sutton, R. S., & Barto, A. G. (2018). Reinforcement Learning: An Introduction. MIT Press.
  2. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
  3. Mitchell, T. M. (1997). Machine Learning. McGraw-Hill.
  4. Proximal Policy Optimization Algorithms by John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, and Oleg Klimov. You can find it on arXiv: https://arxiv.org/abs/1707.06347
  5. Robeyns, M., Aitchison, L., & Szummer, M. (2025). A Self-Improving Coding Agent. arXiv:2504.15228v2. https://arxiv.org/pdf/2504.15228 https://github.com/MaximeRobeyns/self_improving_coding_agent
  6. AlphaEvolve blog, https://deepmind.google/discover/blog/alphaevolve-a-gemini-powered-coding-agent-for-designing-advanced-algorithms/
  7. OpenEvolve, https://github.com/codelion/openevolve

往期回顾

《Agentic Design Patterns:构建智能系统的实战指南》- 前言

《Agentic Design Patterns:构建智能系统的实战指南》- 第一章 提示链

《Agentic Design Patterns:构建智能系统的实战指南》- 第二章 路由

《Agentic Design Patterns:构建智能系统的实战指南》- 第三章 并行化

《Agentic Design Patterns:构建智能系统的实战指南》- 第四章 反思

《Agentic Design Patterns:构建智能系统的实战指南》- 第五章 工具使用

《Agentic Design Patterns:构建智能系统的实战指南》- 第六章 规划

《Agentic Design Patterns:构建智能系统的实战指南》- 第七章 多智能体协作

《Agentic Design Patterns:构建智能系统的实战指南》- 第八章 内存管理

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论