What they did
NOOA replaces the fragmented landscape of prompt templates, tool schemas, callback code, and workflow graphs with a single Pythonic abstraction: an agent is a Python object. Developers define agent classes, where methods are the actions the model can take, fields represent state, docstrings act as prompts, and type annotations enforce contracts. Methods with an empty body (...) are dynamically filled by an LLM-driven loop at runtime; methods with normal bodies remain deterministic, allowing the same interface for both code and LLM-driven actions. The framework is model-agnostic and builds on Python's existing abstractions (classes, asyncio, type hints).
The paper presents three main contributions: (1) the agent-as-a-Python-object programming model with design principles, (2) identification of six model-facing ideas combined for the first time on a single surface (typed I/O, pass-by-reference over live objects, code as action, programmable loop engineering, explicit object state, model-callable harness APIs), and (3) empirical demonstrations on agentic and reasoning benchmarks.