8月7日、MarkTechPostが「NVIDIA AI Releases NOOA: An Object-Oriented Python Framework That Turns an AI Agent Into a Single Python Class」と題した記事を公開した。NVIDIAがAIエージェントを1つのPythonクラスで表現するオープンソースフレームワーク「NOOA」を公開したことについて詳しく紹介されている。
AIエージェントを「1クラス」に収める発想
AIエージェント開発では、プロンプトテンプレート・ツールスキーマ・コールバック・ワークフローグラフといった要素が分散しがちで、コードの見通しが悪くなる。NVIDIAが公開した**NOOA(NVIDIA Object-Oriented Agents)はこの問題に正面から向き合い、これらすべてを1つのPythonクラスに集約する**設計を採用している。
ルールはシンプルだ。
- メソッド → モデルが取れるアクション
- フィールド → エージェントの状態(ステート)
- ドキュメント文字列(docstring) → プロンプト
- 型アノテーション → ランタイムが強制するコントラクト
そして最もユニークな点が、メソッドボディの扱いだ。ボディが ...(省略記号)のメソッドは「アジェンティックメソッド」として扱われ、実行時にLLMが駆動するループで補完される。一方、通常のPythonコードが書かれたメソッドは、モデルがツールとして呼び出せる決定論的な関数としてそのまま機能する。
class MyAgent:
# ボディが ... → LLMが実行時に補完する
def solve_issue(self, repo: Repository) -> TaskResult: ...
# 通常のボディ → モデルがツールとして呼び出せる決定論的Python
def read_file(self, path: str) -> str:
return Path(path).read_text()
この設計により、エージェントの挙動が通常のソフトウェアと同様にテスト・トレース・リファクタリング・バージョン管理できる。
「パス・バイ・リファレンス」が効率改善の核心
NOOAには2つの実行戦略が搭載されている。**PredictStrategyは型付きLLM呼び出しにローカルなリトライループを組み合わせたシンプルなもの。CodeActStrategy**はモデルがexecute_python(...)を繰り返し呼び出し、最終的にreturn_result(...)で型検証済みの結果を返すPython REPLベースのループだ。
効率面で特に重要なのがパス・バイ・リファレンスの仕組みだ。引数はライブなPythonオブジェクトとして渡され、モデルには型・長さ・先頭/末尾のサンプルといった「境界付きプレビュー」だけが見える。100要素のリストであれば約30トークンで表現されながら、変数の実体はREPL内に保持される。コンテキストは「キャッシュ可能な静的プレフィックス」「追記のみの型付きイベント履歴」「末尾の動的ブロック」に分割されており、KVキャッシュの再利用を維持する設計だ。SWE-benchのベンチマーク中、コンテキスト圧縮は一切不要だったという。
また、オプションのメモリサブシステムをエージェントに追加できる。**ACT-R**(認知アーキテクチャの一種)に基づく活性化スコアでランク付けされた記憶の読み書きに対応する7種のモデル呼び出し可能ツールが含まれており、すべて1つの人間が検査可能なSQLiteファイルに保存される。
ベンチマーク結果:トークン効率が際立つ
NVIDIAが報告したベンチマーク結果は以下の通りだ。
| ベンチマーク | スコア | 備考 |
|---|---|---|
| SWE-bench Verified | 82.2% | OpenCode(78.6%)・PI(78.2%)を上回る |
| Terminal-Bench 2.0 | 73.0% | highエフォートでOpenCode(60.7%)・smolagents(68.5%)超え |
| CyberGym L1 | 86.8% | ネットワーク遮断環境でのオープンソース最高記録 |
| ARC-AGI-3 | 85.1% mean RHAE | $20以下/ゲーム |
※ mean RHAE(Mean Relative Human-normalized ARC-AGI Efficiency)は、ARC-AGI-3で用いられるコスト効率加味の正規化スコアで、正解率だけでなくゲームあたりのコストも評価に含まれる指標。
数字よりも興味深いのがトークン効率だ。SWE-bench 82.2%を達成したのに使用したのは約1.1Mトークン・タスクあたり約28回のモデル呼び出し。比較対象のPIは78.2%で2.2Mトークン・66回の呼び出しを要した。性能が高いにもかかわらず、コストがおよそ半分という結果だ。
終了判定の設計も一因として挙げられている。OpenCodeはモデルがツール呼び出しなしで返答した時点で停止するのに対し、NOOAは証拠と検証コマンドを含む型付きのTaskResultを要求する。
なお、ベンチマークで使用されたモデルの表記(元記事中の「GPT-5.5」「GPT-5.6-sol」等)については、元記事の記載をそのまま引用しているが、現時点では広く公表されていないモデル名のため、今後の公式発表で呼称が変わる可能性がある。
研究チームはLangGraph・Google ADK・PydanticAI・smolagents・Claude Agent SDK・OpenAI Codex・OpenHandsを含む14のフレームワーク・ハーネスを6軸(型付き入出力・参照渡し・コードアクション・プログラマブルなループエンジニアリング・明示的オブジェクト状態・モデル呼び出し可能ハーネスAPI)で比較し、他はすべて部分的な対応にとどまると報告している(論文)。
導入にあたっての注意点
**pip install nooa**(v0.0.8、2026年7月30日リリース)でインストール可能。Apache 2.0ライセンスで、Python 3.12〜3.13が必要だ。LiteLLMを通じてモデルをプラグイン形式で切り替えられるため、ホスト型API・Ollama・vLLMエンドポイントのいずれでも動作する。
ただし、PyPIでの分類はアルファ、NVIDIAの説明では「リサーチプレビュー」という位置づけだ。エージェントはLLM生成コードを実行するため、AST検査やモジュール拒否リストはあくまでも多層防御であり、封じ込め境界ではないとNVIDIAは明言している。本番利用時はコンテナ・VM・OSレベルのサンドボックスによる分離が必須だ(元記事中のサンドボックス製品名については、確認中のため本稿では一般的な表現にとどめている)。規制対象の本番ワークフローは安定版のリリースを待つべきだろう。
詳細はNVIDIA AI Releases NOOA: An Object-Oriented Python Framework That Turns an AI Agent Into a Single Python Classを参照していただきたい。