智能体应该是代码还是带有独立运行时的声明式实体?
摘要
作者认为,生产环境中的AI智能体应定义为具有独立运行时的声明式清单,而不是分散在应用代码中,以便实现适当的版本控制、可观测性和回滚。他们将自己的解决方案作为开源工具提供。
我构建智能体已经有一段时间了,并且一直遇到同样的问题。一个智能体最初只有几行代码——一个提示词、几个工具、一个循环。起初效果还不错。但那些投入生产的智能体会迅速扩张;它们需要更多的工具、预算、重试机制、人工参与以及升级规则。所有这些最终都混杂在应用代码、环境变量以及添加的各种日志中。然后,六个月后,有人会问:'为什么智能体在三月份做了X?'或者'我们能撤销对其工具访问权限的改动吗?'没有直接的答案,因为智能体从来不是一个内聚的实体。它只是分散在应用中的代码。似乎智能体正处于类似于数据库在ORM之前或基础设施在Terraform之前的境地。在智能体发展超出其内联代码形式之前,这种方法都还可以,但之后没有人对接下来的做法达成一致。我和联合创始人提出了一个具体的解决方案,所以我需要说明我们正在这个领域进行开发。这个想法是停止将智能体视为代码,而开始将其视为一个清单。你在一个文件中定义智能体,指定其工具、限制、策略以及需要人工输入的地方。你在一个指定的环境中运行它,每次运行都会提供实际发生情况的追踪记录。智能体变成了一个定义明确、可版本化且可逆的实体,而不是分散在应用中的逻辑。这与Terraform为基础设施带来的转变类似。它是开源且在线的;评论中有一个链接,任何想试用的人都可以点击。你在生产环境中遇到过这个问题吗?还是你的框架(如LangGraph)处理得足够好?你们目前如何处理版本控制、回滚以及弄清楚'它做了什么以及为什么'?将智能体视为一个定义好的工件而非应用代码的想法是否合理?还是说它对大多数情况来说过于复杂了?
相似文章
代码代理应被视为受限执行者而非架构权威吗?
作者认为代码代理应被视为受限执行者而非自主架构师,提出一种模型,其中人类定义不可协商的约束,代理接收范围狭窄的任务,并附带外部状态跟踪。
又构建了一个AI代理运行时。你会用它做什么?
作者介绍了Contenox,这是一个为简化LLM工作流而构建的个人AI代理运行时,并向社区征求意见,询问如何将其变现或分享。
AI代理重现了“rockstar developer”问题,只是速度更快
该文章将AI代理与“rockstar developers”进行对比,他们编写巧妙但难以维护的代码,指出AI代理缺乏对自己行为的记忆。它建议使用可见的约定,如AGENTS.md、ADRs和测试,以使AI代理生成的代码对团队来说易于理解。
我们把AI当作魔术而不是软件对待,这让AI智能体变得难以维护。
文章认为,当前的AI智能体框架将智能体视为黑箱,导致其难以维护,并提出了一种基于Git的原生架构(Lyzr GitAgent、OpenGAP),在该架构中,智能体逻辑以平面文件的形式进行版本控制,并通过拉取请求实现回滚和可审计性。
@djfarrelly: https://x.com/djfarrelly/status/2052779234234380479
本文主张,AI Agent 的开发应基于稳定的执行原语,而非会随新兴编排模式频繁更迭的僵化框架。文章强调,采用持久化步骤、持久状态、并行协调、事件驱动流程以及可观测性设计,可有效避免因最佳实践不断演进而付出的高昂重写代价。