Active Agent의 핵심 아키텍처 및 구성 요소
Active Agent는 Rails의 MVC(Model-View-Controller) 아키텍처에 비유하여 AI 기능 통합을 설명합니다. 이는 Action Mailer와 유사하게 작동하는 추상 컨트롤러 역할을 수행하며, AI 상호작용의 복잡성을 효과적으로 관리합니다.
1. 주요 구성 요소
- Action Prompt (뷰 레이어)
- 프롬프트 렌더링 및 컨텍스트 관리를 담당하는 뷰 레이어입니다.
- Ruby 코드 내에 하드코딩된 텍스트 대신
text.erb파일을 사용하여 프롬프트 템플릿을 관리합니다. - JSON 스키마 또한 뷰 파일에서 관리하여 코드의 가독성과 유지보수성을 높입니다.
- Generation Provider (AI 백엔드)
- 대규모 언어 모델(LLM)을 포함하여 ONNX 런타임, Hugging Face 모델 등 다양한 AI 모델 백엔드를 지원합니다.
- 에이전트로부터 전달된 프롬프트와 컨텍스트를 기반으로 응답을 생성하는 역할을 합니다.
- Agent Controller (추상 컨트롤러)
Action Mailer와 유사하게, 에이전트 클래스 내의 공개 메서드가Action Prompt가 됩니다.Active Job과 같은 백그라운드 작업을 통해 AI 상호작용을 비동기적으로 처리하여 애플리케이션의 응답성을 유지합니다.before_prompt_generation,after_prompt_generation,on_stream과 같은 콜백을 통해 프롬프트 생성 전후 로직, 스트리밍 처리, 데이터 유효성 검사 등을 관리할 수 있습니다.- 대규모 언어 모델에 전달되는 객체에 대한 권한 부여(authorization)의 중요성을 강조합니다.
2. 주요 기능 및 활용 예시
- 프롬프트 관리 및 RAG (Retrieval Augmented Generation)
- 프롬프트 컨텍스트(context)와 메시지(messages)를 체계적으로 관리합니다.
RAG는 데이터 검색 후 생성 프로세스를 강화하는 방식으로, 벡터 검색뿐만 아니라 일반적인 데이터베이스 쿼리나 에이전트의 도구 호출을 통해서도 구현될 수 있습니다.
- 번역 에이전트
- 주어진 텍스트를 특정 언어(예: 영어-일본어)로 번역하는 기본적인 AI 에이전트 예시를 제공합니다.
- 번역 포맷(예: 로마자, 히라가나, 한자 학습)을 지시사항(instructions)으로 전달하여 제어할 수 있습니다.
- 브라우저 에이전트
- Capybara, Playwright와 같은 헤드리스 웹 브라우저를 활용하여 에이전트가 웹 페이지를 탐색하고, 클릭하고, 스크린샷을 캡처하는 등의 작업을 수행할 수 있도록 합니다.
- API가 없는 웹 애플리케이션에서 데이터를 스크래핑하거나 상호작용하는 데 유용합니다.
- 도구 사용 (Tooling)
- JSON 스키마를 사용하여 에이전트가 호출할 수 있는 도구(Ruby 코드의 메서드)를 정의합니다.
- MCP(Model Context Protocol)는 도구 확장을 위한 표준화된 JSON API를 제공합니다.
- 도구 정의는 프롬프트 컨텍스트의 일부로 토큰 사용량에 영향을 미치므로, 에이전트별로 노출되는 도구를 최적화하는 전략이 필요합니다.
- 구조화된 출력 (Structured Outputs)
- Jbuilder 또는 Active Record 클래스를 사용하여 JSON 스키마를 정의함으로써, AI 모델이 특정 구조의 JSON 객체로 응답을 반환하도록 유도합니다.
- PDF 양식에서 데이터 추출, 이력서 분석 등 정형화된 데이터가 필요한 시나리오에 매우 유용합니다.