AURA: 기계가 읽을 수 있는 웹(Machine-Readable Web)을 위한 프로토콜

AURA 프로토콜 소개

**AURA (Agent-Usable Resource Assertion)**는 AI 에이전트가 웹사이트를 이해하고 조작할 수 있도록 설계된 오픈 프로토콜입니다. 현재 대부분의 AI 기반 웹 상호작용은 화면 스크래핑(screen scraping)이나 DOM 분석에 의존하지만, 이는 매우 취약하고 유지보수가 어렵습니다. 화면 배치가 조금만 변경되어도 동작이 깨지고, 다양한 사이트 간 HTML 구조 차이로 인해 코드 재사용이 어렵다는 문제가 있습니다. AURA는 이러한 문제를 해결하기 위해 웹사이트가 자신이 제공하는 기능을 **표준화된 manifest 파일(aura.json)**을 통해 명시적으로 선언하도록 합니다.

즉, AI 에이전트가 웹사이트에서 “어떻게 글을 작성할지” 추측하는 대신, 해당 사이트가 “create_post라는 기능이 있으며, /api/posts로 HTTP POST 요청을 보내고 titlecontent 파라미터를 받아야 한다”라고 직접 알려주는 구조입니다. 이는 ‘명령 기반 추측(imperative guessing)’에서 ‘선언적 상호작용(declarative interaction)’으로의 패러다임 전환입니다.

이 프로젝트는 단순한 API 문서 이상의 역할을 합니다. AURA는 사이트의 상태(AURA-State 헤더)까지 정의해, 예를 들어 사용자가 로그인되어 있는지 여부나 현재 가능한 기능 목록을 실시간으로 에이전트에 전달할 수 있습니다. 이를 통해 AI와 웹 간의 상호작용이 더욱 안전하고 예측 가능해집니다.

기존 방식과 AURA를 비교해 보면 다음과 같은 차이가 있습니다.

  • 화면 스크래핑(Screen Scraping)
    • 장점: 별도의 API 없이도 동작 가능
    • 단점: 속도 느림, 유지보수 비용 높음, UI 변경 시 즉시 중단
  • DOM 분석(DOM Manipulation)
    • 장점: HTML 구조를 기반으로 직접 데이터 추출 가능
    • 단점: 사이트별 HTML 구조 차이로 범용성 낮음, 변경 취약
  • AURA 프로토콜
    • 장점: 표준화된 manifest(aura.json)로 구조적 정보 제공, 사이트 상태 동기화 가능, 보안 및 제어 강화
    • 단점: 사이트 측에서 AURA 지원 구현 필요

주요 내용

핵심 개념

  • Manifest (aura.json) 각 사이트의 “AI 사용 설명서” 역할을 하며, /.well-known/aura.json 경로에서 제공됩니다.여기에는 가능한 모든 리소스와 기능이 정의됩니다.
  • Capability AI 에이전트가 수행할 수 있는 개별 액션(예: list_posts, login, update_profile)을 의미합니다. 각 capability는 특정 HTTP 요청과 연결됩니다.
  • State (AURA-State 헤더) 서버가 응답 시 동적으로 현재 사용자의 상태나 가능한 기능 목록을 제공하는 HTTP 헤더입니다.

저장소 구성

  • packages/aura-protocol: 핵심 TypeScript 인터페이스와 공식 JSON Schema를 포함한 NPM 패키지 (@aura/protocol).
  • packages/reference-server: Next.js 기반 AURA 지원 서버 예제. 사이트를 AURA 호환으로 만드는 참고 자료.
  • packages/reference-client: 브라우저나 확장 프로그램 없이 프로토콜을 소비할 수 있는 최소 백엔드 클라이언트 예제.

설치 및 빠른 시작 예제

  1. 의존성 설치

    pnpm install
    
  2. 레퍼런스 서버 실행

    pnpm --filter aura-reference-server dev
    
    • 실행 후, 브라우저에서 http://localhost:3000/.well-known/aura.json 접속 시 manifest 확인 가능합니다.
  3. 레퍼런스 에이전트 실행

    # OpenAI API 키를 .env 파일에 설정
    pnpm --filter aura-reference-client agent -- http://localhost:3000 "list all the blog posts"
    
  4. 크롤러 실행

    pnpm --filter aura-reference-client crawler -- http://localhost:3000
    
    • 사이트의 가능한 기능을 구조화된 JSON으로 출력합니다.

생태계 확장 가능성

AURA의 미래 비전은 단순한 프로토콜 표준화에 그치지 않고, 다양한 웹 프레임워크(Express, Laravel, Django, Rails) 어댑터, 여러 언어(Python, Go, Rust, Java) 클라이언트, 그리고 지능형 애플리케이션으로 확장되는 것입니다.

라이선스

AURA 프로젝트는 MIT 라이선스로 공개되어 있으며, 상업적 사용에 제한이 없습니다.

:github: AURA 프로젝트 GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

1개의 좋아요