开发与工程 object-oriented-agentspython-frameworkllm-agentsstructured-outputtool-usetracingjupyter-repl

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

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

FollowAgents 评估 · FARS-2.1
谨慎使用
64/ 100 五分制 3.2 / 5
1 2 3 4 5 6
1信任安全17 / 29 · 2.9/5

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

2可靠稳定9 / 14 · 3.2/5

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

3适用触发12 / 18 · 3.3/5

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

4规范维护12 / 18 · 3.3/5

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

5有效结果9 / 13 · 3.5/5

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

6证据核验5 / 8 · 3.1/5

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

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

这个 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 有哪些优点和局限?

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

如何安装或部署这个 Agent?

使用 uv 或 pip 安装核心框架:uv add nooapip 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 与同类方案有什么区别?

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

常见问题

NOOA 支持哪些模型?
通过 LiteLLM 支持多种托管或本地模型,例如 claude-haiku-4-5gpt-5-miniollama_chat/qwen3:1.7bhosted_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] 安装。

相关 Agents