labs-OO-Agents
NVIDIA 开源 Pythonic AI Agent 框架,以面向对象方式构建可测试、可追踪的企业级 Agent 系统
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
NVIDIA 开源 Pythonic AI Agent 框架,以面向对象方式构建可测试、可追踪的企业级 Agent 系统
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
这是一幅暗色主题下的项目 Logo,展示了 NVIDIA OO Agents 的品牌标识与命名方式。
想象这样一个场景:你需要构建一个客服 Agent,它能够查询订单状态、判断退款资格、自动创建工单,还要在每次交互后更新记忆。
传统方案下,你需要分别维护一套提示词模板(system prompt)、一套工具函数定义(tool schema)、一套回调逻辑(callback)、一套工作流图(workflow graph),以及一套记忆存储(memory store)。这五套系统在代码层面各自独立、彼此割裂,调试时在多个文件之间来回跳转,排查一个 Bug 往往需要拼凑上下文。
NVIDIA NeMo 实验室的 NOOA(NVIDIA Object-Oriented Agents)框架提出了一个反直觉但极其优雅的答案:把整个 Agent 写成一段 Python 代码。
from nooa import Agent
class SupportAgent(Agent, llm=llm):
"""你是客服 Agent。"""
order_db: OrderDB # 字段 = 状态,类型注解 = 契约
def is_refund_eligible(self, order: Order) -> bool:
return order.delivered and order.days_since_delivery <= 30
async def triage(self, message: str, order: Order) -> Ticket:
"""根据消息内容创建工单。"""
...
这不只是语法糖——它是一套全新的 Agent 编程范式。
NVIDIA OO Agents 由 NVIDIA NeMo 实验室 开发并开源,首次发布于 2025 年上半年,并在 2026 年持续活跃迭代(当前 CHANGELOG 显示已有多次版本更新)。核心团队同时发表了同名论文(arXiv:2607.20709),系统阐述了设计理念。
NVIDIA NeMo 实验室此前在 LLM 微调(TinyMistral)和推理优化领域已有深厚积累(TensorRT-LLM),NOOA 将这些能力与新一代 Agent 架构结合,体现了 NVIDIA 在 AI 基础设施层面的端到端布局野心——不仅提供底层推理引擎,还要主导上层 Agent 开发的框架标准。
NOOA 在论文中自称实现了 AI Agent 领域的六个模型侧能力首创(six model-facing ideas),这是理解该框架技术价值的核心:
每个 Agent 方法都有明确的 Python 类型签名。Pydantic 会在运行时验证 LLM 的输出是否符合类型约束,将「LLM 随机乱说话」变成「结构化 API 调用」。
LLM 接收的是真实 Python 对象引用,而非序列化后的 JSON 字符串。Agent 可以直接操作对象、调用方法、修改状态,行为和人类开发者完全一致。
Agent 通过写 Python 代码来执行动作,而非调用预定义的 REST API 或函数。框架内置 Jupyter-style REPL,LLM 生成代码后在上下文中执行,结果即时可见。这类似于 CodeAct 理念,但与 NOOA 的 OO 模型深度绑定。
传统 Agent 循环(observe→think→act)是硬编码的。NOOA 通过 ProducersSkill 等机制,允许开发者自定义 Agent 的思考-行动循环,精细控制何时调用工具、何时结束、何时重试。
状态不是隐藏在 KV Store 中的字典,而是显式的 self.xxx 属性。开发者可以直接读写,self 对 LLM 和人类都完全可见。
NOOA 提供 ContextApi 和 EventsApi,LLM 在执行过程中可以主动查询上下文历史或触发/订阅事件,实现 Agent 内部的元编程能力。
NOOA 采用 monorepo + workspace 结构,核心包 nooa 和三个独立子包共存于同一仓库:
| 包名 | 功能 | 安装命令 |
|---|---|---|
nooa(核心) | Agent 基类、REPL、Context/Events API | uv add nooa |
nooa-cli | CLI 工具、trace-explorer、eval runner | uv add nooa-cli |
nooa-memory | MemoryManager 长期记忆子系统 | uv add nooa-memory |
nooa-bench | BenchAgent + Harbor 基准测试运行器 | uv add nooa-bench |
eval_pipeline | 评测流水线(源码安装) | uv add "eval_pipeline @ git+..." |
核心依赖:pydantic >= 2.5.0、litellm >= 1.84.0(含 CVE-2026-49468 修复)、httpx >= 0.27.0。
依赖 Python 版本锁定为 3.12-3.13,这是一个相对前沿的限制,意味着短期内不会支持 3.11 及以下版本。
根据论文和仓库信息,NOOA 在以下基准上验证了有效性:
examples 目录包含完整的 arc_agi_3 和 cybergym(网络安全靶场)示例,说明框架在安全和推理密集型任务上的应用方向。
使用 uv 安装(推荐,15秒完成):
uv init my-agent-project && cd my-agent-project && uv add nooa
或在现有项目中 uv add nooa。需要 Python 3.12+ 和至少一个 LLM 提供方(OpenAI / Anthropic / Ollama / vLLM)。
README 提供了一个完整的 FeedbackAgent 示例。核心感受:
trace-explorer 可以图形化查看 Agent 的执行轨迹,对调试复杂 Agent 很有帮助NOOA 的出现代表了 AI Agent 框架演进的一个重要方向:从「提示词工程」到「代码工程」。
过去一年,Agent 框架的主流范式是「描述式」——用 YAML/JSON 配置 prompt 和工具,框架负责编排。NOOA 走的是「命令式」路线——直接写 Python 代码,让 LLM 在代码中工作。
这条路线的优势在于:工程师已有的工具(IDE、调试器、测试框架、版本控制)可以无缝复用。Agent 的行为可以被 pytest 测试,可以用 git diff 审查,可以用 ruff 检查质量。这是其他框架做不到的。
NVIDIA 正在试图通过 NOOA 建立自己的 Agent 框架生态,绑定其 GPU 推理层(vLLM/TensorRT-LLM)使用,形成从芯片到框架的完整技术栈闭环。
| 项目 | 说明 |
|---|---|
| 安装方式 | uv add nooa 或 pip install nooa |
| Python 版本 | 3.12-3.13(强制要求) |
| LLM 接入 | OpenAI / Anthropic / Ollama / vLLM(通过 LiteLLM 统一接入) |
| 硬件 | CPU 最低运行,GPU 加速推荐(NVIDIA GPU + CUDA 环境) |
| 容器化 | 不支持一键 Docker 部署,需手动配置 Python 环境 |
| Web UI | 无内置,提供 CLI + trace-explorer |
| 内存占用 | 16GB+ RAM 建议 |
| 月度成本 | 本地运行免费 + LLM API 按量计费 |
安全警示:NOOA 允许 Agent 执行 LLM 生成的 Python 代码。README 明确指出:AST 检查和模块黑名单只是纵深防御,真正的安全边界是操作系统级沙箱(容器/VM/NVIDIA OpenShell)。请勿在生产环境直接裸跑 Agent。
NVIDIA OO Agents 用「把 Agent 写成 Python 类」的方式,重新定义了 AI Agent 的开发范式。它不是另一个提示词管理工具,而是一个真正让软件工程师用已有技能构建 AI Agent 的框架。
尽管当前处于 Alpha 阶段、缺乏容器化支持、高版本 Python 要求限制了它的适用范围,但其「代码即行动」「类型即契约」的理念,代表了 Agent 框架从玩具走向工程化的重要方向。
对于想构建可测试、可追踪、可复用的企业级 Agent 系统的开发者,NOOA 值得重点关注。