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
와 같은 추상화.