LLM을 Rails 워크플로우에 통합하는 것은 느리고 예측 불가능한 분산 트랜잭션을 관리하는 과정입니다.
1. 상태 머신 패턴
AI는 환각, 타임아웃 등으로 실패할 수 있습니다. pending, processing, completed, failed, flagged와 같은 명확한 상태를 추적하는 상태 머신 패턴이 필수적이며, 이는 복원력과 재시도를 가능하게 합니다.
2. 주요 솔루션 구성 요소
성공적인 AI 백그라운드 작업 통합을 위해 다음이 필요합니다.
-
게이트웨이 인터페이스: API 호출 캡슐화, AI 공급자 교체 용이.
-
코드화된 프롬프트:
AiBase상속 Ruby 객체로 프롬프트 정의. -
멱등성 보장: 작업 재시도 시 불필요한 작업 방지.
-
Human-in-the-Loop UI: AI 생성 콘텐츠 검토 및 확인 뷰.
3. 의미론적 호출 및 작업 객체
컨트롤러 액션이나 모델 콜백을 통해 작업을 트리거하며, DescribeImageAttachmentJob은 queue_as, retry_on, discard_on으로 견고하게 설계됩니다. 이 작업은 이미지 준비, 게이트웨이 서비스 호출, LLM 응답 파싱 및 원본 레코드 업데이트를 수행하며, 오류 처리가 필수적입니다.
4. 몇 가지 관찰
-
이미지 최적화: AI 전송 전 이미지 축소로 처리 속도 향상.
-
로깅: 백그라운드 작업 문제 해결을 위한 상세 로깅 중요.
-
소프트 실패 처리: 200 OK 응답 내 오류성 내용도 오류로 처리.
-
JSON 정제: AI의 유효하지 않거나 불완전한 JSON 응답 처리.