OpenAI发布Symphony:一个用于通过结构化、可扩展的实现运行来编排自主人工智能代理的开源代理框架。
安爸
发布于
OpenAI推出了开源框架 Symphony,通过结构化的“实施运行”来管理自主AI编码代理。该项目通过将问题跟踪器与基于LLM的代理连接起来,为自动化软件开发任务提供了一个系统。
系统架构:Elixir和Erlang/BEAM
Symphony使用Elixir和Erlang/BEAM运行时构建。选择此堆栈的重点在于容错性和并发性。由于自主代理通常执行长时间运行的任务,可能会失败或需要重试,BEAM的监督树允许Symphony同时管理数百个独立的实施运行。
系统使用PostgreSQL(通过Ecto)进行状态持久化,并设计为持久守护程序运行。它通过轮询问题跟踪器(默认为Linear)来确定哪些任务是代理可以处理的。
实施运行的生命周期
Symphony中的核心工作单元是实施运行。运行的生命周期遵循以下特定顺序:
- 轮询和触发: Symphony监控问题跟踪器中的特定状态(例如,“准备供代理处理”)。
- 沙盒隔离: 对于每个问题,框架创建一个确定性的、针对每个问题的工 作空间。这确保代理的动作被限制在特定的目录中,不会干扰其他并发运行。
- 代理执行: 初始化一个代理(通常使用OpenAI的模型)来执行问题中描述的任务。
- 工作证明: 在任务被认为完成之前,代理必须提供“工作证明”。这包括生成CI状态报告、通过单元测试、提供PR审查反馈以及创建更改的演示。
- 着陆: 如果工作证明得到验证,则代理通过提交或合并拉取请求(PR)到存储库来完成代码。
通过WORKFLOW.md进行配置
Symphony使用名为WORKFLOW.md的本地仓库配置文件。此文件作为开发团队和代理之间的技术合同。它包含以下内容:
- 代理的主要系统说明和提示。
- 实施环境中的运行时设置。
- 代理与代码库交互的特定规则。
通过将这些说明保存在仓库中,团队可以将代理策略与源代码一起进行版本控制,确保代理的行为与它所修改的代码库的特定版本保持一致。
合规工程要求
文档规定,Symphony在实践合规工程的环境中最为有效。这指的是一个针对机器交互优化的仓库结构。主要要求包括:
- 自验证测试: 可以在本地可靠运行且不依赖于外部依赖的测试。
- 机器可读文档: 文档和脚本,使代理能够自主发现如何构建、测试和部署项目。
- 模块化架构: 代码库中副作用最小化,允许代理自主验证其工作。
关键结论
- 通过Elixir进行容错编排: Symphony使用Elixir和Erlang/BEAM运行时来管理代理生命周期。这种架构选择提供了高并发性和容错性,能够在不发生系统级失败的情况下监督长时间运行且独立的“实施运行”。
- 管理实施运行: 该框架将AI编码从手动提示转变为自动化循环:它轮询问题跟踪器(如Linear),创建隔离的沙盒工作空间,执行代理,并在代码合并之前要求“工作证明”(CI通过和演示)。
- 版本控制代理合同: 通过
WORKFLOW.md规范,将代理提示和运行时配置存储在仓库中。这将以代码的形式处理AI的运行指令,确保代理行为以版本控制并与其修改的特定分支同步。 - 依赖合规工程: 要使系统有效,存储库必须采用合规工程。这包括结构化代码库以机器可读,包括自验证的测试套件和模块化架构,使代理能够自主验证其工作。
- 聚焦调度器范围: Symphony被定义为调度器、运行者和跟踪器读取器。它旨在在项目管理工具和代码执行之间架起桥梁,而不是作为一个通用多租户平台或广泛的流程引擎。
请查看此处存储库。此外,您可以关注我们的推特,别忘了加入我们的120k+ ML SubReddit订阅我们的时事通讯。等等!你在Telegram上吗?现在你可以在Telegram上加入我们了。
该文章《OpenAI发布Symphony:一个开源的基于代理的框架,通过结构化、可扩展的实施运行来编排自主AI代理》首先发布在MarkTechPost。
扫描二维码,在手机上阅读