Strands Agents SDK로 AI 에이전트 기반 비디오 분석 엔진 구축
Strands Agents SDK를 활용하여 AI 에이전트가 스스로 판단하고 도구를 선택하여 영상을 분석하는 에이전틱 비디오 엔진(Agentic Video Engine) 구축
Amazon Bedrock, TwelveLabs AI 모델, Amazon S3 Vectors, DynamoDB, Transcribe 등 다양한 AWS 서비스를 통합하여 비디오 분석 파이프라인(Video Analysis Pipeline) 구현
Strands Agents SDK의 핵심 개념인 에이전트(Agent) = 모델 + 도구 + 프롬프트 구조를 통해 유연하고 확장 가능한 아키텍처 설계
Agents as Tool 패턴을 활용, 각 전문 에이전트(Video Analysis, Search, Transcript)를 구축하여 모듈성(Modularity) 및 유지보수성(Maintainability) 향상
Strands Agents SDK: AI 에이전트 개발 프레임워크
Strands Agents SDK는 AWS가 오픈소스로 공개한 AI 에이전트 개발 프레임워크로, 개발자가 AI 에이전트를 빠르게 구축, 관리, 배포할 수 있도록 설계되었다. 핵심은 에이전트 = 모델 + 도구 + 프롬프트 구조이다.
모델(Model): Amazon Bedrock의 Claude, Nova 등 다양한 LLM을 지원하며 에이전트의 '두뇌' 역할을 수행한다.
도구(Tool): API 호출, 데이터 처리, 외부 서비스 연동 등 Python 함수를 도구로 만들어 에이전트가 실제 작업을 수행하도록 한다.
시스템 프롬프트(System Prompt): 에이전트의 역할과 행동 규칙을 정의하며, 에이전트의 동작을 제어한다. Strands는 에이전트 루프의 각 단계에 콜백 함수를 등록할 수 있는 Hook 시스템(Hook System)을 제공하여 프로덕션 요구사항을 에이전트 코드 수정 없이 구현할 수 있다.
에이전트 루프(Agent Loop)의 동작 방식
Strands 에이전트는 LLM에 한 번 질문하고 답을 받는 것이 아니라, 반복적인 추론-실행 루프를 수행한다. 이 루프는 다음과 같은 단계를 거친다.
사용자 요청을 LLM에 전달
LLM이 응답 생성 – 이때 도구 호출이 필요하다고 판단하면 도구를 선택
선택된 도구 실행 및 결과 수집
도구 실행 결과를 다시 LLM에 전달
LLM이 추가 도구 호출이 필요한지 판단 – 필요하면 2번으로 돌아감
최종 응답을 사용자에게 반환
이러한 반복적인 추론-실행 루프(Reasoning-Execution Loop) 덕분에 에이전트는 복잡한 작업도 여러 단계에 걸쳐 자율적으로 처리할 수 있다.
TwelveLabs AI 모델과 AWS 서비스 통합
본 글에서는 TwelveLabs의 비디오 AI 모델과 다양한 AWS 서비스를 통합하여 에이전틱 비디오 엔진을 구축하는 예시를 제시한다. 사용된 주요 서비스는 다음과 같다.
Amazon Bedrock: Claude Sonnet, Claude Haiku 등 LLM을 활용하여 에이전트의 추론 엔진 역할 수행
TwelveLabs Marengo 3.0: 비디오 임베딩 모델로, 영상을 벡터로 변환하여 의미 기반 검색 지원
TwelveLabs Pegasus 1.2: 비디오 이해 모델로, 영상 내용을 분석하고 텍스트로 요약
Amazon S3 Vectors: 임베딩된 영상 클립의 벡터를 저장하고 유사도 검색 수행
Amazon DynamoDB: 영상 처리 작업의 메타데이터 및 상태 관리
Amazon Transcribe: 영상의 음성을 텍스트로 변환 (STT)
이처럼 다양한 AI 모델과 AWS 서비스의 조합(Combination)을 통해 고도화된 비디오 분석 기능을 구현한다.
Agents as Tool 패턴을 활용한 멀티 에이전트 아키텍처
단일 에이전트 방식은 간단하지만, 다루는 도메인이 늘어날수록 시스템 프롬프트가 복잡해지고 도구 간 역할 경계가 모호해질 수 있다. Agents as Tool 패턴은 각자 고유한 전문성을 지닌 전문가들을 관리자가 조정하는 인간 팀의 역학을 모방한다.
전문 에이전트 생성: 각 도메인별로 전문 에이전트(Video Analysis, Search, Transcript)를 생성하여 관심사를 명확히 분리
에이전트를 도구로 래핑: 각 전문 에이전트를 @tool 데코레이터로 감싸서 오케스트레이터가 사용할 수 있는 도구로 변환
오케스트레이터 생성: 세 개의 에이전트 도구를 사용하는 최상위 오케스트레이터를 생성하고, 에이전트별 사용 가이드라인을 제공
이러한 멀티 에이전트 아키텍처(Multi-Agent Architecture)를 통해 모듈성과 유지보수성을 향상시킨다.
비동기 호출(Asynchronous Invocation)을 활용한 비디오 임베딩 생성
본문에서는 TwelveLabs Marengo 3.0 모델을 사용하여 비디오 임베딩을 생성하는 과정을 설명하며, 비동기 호출 방식을 사용한다. 비디오 임베딩 생성은 영상 길이에 따라 수 분이 소요될 수 있으므로, start_async_invoke API를 통해 비동기적으로 호출한다.
DynamoDB 작업 기록: 작업 ID, S3 URI, 상태 등을 DynamoDB에 기록하여 작업 상태 관리
Bedrock 비동기 호출: Marengo 모델을 호출하여 비디오 임베딩 생성
S3 Vectors 저장: 생성된 임베딩 벡터를 S3 Vectors에 저장
이러한 비동기 처리(Asynchronous Processing)를 통해 사용자 경험을 개선하고 시스템의 효율성을 높인다.