循环工程的艺术
本文探讨了构建可靠AI代理的核心在于精心设计的循环架构,而不仅仅是模型本身。作者介绍了四种嵌套循环:代理循环、验证循环、事件驱动循环和爬山循环,并展示了如何使用LangChain原语实现每层循环。文章强调,通过将代理嵌入生态系统并持续改进,可以构建难以复制的竞争优势。
代理之所以有用,是因为它们能通过在实际世界中采取行动来帮助我们实现自动化。但要让代理稳定地完成有价值的任务,需要的不仅仅是一个好模型,还需要一个精心设计的、适合特定任务的“框架”。
核心的代理算法很简单:给LLM上下文,让它循环调用工具直到完成。这是最基本的循环。但远非唯一。Swyx最近写了一篇关于“循环工艺:堆叠循环的艺术”的好文章,其理念是通过堆叠和扩展循环来构建更有效的代理。
以下是我们对这一堆叠的理解,以及如何使用LangChain原语对每一层进行工具化。
第一层:代理循环
本质上,代理就是模型在循环中反复调用工具直到任务完成。这就是LangChain的create_agent提供的功能。选择任意模型,接入工具,你就拥有了一个可工作的代理循环。工具赋予代理在实际世界中采取行动的能力。
以我们内部的文档代理为例(本文后续以此为示例),在第一层循环中,它接收文档改进请求,模型规划并起草更改,使用工具克隆仓库、读取文件、编写文档、发起拉取请求等。
第二层:验证循环 代理循环能完成工作,但并非总能第一次就产生正确或一致的结果。当一致性至关重要时,通常需要在代理循环外包裹一个验证循环,检查输出并在不达标时将结果连同反馈返回给模型。
验证循环增加了一个“评分器”:它根据标准检查代理输出,如果失败则连同反馈返回结果。评分器可以是确定性的,也可以是代理性的(以LLM作为评判者是一个经典例子)。RubricMiddleware处理了这种模式,或者你也可以通过create_agent的after_agent钩子来实现。
在文档编写示例中,评分器在每次尝试后运行测试,检查所有链接是否可解析、所有CI检查是否通过、diff是否仅限于实际请求的范围。无需人工审核即可捕获这类错误。
一个权衡:添加验证会增加每次运行的延迟和成本。当质量比速度更重要时,这是值得的,大多数生产用例正是如此。
第三层:事件驱动循环 代理开发中最关键的部分之一是集成层:将代理连接到你的生态系统,使其能够在后台运行。
事件驱动循环将代理连接到你的生态系统。一个事件触发(新文档落盘、定时触发、webhook到达),代理即运行。代理不再是手动调用的工具,而是作为更大系统中持续运行的组件。
LangSmith Deployment支持触发基础设施,包括cron定时任务和webhook。OpenClaw中的“心跳”是cron的一个流行例子,它将代理变成了一个始终在线的主动助手。
我们的文档代理由Fleet(无代码代理构建器)驱动。Fleet的频道和日程处理事件驱动和cron式触发。我们使用一个频道,每当在#docs-plz Slack频道中发送消息时,就会触发文档代理。
第四层:爬山循环 前三层实现了自动化。第四层(也是最关键的一层)实现了改进的自动化!
每次代理运行都会产生一条轨迹:模型做了什么、调用了哪些工具、评分器反馈等。这些轨迹包含关于什么有效、什么无效的高价值信号。爬山循环在这些轨迹上运行一个分析代理,并根据发现重写框架,改进配置。这可能包括提示/工具调整或评分器调整。
在LangSmith中,你可以使用Engine(轨迹分析代理)来实现这第四层循环。
总结文档代理的类比,我们在文档代理轨迹上运行Engine以检测任何问题。当多个轨迹指向一个潜在问题时,会提出一个问题单,要求修改有问题的提示或工具。
关键点在于,返回箭头不仅仅循环回顶层——它深入到内部并直接更新代理循环。外循环的每次迭代都让内循环更加有效。
展望未来:提示和工具配置是最简单的改进对象,但并非唯一选择。对于运行开源模型的团队,爬山循环可以反馈到强化学习微调中,利用轨迹或评估结果作为训练信号来改进模型本身。辅助上下文(如记忆和检索技能)也可以同样方式改进。循环是模式;具体优化什么由你决定。
人类监督与专业判断 自动化并不意味着将人类排除在循环之外。在每一层,都有自然节点让人类监督增加价值。自动化评分器可以检查链接是否可解析;但需要人类才能注意到框架对受众而言是错误的。这种来自上下文、经验和品味的判断正是人类审核应有的位置。
某些专业判断应编码到提示/工具本身,但对于敏感操作(如金融交易、数据库操作),实时的审核是必不可少的。LangChain使得在每个循环中工具化这些接触点变得简单:在代理循环中,要求敏感操作前的人类输入;在验证循环中,人类可以充当敏感工作流的评分器;在应用循环中,输出返回给最终用户前可经人类批准;在爬山循环中,框架改进在部署前可经人类审核。LangChain的所有开源框架都将“人在环中”作为一等原语。
综合应用 下表总结了四个循环如何堆叠:
| 循环 | 作用 | 影响 | LangChain原语 | |------|------|------|----------------| | 1. 代理循环 | 模型反复调用工具直至任务完成 | 自动化工作 | create_agent, 任何LangChain支持的模型 | | 2. 验证循环 | 代理运行,输出按标准评分,失败时连同反馈重试 | 确保工作质量与正确性 | RubricMiddleware | | 3. 事件驱动循环 | 事件触发代理运行,更新实际系统 | 大规模的自动化工作 | LangSmith Deployment的cron触发/webhook,或Fleet频道 | | 4. 爬山循环 | 生产轨迹输入分析代理,改进框架配置 | 框架改进 | LangSmith Engine |
这就是“循环工程”或Swyx所说的“循环工艺”在实践中的样子。AI领导者如Steipete、Boris和Andrej都得出了相同的结论:代理的潜力在于你围绕它们构建的循环。
我们考虑第一层和第二层已有一段时间。但重点应转向第三层和第四层,通过将代理嵌入你的生态系统并持续根据你的标准改进,价值会复合增长。
Satya阐述了组织层面的意义:那些早期建立学习循环的公司,让人类判断和代币资本协同增长,将建立起难以复制的优势。
致谢:感谢Vivek、Mason、Harrison和Hunter的深思熟虑的审阅。
参考:deepagents quickstart, create_agent docs, rubric middleware, cron jobs/webhooks, LangSmith Engine, Fleet channels。