Active Agent 개요
Active Agent 젬은 Rails의 컨트롤러, 메일러와 유사한 액션 기반 객체, 콜백, Action View 기반 프롬프트 렌더링을 통해 AI 로직을 캡슐화하는 ‘에이전트’ 추상화를 제공합니다. AI 생성을 동기(generate_now) 또는 비동기(generate_later)로 트리거하며, 프롬프트는 템플릿 파일로 관리됩니다.
실제 적용 사례 및 설계 논의
- 온디맨드 번역:
TranslateAgent로 콘텐츠 번역 기능을 구현했으나,after_generation콜백 내 DB 업데이트가 에이전트 책임 범위와 관심사 분리 문제를 제기합니다. 모델 내 로직 분리 및 LLM 호출의 동기/비동기 처리 문제가 논의됩니다. - AI 리뷰어:
ReviewAgent는 제안서 평가 및search_talks같은 도구를 통합합니다. 도구/출력 스키마를 JSON 템플릿으로 수동 정의하는 방식은 Rails 컨벤션에 맞지 않아, RBS(Ruby Type Signatures) 활용 자동 스키마 생성 및 직접 Ruby 객체 반환 방식이 제안됩니다.
테스트 용이성
Active Agent는 기본 테스트 도구가 없어, FakeLLMProvider를 구현하여 LLM API 호출을 스텁하고 RSpec 헬퍼를 통해 테스트 환경을 구축했습니다. 이는 Active Storage 어댑터 패턴과 유사합니다.
미래 Rails AI를 위한 추가 요구사항
Active Agent는 유망하지만, AI 애플리케이션의 복잡성 해결을 위해 다음 추상화가 필요합니다.
* 운영/관리: 사용량 추적, AI 크레딧, 동적 자격 증명, Private LLM 지원.
* 프롬프트 관리: PromptEngine 통합을 통한 동적 프롬프트 로드 및 관리.
* 안전/신뢰성: 프롬프트 인젝션 방지, 환각 제어, 입력/출력 평가를 위한 Guard 및 Eval 메커니즘.
* 복합 워크플로우/메모리: 에이전트 간 위임 워크플로우 및 메모리/컨텍스트 지속성 기능.
* 데이터 처리: 컨텍스트 엔지니어링(RAG)을 위한 vectorizer, extractor, chunker와 같은 추상화.