다형성 모델의 필요성
AI 생태계는 OpenAI, Gemini, 자체 호스팅 Llama 인스턴스 등 다양한 서비스와 모델로 파편화되어 있습니다. 이러한 환경에서 다형성 Inference 모델을 사용하면 User, Conversation, BackgroundJob 등 시스템 내 어떤 레코드에도 AI 사용 기록을 유연하게 연결할 수 있습니다. 이는 특정 AI 서비스에 종속되지 않고 범용적인 추적 메커니즘을 구축하는 데 필수적입니다.
구현 방식
Inference 모델은 AI 서비스가 호출될 때 발생하는 정보를 기록하는 원장(ledger) 항목으로 설계됩니다. 서비스 응답을 캡슐화하고 데이터베이스에 기록함으로써, 핵심적인 사용량 데이터를 애플리케이션 내부에 보관합니다. 모델의 기본 구조는 다음과 같습니다:
ruby
class Inference < ApplicationRecord
belongs_to :inferable, polymorphic: true
# 공급자 (OpenAI), 모델 (gpt-4o),
# 입력 토큰, 출력 토큰, 지연 시간 등을 추적
end
이러한 방식으로 데이터를 내부 관리하면 다음과 같은 Rails의 표준적인 이점을 누릴 수 있습니다.
-
네이티브 차트:
groupdate와 같은 Gem을 활용하여 일별 토큰 소모량을 시각화하는 프로덕션 관리자 대시보드를 단 몇 분 만에 구축할 수 있습니다. -
비즈니스 컨텍스트:
User.find(1).inferences.sum(:cost)와 같은 쿼리를 통해 특정 고객의 AI 사용 비용을 쉽게 파악하고, ‘파워 유저’를 식별하여 비즈니스 의사 결정에 활용할 수 있습니다. -
성능 모니터링: 모델에 기록된 지연 시간(latency) 데이터를 기반으로 특정 AI 공급자의 응답 시간이 급증할 경우 자동으로 경고를 트리거하여 성능 문제를 조기에 감지하고 대응할 수 있습니다.