Active Agent는 Rails 개발자들이 익숙한 Active Record, Action View, Action Controller와 같은 Gem들을 AI 기능 개발에 활용할 수 있도록 설계되었습니다. 이는 웹 애플리케이션 개발에서 Rails가 제공하는 ‘설정보다 관례(convention over configuration)’ 원칙을 AI 기능에도 적용하려는 시도입니다.
Active Agent의 핵심 원칙 및 구조
-
기존 Rails Gem 재활용: Active Record는 컨텍스트(메시지, 로그)를 저장하고, Action View는 프롬프트 템플릿팅에 사용되며, Action Controller는 에이전트 클래스의 기반이 됩니다.
-
Action Prompt 인터페이스: Action View가 LLM과 대화하며 동적 프롬프트를 에이전트에 렌더링하는 역할을 합니다.
-
Agent Class: Action Mailer와 유사하게, Active Agent 클래스는 컨트롤러와 같아서 공개 메서드가 뷰를 렌더링하고 백그라운드에서 생성 작업을 수행할 수 있습니다.
-
비동기 작업 및 스트리밍 지원: Active Job을 활용한 비동기 작업(generate_later)과 Action Cable을 통한 AI 응답 스트리밍 기능(on_stream 콜백)을 지원하여 사용자 경험을 개선합니다.
데모 및 기능 구현
-
Writebook 앱 활용: 37signals의 Writebook 애플리케이션을 복제하여 AI 기능을 추가하는 데모를 진행했습니다.
- AI 기능 예시:
- 콘텐츠 요약/확장/문법 수정: 텍스트 에디터 툴바에 ‘요약’, ‘확장’, ‘문법 수정’ 등의 버튼을 추가하여 선택된 콘텐츠에 AI 기능을 적용합니다.
- 이미지 캡션 자동 생성: 이미지 업로드 시 AI가 이미지를 분석하여 자동으로 캡션을 생성합니다.
- LLM 연동: OpenAI (ChatGPT) 또는 Olama와 같은 LLM 제공자와의 API 통신을 통해 AI 기능을 구현합니다.
개발 과정에서의 도전과제
-
프론트엔드 통합: Stimulus 컨트롤러를 사용하여 AI 기능 호출 및 응답 처리를 담당합니다. 실시간 스트리밍 구현 시 Turbo Stream과 Action Cable을 활용하는 방안을 논의했습니다.
-
콜백 필터링 문제: Action Mailer의 콜백 필터링(only: :improve)이 제대로 작동하지 않는 문제점을 언급하며, Active Agent에서는 이를 해결하기 위한 구현 방식을 소개했습니다.
Rails AI 생태계의 비전
-
Justin은 Rails 커뮤니티가 AI 분야에서 기회를 잡고, Ruby LLM과 같은 프로젝트를 통해 생태계를 강화해야 한다고 주장합니다.
-
궁극적인 목표는 Rails 개발자들이 AI 제품 개발을 위해 Next.js와 같은 다른 프레임워크로 전환하는 대신, Rails 내에서 강력한 AI 기능을 구축할 수 있도록 지원하는 것입니다.