NVIDIA-labs 面向对象智能体(OO Agents)

用 Python 类的方式构建 AI 智能体:状态、能力、提示词和类型接口统一在一个对象中。

Star 数
★ 2.3k
最近更新
3 天前
License
NOASSERTION
主语言
Python

30 秒速览

运行形态
代码库 / SDK开发框架命令行工具
可在哪里用
通用 · 跨平台OpenAI API · Claude API
费用
软件免费,模型调用费用自付
上手难度
中 · 需要几步配置
开始前需要
Python 3.8+LiteLLMShell / 命令行网络访问本地文件系统
典型场景
在 Python 项目中快速原型化一个支持 Agent,该 Agent 需访问数据库并处理客户工单。
不适合
  • 不愿在沙箱/容器中运行 LLM 生成代码的团队
  • 非 Python 技术栈、希望零代码上手的用户

这个 Agent 能做什么,适合哪些场景?

NVIDIA-labs OO Agents (NOOA) 是一个模型无关的 Python 框架,旨在支持可靠的 AI 智能体开发。它将提示词、工具、回调和工作流整合为一个 Python 类,开发者通过类字段定义状态、方法定义能力、文档字符串定义提示词、类型注解定义接口。方法体为省略号(...)时由 LLM 驱动,方法名、参数和文档字符串即为提示词。NOOA 采用 Jupyter 风格的 REPL 执行模型生成的 Python 代码,并支持类型化 I/O、自动重试、实时对象引用、上下文和事件 API。该框架提供 CLI、内存子系统和基准测试包,并包含跟踪查看器,便于调试。它是研究软件,带有安全警告,建议在沙箱环境中运行。

NOOA 允许开发者定义继承自 Agent 的 Python 类,其中字段作为状态、方法作为能力、文档字符串作为提示词、类型注解作为合同。方法体为 '...' 的方法在运行时由 LLM 通过内部循环实现;普通方法体则作为确定性 Python 执行。模型通过 Jupyter 风格的 REPL 编写 Python 代码来执行操作,可访问 self、导入和辅助函数,从而减少单独工具模式的定义。框架提供类型化输入输出、自动重试、实时对象引用、模型可调用的上下文和事件 API,并默认进行跟踪(每次 LLM 调用、代码执行和方法调用均被记录)。安装后可使用 'nooa' CLI 启动跟踪查看器(端口 5001)和评估运行器。代码在本地 Python 环境中运行,可调用外部 API(如 OpenAI、Anthropic、Ollama、vLLM)进行推理。

  1. 在 Python 项目中快速原型化一个支持 Agent,该 Agent 需访问数据库并处理客户工单。
  2. 需要类型化输出(如确保模型返回 Ticket 对象)且希望自动重试的开发者。
  3. 希望用标准 Python 单元测试、跟踪和重构工作流来调试智能体的团队。
  4. 需要长期记忆(MemoryManager)的智能体,但希望与框架集成。
  5. 研究者在 SWE-bench Verified 和 Terminal-Bench 2.0 等基准上评估智能体能力。
  6. 希望在不编写单独工具模式的情况下,通过 Python 方法直接作为工具调用的开发者。

如何安装或部署这个 Agent?

使用 uv 或 pip 安装核心框架:uv add nooa 或 pip install nooa。可选子包包括 nooa-cli(CLI、跟踪查看器)、nooa-memory(长期记忆)和 nooa-bench(基准测试),可通过 uv add nooa[cli,memory] 等添加。若从源码安装,可执行 git clone https://github.com/NVIDIA-NeMo/labs-OO-Agents.git,然后 uv sync --group dev。需 Python 环境。

如何使用这个 Agent?

首先设置模型客户端:llm = get_llm_client("gpt-5-mini") 或使用 Ollama(如 ollama_chat/qwen3:1.7b)。然后定义智能体类,继承自 Agent 并指定 llm。例如:class FeedbackAgent(Agent, llm=llm): 并定义方法 async def analyze_feedback(self, text: str) -> str: ...。运行脚本:uv run python examples/quickstart/01_first_generation_method.py 或直接执行自己的 Python 文件。要查看跟踪,运行 uv run nooa start-dev 并在浏览器打开 http://localhost:5001。

这个 Agent 有哪些优点和局限?

优点
  • 面向对象设计将状态、能力、提示词和类型接口统一在一个类中,符合 Python 惯例。
  • 模型通过编写 Python 代码执行操作,避免了单独工具模式定义,代码即动作。
  • 类型化输入输出和自动重试提高了可靠性。
  • 默认跟踪,便于调试和观察智能体行为。
  • 模型无关,支持通过 LiteLLM 接入多种提供方。
  • 包含 CLI 和内存子系统等实用工具。
局限
  • 作为研究软件,存在粗糙边缘,文档可能不完整。
  • 执行 LLM 生成的代码有安全风险,必须依赖 OS 级沙箱,增加部署复杂性。
  • 依赖 LiteLLM,引入额外依赖和学习成本。
  • 需要 Python 环境和 uv 工具,对非 Python 技术栈不友好。
  • 基准测试和评估管道可能不与核心包一起发布,需要从 GitHub 安装。
  • 模型提供方 API 密钥(如 OpenAI、Anthropic)为必需,增加使用成本。

这个 Agent 与同类方案有什么区别?

该框架对比其他智能体框架(如 LangChain)可能提供更 Pythonic 的接口,但源码中未明确提及具体竞争对手。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
NVIDIA-labs 面向对象智能体(OO Agents) 当前 64 · 存在缺口 代码库 / SDK免费 + 模型费 ★ 2.3k 3 天前 Python OpenAI API · Claude API
Marvin – Python AI 开发框架 45 · 缺口较多 代码库 / SDK免费 + 模型费 ★ 6.2k 25 天前 Python OpenAI API
Pydantic AI 65 · 存在缺口 代码库 / SDK免费 + 模型费 ★ 21k 今天 Python OpenAI API · Claude API
Atomic Agents 64 · 存在缺口 代码库 / SDK免费 + 模型费 ★ 6.3k 今天 Python OpenAI API · Claude API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
64/ 100 五分制 3.2 / 5
本评测基于 2026年8月12日 的源码;此后该项目发布了 2 个正式版本,尚未复审。分数与结论只代表评测时的版本。 最近版本 ↓
信任安全 17/29
可靠稳定 9/14
适用触发 12/18
规范维护 12/18
有效结果 9/13
证据核验 5/8
查看各维度的扣分理由
信任安全17 / 29 · 2.9/5

证据显示:README明确警告LLM生成代码可能危险,建议沙箱隔离;pyproject.toml中依赖版本有安全考虑(如litellm>=1.84.0修复CVE);CI包含secret扫描和前端构建可复现性检查。但缺少用户确认机制、数据流透明度的具体实现细节、敏感数据处理策略、回滚机制等。扣分原因:用户确认、回滚等未在文件中体现。

可靠稳定9 / 14 · 3.2/5

证据显示:项目有CI测试、lint、类型检查,测试覆盖多个模块;依赖版本有明确约束;README和代码注释提供了错误处理信息。但静态审查无法验证实际运行可靠性。扣分原因:未执行测试,无法确认实际可靠性。

适用触发12 / 18 · 3.3/5

证据显示:README提供了多种使用场景(快速开始、示例、论文、博客),支持多种模型提供商,有可选子包;能力边界在README中有说明(如沙箱建议)。但缺少详细的触发精度说明和特定环境适配细节。扣分原因:触发精度和环境适配的具体实现未在文件中详细说明。

规范维护12 / 18 · 3.3/5

证据显示:README结构清晰,安装说明详细,命名一致(nooa包),有示例和FAQ链接,已知限制在README中提及,许可证为Apache 2.0,有版本控制(uv-dynamic-versioning)和变更日志链接,维护责任在CONTRIBUTING.md中说明。扣分原因:部分信息(如变更日志内容)未在提供文件中直接体现。

有效结果9 / 13 · 3.5/5

证据显示:README展示了清晰的输出示例(如分析反馈),框架提供对象导向的代理开发方式,具有边际价值;成本效益方面,依赖和安装说明明确。但缺少实际性能数据和成本分析。扣分原因:成本效益未量化。

证据核验5 / 8 · 3.1/5

证据显示:README中的声明(如性能结果)引用了论文和博客,测试文件提供了具体验证(如guardrails测试),事实与推断在文档中有区分。但静态审查无法验证所有声明。扣分原因:部分声明依赖外部链接,未在文件中直接验证。

风险与缓解建议
  • LLM生成代码可能执行危险操作,必须使用沙箱隔离。
  • 依赖版本有安全考虑,但需定期更新以应对新漏洞。
  • 静态审查无法验证实际运行可靠性,建议进行动态测试。
证据充分度:低 评估于 2026年8月12日 审查版本 8237a88fe744 评估后仓库已有新提交,评分可能未覆盖最新改动
查看完整评分方法 →

最近版本

来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。

  1. v0.0.10 NOOA 0.0.10
    发布说明摘录
    What's Changed * docs: add notebook tutorials v0 by @alessiodevoto in https://github.com/NVIDIA-NeMo/labs-OO-Agents/pull/142 * fix(tools): keep the shell parser away from the control protocol by @maemayv in https://github.com/NVIDIA-NeMo/labs-OO-Agents/pull/149 * Fix nooa-bench OTLP trace usage extraction by @cpakkamisaac-sae in https://github.com/NVIDIA-NeMo/labs-OO-Agents/pull/154 * Add CI-controlled release gate by @sklinglernv in https://github.com/NVIDIA-NeMo/labs-OO-Agents/pull/163 …
    在 GitHub 查看 ↗
  2. v0.0.9 NOOA 0.0.9
    发布说明摘录
    What's Changed * docs(cybergym): simplify README into a script-driven walkthrough by @sklinglernv in https://github.com/NVIDIA-NeMo/labs-OO-Agents/pull/60 * feat(cli): let external packages add nooa subcommands via entry points by @sklinglernv in https://github.com/NVIDIA-NeMo/labs-OO-Agents/pull/62 * docs(nooa_memory): fixed broken tests/memory/ link in README by @shivaperumalsamy in https://github.com/NVIDIA-NeMo/labs-OO-Agents/pull/64 * Docs/cybergym cleanups by @nv-pberard in https://github.com/NVIDIA-NeMo/labs-OO-Agents/pull/63 …
    在 GitHub 查看 ↗
  3. v0.0.8 NOOA 0.0.8
    发布说明摘录
    What's Changed * docs: install from PyPI, and fix the broken image on pypi.org by @sklinglernv in https://github.com/NVIDIA-NeMo/labs-OO-Agents/pull/57 Full Changelog: https://github.com/NVIDIA-NeMo/labs-OO-Agents/compare/v0.0.7...v0.0.8
    在 GitHub 查看 ↗

常见问题

NOOA 支持哪些模型?
通过 LiteLLM 支持多种托管或本地模型,例如 claude-haiku-4-5、gpt-5-mini、ollama_chat/qwen3:1.7b 和 hosted_vllm/...。需要相应的 API 密钥或本地端点。
如何确保智能体生成代码的安全性?
NOOA 提供 AST 检查和模块拒绝列表等防御措施,但这不是安全边界。必须将智能体运行在沙箱环境中(如容器、VM 或 NVIDIA OpenShell),仅依赖进程内验证是不够的。
NOOA 能否用于生产环境?
目前是研究软件,不建议直接用于生产,除非有充分的安全措施和充分的测试。文档中明确提示了风险,欢迎贡献修复。
如何调试智能体?
默认启用跟踪,所有 LLM 调用、代码执行和方法调用都被记录。安装 CLI 后,运行 uv run nooa start-dev 启动跟踪查看器,在浏览器中打开 http://localhost:5001 查看。
NOOA 是否支持长期记忆?
是的,可通过可选子包 nooa-memory 提供长期记忆子系统(MemoryManager)。使用 uv add nooa[memory] 安装。
在 GitHub 查看 ↗ 安装 ↓

相关 Agents