What Happens After the Agent Replies: Archiving Prompt History for Reproducible AI Workflows

개요

LLM 기반 서비스에서 생성된 응답 외에 사용자 쿼리, 검색 결과, 시스템 프롬프트, 모델 설정, 중간 도구 호출 등 완전한 실행 추적을 보존하는 프롬프트 아카이빙은 AI 워크플로우의 재현성, 디버깅, 평가 및 개선을 위한 기반이 됩니다.

주요 내용

* 재현성의 어려움: LLM 시스템은 모델 가중치 변경, 프롬프트 템플릿 수정, 검색 결과 변동 등으로 인해 전통적인 소프트웨어와 달리 동일한 입력에도 다른 출력을 생성할 수 있어 재현성이 복잡합니다. AI 시스템에서의 재현성은 비트 단위의 동일한 출력을 보장하는 것이 아니라, 특정 출력을 생성한 정확한 입력을 재구성하고, 동일한 파이프라인을 통해 유사한 결과를 얻으며, 모든 결정 지점을 추적할 수 있음을 의미합니다.
* 아카이빙 대상: 재현성 확보를 위해 최소한 고유 ID, 사용자 정보, 타임스탬프, 원본 사용자 메시지, 해석된 시스템 프롬프트, 모델 설정(이름, 버전, 온도, top-p 등), 모델 응답(텍스트, 토큰 사용량, 지연 시간), 도구/함수 호출 정보(이름, 인자, 결과), 검색 결과(문서, 메타데이터, 관련성 점수), 대화 기록 등 실행 추적 정보와 비용, 오류 분류, 인간 피드백, 환경 태그와 같은 확장 텔레메트리를 기록해야 합니다.
* 데이터 모델 및 스토리지 아키텍처: 프롬프트 아카이빙을 위해 다음과 같은 세 가지 스토리지 계층을 분리하는 하이브리드 스토리지 패턴이 효과적입니다.
1. 객체 스토어 (S3, GCS 등): 원시 추적 데이터를 JSONL 형식으로 저장하여 높은 내구성과 저렴한 비용을 확보합니다.
2. 컬럼 또는 와이드 컬럼 데이터베이스 (PostgreSQL, BigQuery 등): 메타데이터 기반 필터링, 비용 집계, 시간 범위 쿼리를 위한 빠른 조회를 지원합니다.
3. 벡터 스토어: 과거 상호작용 간의 의미론적 검색을 지원하여 유사한 버그 사례를 찾는 데 활용됩니다.
* 스키마 진화 및 불변성: 스키마 변경에 대비하여 트레이스 객체에 버전 필드를 포함하고, 원시 API 응답을 별도 필드로 저장하며, 아카이브된 트레이스는 절대 수정하지 않고 항상 추가만 해야 합니다.
* 비동기식 인gestion 파이프라인: 애플리케이션의 요청 경로를 차단하지 않도록 비동기식 쓰기 패턴(Fire-and-forget with retries, Buffered batching)을 사용하고, 백프레셔 및 흐름 제어를 구현하여 데이터 손실이나 순서 오류를 방지해야 합니다.
* 에이전트 프레임워크 통합: LangChain, LangGraph, CrewAI와 같은 프레임워크를 사용할 경우, LLM 클라이언트 래핑, 프레임워크 콜백 활용, 세션 레벨 구성 등 적절한 추상화 계층에서 계측해야 합니다.
* RAG 특화 처리: 검색 단계와 생성 단계 모두를 기록해야 하며, 각 검색 호출에 대한 쿼리, 임베딩 모델, 벡터 데이터베이스, 원시 결과, 후처리 정보를 저장하고, 생성 추적에서 검색 추적을 참조할 수 있도록 부모-자식 관계를 설정해야 합니다.
* 프롬프트 버전 관리 및 드리프트 감지: 프롬프트 템플릿에 시맨틱 버전을 부여하고, 템플릿 버전, 해시, 해석된 프롬프트를 함께 저장하여 프롬프트 변경과 모델 업데이트로 인한 성능 저하를 구분할 수 있어야 합니다.
* 비용 속성 및 거버넌스: 각 트레이스의 비용을 모델, 토큰 사용량, 시간 창으로 추적하고, ingestion 시점에 비용을 계산하여 저장하면 가격 변경 시에도 재계산이 가능합니다.
* PII 및 데이터 거주지: 민감한 데이터는 필드 레벨 암호화, 토큰화 또는 해싱을 적용하고, 지리적 제약을 준수하는 스토리지 정책을 사용하며, 자동 보존 정책 및 데이터 삭제 엔드포인트를 구현해야 합니다.
* 평가 및 재현: 완전한 추적 데이터를 활용하여 오프라인 평가, 프롬프트 회귀 테스트, 대화형 디버깅과 같은 기능을 구현할 수 있습니다.

시사점

프롬프트 아카이빙은 LLM 기반 시스템의 신뢰성, 유지보수성, 지속적인 개선을 위한 필수적인 엔지니어링 관행으로, 재현 가능한 AI 워크플로우 구축과 운영 효율성 증대에 기여합니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions