NVIDIA开源NOOA,给AI代理引入面向对象编程
NVIDIA 正在把面向对象编程带给 AI 智能体!(收藏这条推文)他们开源了一个名为 NOOA 的新框架,它的核心设计思想是:一个智能体可以被定义为单个 Python 类,而非分散在提示词文件、工具 schema、回调函数和工作流图中。
类的方法就是模型可以执行的动作,类的字段保存智能体状态,文档字符串就是提示词,返回值类型就是回答必须满足的契约。
这里最巧妙的设计是空方法的含义。如果方法体只有三个省略号,就会由 LLM 在运行时填充内容。如果里面写了真实代码,就直接作为普通 Python 代码运行,不涉及模型。
举个例子:
@𝘀𝘁𝗿𝗮𝘁𝗲𝗴𝘆(𝗖𝗼𝗱𝗲𝗔𝗰𝘁𝗦𝘁𝗿𝗮𝘁𝗲𝗴𝘆())
𝗮𝘀𝘆𝗻𝗰 𝗱𝗲𝗳 𝘁𝗿𝗶𝗮𝗴𝗲(𝘀𝗲𝗹𝗳, 𝗺𝘀𝗴: 𝘀𝘁𝗿, 𝗼𝗿𝗱𝗲𝗿: 𝗢𝗿𝗱𝗲𝗿) -> 𝗧𝗶𝗰𝗸𝗲𝘁:
"""𝗧𝗿𝗶𝗮𝗴𝗲 𝗰𝘂𝘀𝘁𝗼𝗺𝗲𝗿 𝗺𝗲𝘀𝘀𝗮𝗴𝗲 𝗻 𝗰𝗿𝗲𝗮𝘁𝗲 𝘀𝘂𝗽𝗽𝗼𝗿𝘁 𝘁𝗶𝗰𝗸𝗲𝘁."""
...
因此,整个类就能清晰展示哪些地方允许模型做判断,哪些地方的行为是固定的,这个边界就清晰到方法这一层。
第二个设计点我觉得更有意思,它解决的是数据输入的问题。假设调用一个方法时传入了包含100条记录的列表,模型永远不会直接看到整个列表,只会看到变量名、类型、长度,以及列表两端的少量条目。
真实的列表会一直保存在模型写代码时运行的会话中,因此模型可以遍历全部100条记录,但只有10条会出现在提示词里。
这个设计悄悄改变了智能体能处理的数据规模。限制现在变成了运行代码的机器,而不是上下文窗口,因此一个方法可以接收包含数百万行的表,提示词里只需要放一段简短的预览。
大多数现有智能体框架解决这个问题的方法是把数据转存到文件里,这种方式能用,但模型需要读取纯文本,每次都要在自己脑中重建数据结构。
这个设计带来的收益体现在成本上。在 SWE-bench Verified 上配合 GPT-5.5,NOOA 得分达到 82.2%,OpenCode 得分为 78.6%;NOOA 每个任务大约调用 28 次模型,消耗 110 万 token,而同类智能体需要 66 次调用和 220 万 token。
这些模型都没有针对这个接口做训练,但仍然在该框架的 4400 个测试中通过率达到 97.9%,主要原因就是它只是模型已经非常熟悉的 Python。
NOOA 的灵感来自 PyTorch,PyTorch 已经证明了强大的运行时依然可以给用户提供简单的 Python 编程模型。
论文:
代码仓库:
本文由 AI 翻译自英文原帖,技术名词保留英文。
查看 X 原帖