Active Agent: Rails 애플리케이션에 AI 기능 통합하기

Justin Bowen: Building agents with Rails - Workshop. San Francisco Ruby Conference 2025

작성자
Evil Martians
발행일
2026년 01월 22일

핵심 요약

  • 1 Active Agent는 Rails 개발자가 AI 복잡성을 압축하여 애플리케이션에 AI 기능을 쉽게 통합할 수 있도록 돕는 Ruby 프레임워크입니다.
  • 2 Action Prompt를 통해 프롬프트 관리 및 뷰 레이어를 제공하고, Generation Provider를 통해 LLM 및 ONNX 런타임 등 다양한 AI 백엔드와 상호작용합니다.
  • 3 에이전트는 추상 컨트롤러 역할을 하며, 백그라운드 작업, JSON 스키마 기반 도구 사용, 구조화된 출력 등 Rails 친화적인 방식으로 고급 AI 기능을 지원합니다.

도입

본 발표는 Rails 애플리케이션에 AI 기능을 통합하기 위한 Ruby 프레임워크인 Active Agent를 소개합니다. 현재의 'AI 골드러시' 시대에 많은 개발자들이 AI에 주목하고 있지만, 발표자는 Rails의 활용을 확대하고자 하는 목표로 Active Agent를 개발했습니다. Active Agent는 Rails가 웹 애플리케이션 개발의 복잡성을 압축하는 방식과 유사하게, AI 기능 구현의 복잡성을 줄여 개발자가 친숙한 Rails 패턴으로 AI를 활용할 수 있도록 설계되었습니다. 발표자는 20년간의 Ruby on Rails 경력과 10년간의 컴퓨터 비전 경험을 바탕으로, 실제적이고 현실적인 AI 통합 방안을 제시합니다.

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 양식에서 데이터 추출, 이력서 분석 등 정형화된 데이터가 필요한 시나리오에 매우 유용합니다.

결론

Active Agent는 Rails 개발자들에게 AI 기능 통합의 복잡성을 해소하고, 익숙한 Rails 패턴을 통해 강력한 AI 기반 애플리케이션을 구축할 수 있는 기회를 제공합니다. 프롬프트 관리, 도구 사용, 구조화된 출력 등 다양한 AI 기능을 Rails의 추상화 계층 안에서 효과적으로 지원하며, Active Job을 활용한 비동기 처리는 성능과 확장성을 보장합니다. 현재 V1 릴리스 후보가 공개되었으며, 에이전트 모니터링 및 평가를 위한 Solid Agent와 같은 추가 기능들이 개발 중입니다. Active Agent는 Rails 생태계 내에서 AI 개발을 가속화하고, 더 많은 개발자들이 AI를 쉽게 활용할 수 있도록 기여할 것입니다. 오픈 소스 프로젝트로서 커뮤니티의 기여를 적극 환영합니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!