해외출장 정산 증빙 대사 에이전트 개발
항공비·숙박비·통신비 등 해외출장 비용 증빙을 사규 문맥과 대조해 자동으로 대사하는 LLM 에이전트
기간: 2026.01 - 2026.08 · 소속: 현대오토에버 비전AI기술팀 · 기여도: 40% (팀 프로젝트)
배경
임직원의 해외 출장 중 발생한 비용(항공비, 숙박비, 통신비 등)을 정산할 때, 각 항목이 실제 사규에 부합하는 지출인지 사람이 증빙 문서를 읽고 판단해야 했습니다. 이 판단 과정을 자동화하는 에이전트를 설계·개발했습니다.
아키텍처
증빙 유형은 항공비, 숙박비, 통신비 등으로 다양하고, 단순히 금액을 확인하는 것을 넘어 사규에 부합하는 지출인지까지 판단해야 했기 때문에 단일 추출 로직으로는 처리할 수 없었습니다. LangChain과 LangGraph로 다음 단계를 나눈 워크플로우를 구성했습니다.
- 증빙 유형 분류
- 항목(금액·기간 등) 추출
- 사규 문맥 대조
- 판정 근거 생성
서비스는 FastAPI로 구현해 쿠버네티스 클러스터에 배포하고, ArgoCD 기반 GitOps로 배포를 자동화했습니다.
비용·지연 최적화
초기 구현에서는 모든 단계를 LLM에 맡겨 정확도는 확보했지만 호출 수가 그대로 비용과 지연으로 이어졌습니다. 실행 로그를 되짚어 보니 상당수 단계는 판단이 아니라 형식 검증에 가까웠습니다. 증빙 유형 판별이나 금액·기간 정합성 확인처럼 결정 가능한 구간은 규칙 기반으로 내리고, 사규 해석이 필요하거나 정확한 값을 추출해야 하는 곳에만 LLM을 남기는 방향으로 호출을 단계적으로 줄였습니다.
그 결과 정확도를 떨어뜨리지 않으면서 비용을 낮추는 구조를 만들었고, 실제 해외출장 정산 200여 건을 대상으로 95%의 대사 정확도를 확인했습니다.
관측 가능성(Observability)
에이전트가 왜 그런 판정을 내렸는지 추적할 수단으로 Langfuse를 사내 프라이빗 클라우드에 자체 호스팅했습니다. 트레이스에 사내 문서와 정산 내역이 담기는 만큼 외부 SaaS는 선택지가 아니었습니다.
사내 보안성 검토에서 Langfuse의 인증 세션 만료 정책(동일 계정으로 다른 기기에서 로그인해도 기존 세션이 만료되지 않는 구조)이 지적되었습니다. Langfuse 본체를 포크해 인증 로직을 수정하는 대신, 시스템 접근 전에 JWT 토큰과 세션 조건을 검사하는 작은 Go 서버를 앞단에 두어 인증 통제 책임을 애플리케이션 밖으로 분리했습니다. 결과적으로 보안성 검토를 통과했고, Langfuse 본체는 원본 버전 그대로 유지해 이후 업그레이드에도 제약이 생기지 않았습니다.
기술 스택
- LLM/에이전트: LangChain, LangGraph
- 서비스: FastAPI
- 인프라/배포: Kubernetes, ArgoCD (GitOps)
- 관측: Langfuse (자체 호스팅)