NVIDIA-labs 面向对象智能体(OO Agents)
用 Python 类的方式构建 AI 智能体:状态、能力、提示词和类型接口统一在一个对象中。
- Star 数
- ★ 2.3k
- 最近更新
- 3 天前
- License
- NOASSERTION
- 主语言
- Python
- FA 评分
- 64/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API · Claude API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 在 Python 项目中快速原型化一个支持 Agent,该 Agent 需访问数据库并处理客户工单。
- 不适合
- 不愿在沙箱/容器中运行 LLM 生成代码的团队
- 非 Python 技术栈、希望零代码上手的用户
- 源码审查
- 64/100 · 存在缺口
这个 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)进行推理。
- 在 Python 项目中快速原型化一个支持 Agent,该 Agent 需访问数据库并处理客户工单。
- 需要类型化输出(如确保模型返回 Ticket 对象)且希望自动重试的开发者。
- 希望用标准 Python 单元测试、跟踪和重构工作流来调试智能体的团队。
- 需要长期记忆(MemoryManager)的智能体,但希望与框架集成。
- 研究者在 SWE-bench Verified 和 Terminal-Bench 2.0 等基准上评估智能体能力。
- 希望在不编写单独工具模式的情况下,通过 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?
查看各维度的扣分理由
证据显示:README明确警告LLM生成代码可能危险,建议沙箱隔离;pyproject.toml中依赖版本有安全考虑(如litellm>=1.84.0修复CVE);CI包含secret扫描和前端构建可复现性检查。但缺少用户确认机制、数据流透明度的具体实现细节、敏感数据处理策略、回滚机制等。扣分原因:用户确认、回滚等未在文件中体现。
证据显示:项目有CI测试、lint、类型检查,测试覆盖多个模块;依赖版本有明确约束;README和代码注释提供了错误处理信息。但静态审查无法验证实际运行可靠性。扣分原因:未执行测试,无法确认实际可靠性。
证据显示:README提供了多种使用场景(快速开始、示例、论文、博客),支持多种模型提供商,有可选子包;能力边界在README中有说明(如沙箱建议)。但缺少详细的触发精度说明和特定环境适配细节。扣分原因:触发精度和环境适配的具体实现未在文件中详细说明。
证据显示:README结构清晰,安装说明详细,命名一致(nooa包),有示例和FAQ链接,已知限制在README中提及,许可证为Apache 2.0,有版本控制(uv-dynamic-versioning)和变更日志链接,维护责任在CONTRIBUTING.md中说明。扣分原因:部分信息(如变更日志内容)未在提供文件中直接体现。
证据显示:README展示了清晰的输出示例(如分析反馈),框架提供对象导向的代理开发方式,具有边际价值;成本效益方面,依赖和安装说明明确。但缺少实际性能数据和成本分析。扣分原因:成本效益未量化。
证据显示:README中的声明(如性能结果)引用了论文和博客,测试文件提供了具体验证(如guardrails测试),事实与推断在文档中有区分。但静态审查无法验证所有声明。扣分原因:部分声明依赖外部链接,未在文件中直接验证。
- LLM生成代码可能执行危险操作,必须使用沙箱隔离。
- 依赖版本有安全考虑,但需定期更新以应对新漏洞。
- 静态审查无法验证实际运行可靠性,建议进行动态测试。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
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 查看 ↗ -
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 查看 ↗ -
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 支持哪些模型?
claude-haiku-4-5、gpt-5-mini、ollama_chat/qwen3:1.7b 和 hosted_vllm/...。需要相应的 API 密钥或本地端点。如何确保智能体生成代码的安全性?
NOOA 能否用于生产环境?
如何调试智能体?
uv run nooa start-dev 启动跟踪查看器,在浏览器中打开 http://localhost:5001 查看。NOOA 是否支持长期记忆?
nooa-memory 提供长期记忆子系统(MemoryManager)。使用 uv add nooa[memory] 安装。