我们花了许多时间给 LLM 配上了 harness,来帮助 LLM 成为 agent 更好的完成在复杂环境中的任务,那么在环境这一端呢?
无论是蒸馏,强化学习还是自进化,我们都需要 agent 来和环境交互,但我们并没有办法控制环境如何和 agent 交互。类比于 agent harness,文章提出了Envharness,一种全新的组件来控制环境和 agent 的交互方式,来帮助环境提供 agent 在各种训练场景下的更好的训练信号。
环境 Harness 和 Agent Harness
在一般的智能体(agent) 的场景下,agent 需要在一个环境(environment)中完成任务,这个环境可以是一个网页,可以是一个代码库,甚至可以是一个房间。
在现在的一般设定下,agent 的核心是一个不变化的大语言模型,我们通过在它周围添加脚手架(Harness),例如记忆(memory),技能库(skills)等来帮助他更好地完成任务。
那么作为框架的另一端,环境也可以有自己的 harness 来控制这个环境在 agent 与其交互时候的表现。
Envharness 和 agent Harness 都没有触及要与外交互最核心的部分(大语言模型和环境本身),但又都可以只通过和输入输出接口交互来改变核心内容对外输出的方式,来达到我们想要的目的,而对于环境来说,更好的环境就是可以给 agent 的训练提供更好的训练信号。
什么是 EnvHarness
在规定当中 Envharness 符合一个最简单的接口协议,来保证互相之间可以轻松的叠加,简单来说,我们需要一个环境加上一个 environment harness 之后对外的接口完全不发生任何变化。
而这篇文章提出了三种比较简单的 Envharness 组件
由于所有的操作都基于底层环境的标准接口,所以 Envharness 可以无损的安装在任何满足条件的环境上,而不需要考虑底层环境是网站或是 docker,是为了机器人训练或是 gui 训练。
如何设计 EnvHarness
回到 Envharness 的目的, 是为了让环境可以提供更好的训练信号。参考自进化 agent 阅读实际轨迹来优化 harness,文章提出了用一个 agent 来观测轨迹来给出 Envharness。
整个流程分为简单的四步组成的一个循环
经过这样的循环工程(loop engineering)我们就可以根据现在 agent 的能力给出对应的 Envharness
实验结果
文章研究了在强化学习和自进化 agent 的场景下,envharness 之后的环境均可以提供更好的训练信号帮助提升 agent 的性能,同时在例如具身智能,网页导航,代码生成等不同 benchmark 的效果也说明了这一方法的泛用性
其他实验讨论了例如和 agent 共同进化,定向适配长视野问题等方向。
核心局限与未来展望
文章给出了 Envharness 方向的许多现有缺陷以及未来方向例如
本文第一作者黄呈松(Chengsong Huang)是圣路易斯华盛顿大学的博士生,Google scholar citation 超过 1500 次,目前的研究兴趣主要集中在自进化 agent 和数据合成方向,机器之心曾报道过其工作 Lorahub,R-zero,均已超过 github 700 stars