In traditional agent development, work is often fragmented across prompt templates, tool schemas, callback code, and workflow graphs. NVIDIA's Object-Oriented Agents (NOOA) provides a model-agnostic Python framework for building reliable AI agents. NOOA adopts a simpler approach: an agent is a Python object. Its methods represent the actions the model can take, fields denote its state, docstrings serve as prompts, and type annotations act as contracts. Methods with a body of "..." are completed at runtime by an LLM-driven agent loop, while those with standard bodies remain deterministic Python. This allows both developers and agents to share the same interface, enabling agent behavior to be tested, traced, refactored, and improved like other software.
The paper presents three main contributions:
-
We introduce the agent-as-a-Python-object programming model and its design principles. We directly adopt existing Python abstractions. Agent-specific capabilities—context, events, state rendering, long-term memory, and validated LLM loops—are exposed through simple Pythonic APIs, allowing both developers and agents to share a familiar programming model.
-
We identify six model-facing ideas that NOOA uniquely combines on a single surface: typed input/output, pass-by-reference over live objects, code as action, programmable loop engineering, explicit object state, and model-callable harness APIs for context and events. The community is already converging on several of these ideas, often as experimental or partial features, and we present comparisons to encourage further adoption.
-
We demonstrate that current models effectively utilize this interface, both in targeted capability tests and on agentic and reasoning benchmarks such as SWE-bench Verified, Terminal-Bench 2.0, and ARC-AGI-3.
Blogger's Review: NOOA simplifies the development of intelligent agents by conceptualizing them as Python objects. This approach enhances testability and maintainability, providing developers with a unified programming model that aids in advancing AI agent applications. The specific handling of model calls marks a significant step toward higher abstraction in AI development.