
이 프로젝트는 A2A (Agent-to-Agent) 프레임워크로 구축된 포괄적인 영화 정보 에이전트를 보여줍니다. 이 에이전트는 TMDB (The Movie Database) API를 활용하여 상세한 영화 정보, 검색 기능 및 OpenRouter 통합을 통한 AI 기반 대화 기능을 제공합니다.
프로젝트는 명확한 관심사 분리를 가진 모듈식 아키텍처를 따릅니다:
src/
├── index.ts # 메인 서버 진입점
├── cli.ts # 명령줄 인터페이스
├── config/
│ └── env.ts # 환경 설정
└── movie-agent/
├── index.ts # 핵심 에이전트 실행기
├── tools.ts # TMDB API 도구
├── tmdb.ts # TMDB API 클라이언트
└── openai.ts # OpenRouter 통합
# 저장소 복제
git clone https://github.com/sing1ee/a2a-js-movie-agent.git
cd a2a-js-movie-agent
# Bun을 사용하여 종속성 설치
bun install
프로젝트 루트에 .env 파일을 생성하세요:
# TMDB API 키 (Bearer 토큰)
TMDB_API_TOKEN=your_tmdb_api_token_here
# AI 기능을 위한 OpenRouter API 키
OPENROUTER_API_KEY=your_openrouter_api_key_here
# 프록시 설정 (선택사항)
USE_PROXY=true
PROXY_URL=socks5://127.0.0.1:7890
# 서버 설정
NODE_ENV=development
PORT=3000
# 개발 서버 시작
bun dev
# 또는 프로덕션에서 빌드 및 실행
bun run build
bun start
서버는 http://localhost:3000 (또는 .env 파일에 지정된 포트)에서 시작됩니다.
# 대화형 CLI 실행
bun cli
# 또는 사용자 정의 서버 URL 지정
bun cli http://localhost:3000
서버가 실행되면 다음에 접근할 수 있습니다:
http://localhost:3000/.well-known/agent.json에이전트는 영화 정보를 위한 5가지 주요 도구를 제공합니다:
에이전트는 다음과 같은 일반적인 워크플로우를 따릅니다:
sequenceDiagram
participant U as User
participant CLI as CLI Client
participant A as A2A Server
participant MA as Movie Agent
participant AI as OpenRouter API
participant TMDB as TMDB API
U->>CLI: Enter movie query
CLI->>A: Send message via A2A protocol
A->>MA: Execute task
MA->>A: Publish "working" status
A->>CLI: Stream status update
CLI->>U: Show "Processing..." message
MA->>AI: Send query with available tools
AI->>MA: Respond with tool calls
MA->>TMDB: Execute tool calls (searchMovies, getMovieDetails, etc.)
TMDB->>MA: Return movie data
MA->>AI: Send tool results
AI->>MA: Generate final response
MA->>A: Publish "completed" status with response
A->>CLI: Stream final response
CLI->>U: Display movie information
Note over MA,TMDB: Tools available:<br/>- searchMovies<br/>- searchPeople<br/>- getMovieDetails<br/>- searchMoviesWithDetails<br/>- multiSearch
에이전트는 OpenRouter를 사용하여 지능적인 응답을 제공하며, 사용자 쿼리를 기반으로 어떤 도구를 사용할지 자동으로 결정합니다. "톰 크루즈가 출연한 2023년 액션 영화 찾기"와 같은 복잡한 요청을 여러 도구 호출을 결합하여 처리할 수 있습니다.
기본 TMDB 구현과 달리 이 에이전트는:
에이전트는 A2A (Agent-to-Agent) 프로토콜을 완전히 구현하여 다음을 가능하게 합니다:
내장 프록시 지원으로 제한된 네트워크 환경에서도 에이전트가 작동할 수 있도록 보장하며, 다음을 지원합니다:
사용자: "인셉션 영화에 대해 알려줘"
에이전트: [인셉션을 검색하고, 세부 정보, 출연진, 줄거리를 검색]
사용자: "크리스토퍼 놀란이 감독한 2020년 SF 영화를 찾아줘"
에이전트: [여러 도구를 사용하여 결과를 검색하고 필터링]
사용자: "레오나르도 디카프리오가 최근에 출연한 영화는?"
에이전트: [배우를 검색하고 최근 필모그래피 나열]
프로젝트에는 포괄적인 개발 도구가 포함되어 있습니다:
이 A2A JS 영화 에이전트는 Agent-to-Agent 프레임워크의 정교한 구현을 보여주며, 현대적인 웹 기술과 AI 기능을 결합하여 강력한 영화 정보 시스템을 만듭니다. 이 프로젝트는 외부 API와 상호작용하고 사용자 쿼리에 대해 풍부하고 맥락적인 응답을 제공할 수 있는 지능적이고 대화형 에이전트를 구축하는 방법의 훌륭한 예시입니다.
모듈식 설계, 포괄적인 오류 처리 및 A2A 프로토콜 준수로 인해 이 프로젝트는 학습 목적과 프로덕션 배포 시나리오 모두에 적합합니다.