NOOA란 무엇인가
NOOA(NVIDIA Object-Oriented Agents)는 NVIDIA Labs가 2026년 8월 공개한 오픈소스 Python 프레임워크다. 이름 그대로 객체지향(Object-Oriented) 방식으로 AI 에이전트를 만드는 것이 핵심 컨셉이다. 분산되어 있던 프롬프트 템플릿, 툴 스키마, 콜백, 워크플로우 그래프를 전부 하나의 Python 클래스로 압축한다.
특정 LLM에 종속되지 않는 모델 비종속(model-agnostic) 구조이며, Apache 2.0 라이선스로 pip install nooa(v0.0.8) 한 줄로 설치할 수 있다. NVIDIA 측은 이를 "더블-O 에이전트(NVIDIA double-O Agents)"라는 별명으로 부르며, 연구 프리뷰 단계라고 명시했다.
기존 방식과 무엇이 다른가
전통적인 에이전트 프레임워크는 코드가 여러 곳에 흩어져 있다. 프롬프트는 YAML, 툴 정의는 JSON 스키마, 흐름 제어는 별도 그래프, 콜백은 핸들러 함수에 들어 있다. 디버깅 한 번 하려면 일� 군데를 오가야 한다.
NOOA는 이를 다음과 같이 하나의 클래스로 통일한다.
- 메서드 → 모델이 수행할 수 있는 액션(action)
- 필드 → 에이전트의 상태(state)
- docstring → 모델에게 주는 프롬프트
- 타입 어노테이션 → 런타임이 강제하는 계약(contract)
여기서 가장 흥미로운 아이디어는 메서드 본문에 있다. 본문을 줄임표(...)로 비워 두면 그 메서드는 에이전틱 메서드(agentic method)가 되어, 런타임에 LLM 루프가 알아서 내용을 채운다. 반대로 실제 코드를 작성해 두면 그 메서드는 결정론적(deterministic) Python으로 남아, 모델이 도구(tool)로 호출해서 사용할 수 있다.
두 가지 전략
- PredictStrategy — 검증 실패 시 로컬 재시도 루프를 가진 단일 타입 지정 LLM 호출. 단순 작업에 적합하다.
- CodeActStrategy — 모델이
return_result(...)를 제출할 때까지execute_python(...)을 반복 호출하는 Python REPL 패턴. 다중 도구 작업에서 약 20% 포인트의 성공률 향상을 보인다고 보고된다.
핵심 기능 6가지
NVIDIA는 기존 14개 프레임워크(LangGraph, Google ADK, PydanticAI, smolagents, Claude Agent SDK, OpenAI Codex, OpenHands 등)와 비교해, 다음 6가지를 처음으로 한 표면에 모두 결합했다고 주장한다.
① 타입 지정 입출력
모든 메서드의 입력·출력에 타입 어노테이션을 강제한다. LLM이 잘못된 타입을 반환하면 런타임이 즉시 거부하므로, 후처리 코드 없이도 안전한 데이터 흐름이 보장된다.
② 라이브 객체에 대한 참조 전달(pass by reference)
가장 결정적인 설계다. 큰 리스트나 데이터프레임을 모델에 전달할 때 전체를 복사하지 않고 참조만 넘긴다. 모델은 타입, 길이, 앞뒤 일부 샘플만 보고 전체 객체는 Python REPL에 그대로 살아 있다. 예컨대 100개 요소 리스트는 약 30 토큰으로 렌더링되지만 변수 자체는 메모리에 잔존한다. SWE-bench처럼 거대한 코드베이스를 다룰 때 컨텍스트 압축이 필요 없는 이유가 바로 이것이다.
③ 액션으로서의 코드
JSON으로 도구 호출을 보내는 대신 Python 코드를 직접 실행한다. CodeActStrategy가 이 패턴의 정식 구현이다.
④ 프로그래머블 루프 엔지니어링
검증·재시도·분기 로직을 일반 Python으로 짤 수 있다. 기존 프레임워크는 그래프 DSL로 우회해야 했던 부분을 그대로 메서드로 작성한다.
⑤ 명시적 객체 상태
에이전트의 모든 상태가 클래스의 필드로 드러나므로, 디버깅·체크포인트·재생이 매우 쉽다. 컨텍스트는 정적 프리픽스 + 추가 전용(append-only) 이벤트 히스토리 + 끝부분 동적 블록으로 나뉘어 턴 간 KV 캐시(Key-Value Cache) 재사용을 보존한다.
⑥ 모델 호출 가능 하네스 API
필요할 경우 모델이 하네스(harness) 자체를 호출해 도구·메모리·루프를 제어할 수 있다. 외부에서는 보이지 않던 내부 API가 모델에게는 열려 있다.
보너스: ACT-R 기반 메모리
선택적 메모리 서브시스템을 붙이면, 7개 도구가 ACT-R 활성화(activation) 점수로 과거 레코드를 랭킹해 회상한다. 모두 사람이 열어볼 수 있는 단일 SQLite 파일에 저장되므로 감사(audit)와 디버깅이 간편하다.
벤치마크 성능과 토큰 효율
기능 테스트 결과부터 보자. 10개 모델에 걸쳐 5회씩 88개 테스트, 총 4,400개 레코드를 실행해 4,309개 통과(97.9%)했다. 배치·오류 복구·분해(decomposition) 6개 패밀리 스트레스 하위 집합은 84.7%를 통과했다. 단, 여기서 소형 모델과 최전선(frontier) 모델 사이의 격차가 3.2포인트에서 23포인트로 벌어진다 — 큰 모델일수록 압도적으로 유리한 구간이다.
(xhigh, GPT-5.5)
(high effort)
(네트워크 차단)
(GPT-5.6-sol)
엔드투엔드 비교 표 (253줄 단일 에이전트)
| 벤치마크 | NOOA | OpenCode | PI | Opus 4.6 |
|---|---|---|---|---|
| SWE-bench Verified (xhigh) | 82.2% | 78.6% | 78.2% | 79.8% |
| Terminal-Bench 2.0 (high) | 73.0% | 60.7% | 68.5% | — |
| ARC-AGI-3 (mean RHAE) | 50.2% (GPT-5.5) 85.1% (GPT-5.6-sol) | — | — | — |
토큰 효율이 더 흥미롭다
같은 82.2%를 약 110만 토큰, 태스크당 약 28회 모델 호출로 달성했다. 비교 대상 PI는 78.2%에 220만 토큰과 66회 호출이 필요하다. NOOA는 대략 절반의 토큰으로 더 높은 점수를 낸 것이다. 이유는 검증된 종료(verified termination)다. 다른 프레임워크는 모델이 도구 호출 없이 응답하면 그냥 멈추지만, NOOA는 증거와 검증 명령을 담은 TaskResult 타입을 강제하므로 어설픈 종료가 줄어든다.
ARC-AGI-3에서는 한 페이지 분량의 월드 모델 스킬을 가진 단일 에이전트가 게임당 20달러 미만 비용으로 85.1% mean RHAE를 달성해 비용 대비 효율까지 입증했다.
설치 방법과 시스템 요구사항
설치
Python 3.12 ~ 3.13이 필요하다. PyPI는 이 버전을 알파(alpha)로 분류하고, NVIDIA는 이를 "리서치 프리뷰(research preview)"라고 부른다.
지원 LLM 백엔드
LiteLLM 게이트웨이를 통해 다음 백엔드를 그대로 연결할 수 있다.
- 호스팅 API(OpenAI, Anthropic, Google 등)
- Ollama(로컬 오픈소스 모델)
- vLLM 엔드포인트
특정 모델에 묶이지 않으므로 LiteLLM이 지원하는 모든 LLM을 그대로 활용할 수 있다.
적용 분야
- 개발자 도구: 리포지토리 이슈 분류 및 패치 자동화
- 사이버보안: 취약점 검증 파이프라인
- 클라우드/DevOps: 터미널 및 인프라 자동화
- 데이터 분석: 인메모리 데이터 대규모 배치 분류·추출
- 금융 서비스 운영, 고객 지원 자동화
- 타입 지정 멀티 에이전트 오케스트레이션
주의사항과 안전 가이드
NOOA는 LLM이 생성한 Python 코드를 그대로 실행한다. NVIDIA도 직접 명시했다 — AST(추상 구문 트리) 검사와 모듈 deny-list는 "방어 심층(deep defense) 가드레일"일 뿐 컨테인먼트 경계(containerment boundary)가 아니다.
따라서 실제 격리 경계는 다음 중 하나여야 한다.
- 컨테이너(Docker 등)
- 가상 머신(VM)
- NVIDIA OpenShell 같은 샌드박스 환경
즉, OS 수준 격리 안에서만 생성된 코드를 실행해야 한다. 규제 적용이 필요한 프로덕션 워크로드는 정식 안정(stable) 릴리스가 나오기 전까지 미뤄 두는 것이 안전하다.
대상 사용자
- 내부 에이전트를 구축하는 AI 네이티브 스타트업과 미드마켓 플랫폼 팀
- 평가·파일럿을 운영하는 엔터프라이즈 AI 플랫폼 및 응용 리서치 그룹
- 개발자 도구, 사이버보안, 클라우드/DevOps, 데이터 분석, 금융 서비스, 고객 지원 분야의 연구·실험팀
자주 묻는 질문(FAQ)
NOOA는 LangGraph, smolagents와 어떻게 다른가요?
NOOA는 프롬프트·툴·그래프·콜백을 하나의 Python 클래스로 통합한다. 참조 전달(pass by reference)로 거대 데이터를 REPL에 그대로 두고, 모델에는 메타데이터만 보여주는 점이 가장 큰 차별점이다. 그 결과 토큰 사용량이 절반 수준으로 줄어들었다.
어떤 LLM과 호환되나요?
LiteLLM을 통과시키면 모든 주요 백엔드를 지원한다. 호스팅 API, Ollama, vLLM 모두 동작하며, 특정 모델에 종속되지 않는다.
프로덕션 환경에서 바로 써도 되나요?
현재 v0.0.8은 알파 단계의 리서치 프리뷰다. NVIDIA도 "OS 수준 격리 안에서만" 사용하라고 명시했다. 규제 적용 워크로드는 정식 안정 릴리스 이후로 미루는 것을 권장한다.
벤치마크 점수는 어떤 모델로 측정한 건가요?
SWE-bench Verified 82.2%는 xhigh effort의 GPT-5.5, ARC-AGI-3 85.1% mean RHAE는 GPT-5.6-sol 기준이다. SWE-bench Verified 79.8%는 Opus 4.6으로도 재현됐다.
Apache 2.0 라이선스라 상업적으로 사용 가능한가요?
그렇다. Apache 2.0 라이선스이므로 상업적 사용과 수정이 모두 허용된다. 다만 알파 단계라는 사실은 별개로 고려해야 한다.
핵심 요약
- 에이전트는 하나의 Python 클래스. 메서드는 액션, 필드는 상태, docstring은 프롬프트, 어노테이션은 강제 계약이다.
- 본문이
...인 메서드는 에이전틱 메서드가 되어 LLM 루프가 런타임에 완성한다. 실제 본문이 있는 메서드는 결정론적 Python으로 남아 모델이 도구로 호출한다. - 참조 전달(pass by reference) 덕분에 큰 데이터를 REPL에 라이브 상태로 유지 → SWE-bench에서 컨텍스트 압축이 불필요했다.
- 비교 대상 오픈 하네스의 절반 토큰 수준에서 SWE-bench Verified 82.2%, CyberGym L1 86.8%, ARC-AGI-3 85.1%를 기록했다.
- Apache 2.0 라이선스,
pip install nooa한 줄로 설치 가능. 다만 알파 단계이므로 반드시 OS 수준 격리(컨테이너, VM, NVIDIA OpenShell) 안에서만 실행해야 한다.