NVIDIA-NeMo/labs-OO-Agents

NVIDIA Object Oriented Agents: the Pythonic way to build AI Agents.

NVIDIA-labs Object Oriented Agents (NOOA)

그것은 무엇인가 – NOOA는 AI 에이전트를 구축하기 위한 모델 비종속 Python 프레임워크입니다. 에이전트를 일반 Python 클래스로 작성할 수 있습니다: 필드는 상태를 보유하고, 일반 메서드는 결정적 코드이며, 본문이 ...인 메서드는 에이전트적입니다 – 런타임에 LLM이 메서드의 시그니처와 docstring을 기반으로 채웁니다.

왜 중요한가 – 전체 에이전트를 단일 객체로 취급함으로써, NOOA는 다른 많은 프레임워크가 요구하는 별도의 프롬프트, 도구, 워크플로 사양을 제거합니다. 이로 인해 에이전트는 일반 Python 도구로 테스트, 버전 관리, 리팩토링이 더 쉬워집니다.


핵심 아이디어

아이디어 제공하는 것
에이전트는 Python 객체 상태는 인스턴스에 있고, 타입 힌트는 계약이 되며, docstring은 프롬프트가 됩니다.
... 본문은 LLM 기반 메서드가 됨 호출 시 프레임워크는 시그니처와 docstring을 언어 모델에 보내고, 생성된 Python 코드를 받아 검증하고 실행합니다.
타입화된 I/O 및 자동 재시도 입력 및 출력 타입이 강제되며, 런타임은 실패한 생성을 자동으로 재시도합니다.
라이브 객체 인수 메서드는 다른 객체에 대한 참조를 받을 수 있으므로 모델이 기존 상태를 직접 조작할 수 있습니다.
내장 추적 모든 LLM 요청, 코드 실행, 메서드 호출이 스팬으로 기록됩니다. CLI 뷰어는 브라우저에서 추적을 표시할 수 있습니다.
모듈식 확장 선택적 패키지는 CLI(nooa-cli), 메모리 하위 시스템, 에이전트 클라이언트 프로토콜(ACP) 클라이언트, 벤치마크 도구를 추가합니다.

설치

# uv 사용 (권장)
uv init my-agent-project && cd my-agent-project
uv add nooa               # 핵심 프레임워크
# 선택적 확장
uv add "nooa[cli,memory]"   # CLI + 장기 메모리

또는 pip 사용:

pip install nooa

벤치마크 및 평가 유틸리티는 저장소에서 직접 설치할 수 있습니다:

uv add "eval_pipeline @ git+https://github.com/NVIDIA-NeMo/labs-OO-Agents.git@main#subdirectory=util/eval_pipeline"

빠른 시작 예제

import asyncio
from nooa import Agent
from nooa.unifiedllm.registry import get_llm_client

# 1️⃣ 모델 선택 (LiteLLM 호환 엔드포인트)
llm = get_llm_client("claude-haiku-4-5")   # 사전에 ANTHROPIC_API_KEY 설정

# 2️⃣ 에이전트 정의 – `...`는 생성 메서드를 표시
class FeedbackAgent(Agent, llm=llm):
    """당신은 고객 피드백을 분석하는 에이전트입니다."""

    async def analyze_feedback(self, text: str) -> str:
        """한 문장의 감정 요약과 주요 주제를 반환합니다."""
        ...

# 3️⃣ 실행
async def main():
    agent = FeedbackAgent()
    out = await agent.analyze_feedback("제품은 좋지만 배송이 느렸습니다")
    print(out)

asyncio.run(main())

스크립트를 실행하면 LLM이 생성한 짧은 분석이 출력됩니다. 메서드 이름, 매개변수 또는 docstring을 변경하면 프롬프트가 자동으로 변경됩니다.


안전 참고 사항

  • NOOA는 연구용 소프트웨어입니다. 생성된 코드는 임의의 작업을 수행할 수 있습니다. 프레임워크는 정적 AST 검사와 모듈 거부 목록을 수행하지만, 이는 보안 경계가 아닙니다.
  • 생성된 코드를 실행할 때는 OS 수준 샌드박스(컨테이너, VM 또는 NVIDIA OpenShell)에서 에이전트를 실행하세요.
  • 생성이 스트림(지원되지 않음)을 생성하거나 계약을 위반하는 경우 라이브러리는 명확한 오류 메시지를 제공합니다.

NOOA를 사용할 때

  • LLM 기반 어시스턴트의 빠른 프로토타이핑 – 에이전트의 상태와 기능을 일반 Python으로 표현하고 싶을 때.
  • 도구 사용 에이전트 구축 – 생성된 코드는 모듈을 가져오거나, 다른 객체를 호출하거나, 내장 MemoryManager를 사용하여 장기 컨텍스트를 유지할 수 있습니다.
  • 에이전트 아키텍처 연구 – 프레임워크는 모델 비종속이며 벤치마크 스위트(nooa-bench)와 평가 파이프라인을 포함합니다.
  • 기존 코드베이스와 통합 – 에이전트는 단순히 클래스이므로 모든 Python 프로젝트에 넣고 pytest로 테스트할 수 있습니다.

문서 및 리소스

  • [전체 문서] (https://github.com/NVIDIA-NeMo/labs-OO-Agents/blob/main/docs/README.md) – 개념, API 참조, 안전 가이드.
  • [10분 투어] – 핵심 아이디어의 간결한 안내.
  • [노트북 튜토리얼] – 실습 학습을 위한 Colab 친화적 노트북.
  • [예제 카탈로그] – 구조화된 출력, 도구 사용, 의사 결정 모델, 추적 등을 보여주는 실행 가능한 스크립트.
  • [논문] (https://arxiv.org/abs/2607.20709) – 설계 근거 및 벤치마크 결과.
  • [블로그 게시물] – 6가지 "에이전트 하네스 기능" 개요.

기여 및 라이선스

  • Apache 2.0 하에 오픈 소스.
  • 개발은 uv를 사용하여 환경 관리를 합니다. 워크플로, pre-commit 훅, 테스트 명령은 CONTRIBUTING.md를 참조하세요.
  • 연구에서 NOOA를 사용하는 경우 제공된 BibTeX 항목으로 인용하세요.

결론: NOOA는 일반 클래스처럼 느껴지는 LLM 기반 에이전트를 작성할 수 있는 순수 Python 방식을 제공하며, 내장 타입, 추적, 선택적 메모리/CLI 확장을 갖추고 있습니다. 코드 생성 동작의 유연성을 원하면서 표준 소프트웨어 엔지니어링 관행을 포기하지 않으려는 개발자를 대상으로 합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트