LLM 분류기를 12줄짜리 if문으로 교체했더니 클라이언트가 더 좋아함
i replaced an LLM classifier with twelve lines of if-statements and the client was happier
핵심 요약
LLM으로 처리하던 단순 분류 작업을 키워드 기반의 결정론적 로직으로 교체하여 정확도와 비용 효율을 모두 잡은 사례입니다.
- 분류 작업 최적화 — LLM이 처리하던 단순 티켓 분류를 키워드 기반 if문으로 대체함
- 결정론적 로직 도입 — 예측 불가능한 LLM의 오류를 줄이고 분류 근거를 명확히 설명함
- 비용 절감 효과 — LLM 호출 빈도를 줄여 운영 비용을 낮추고 효율성을 높임
- 도구 선택의 신중함 — 모든 단계에 LLM이 필요한지 고민하고 적재적소에 활용함
클라이언트의 문의를 분류하는 에이전트를 운영하고 있었음. 티켓이 들어오면 에이전트가 내용을 읽고 약 6개의 버킷 중 하나로 분류해서 담당자에게 전달하는 방식이었지. 전형적인 LLM 작업이라고 생각했음. 데모 때는 아주 잘 작동했고, 운영 환경에서도 대부분의 날은 문제없었음.
문제는 가끔 발생하는 오류였음. 일주일에 한두 번 정도는 엉뚱한 버킷에 티켓을 넣었는데, 아주 자신 있게 틀리니까 아무도 눈치채지 못했고 결국 티켓은 잘못된 큐에 방치되어 썩어가고 있었음. 실제 티켓들을 살펴보니 90% 정도는 '환불', '다운', '송장' 같은 명확한 단어 하나둘만 있으면 분류가 가능한 수준이었음. 키워드 규칙으로 완벽하게 처리할 수 있는 일을 하려고 LLM 비용을 지불하면서 무작위적인 오류까지 감수하고 있었던 거임.
그래서 핵심 경로에서 모델을 걷어냈음. 이제는 단순한 규칙들이 명확한 다수를 결정론적으로 처리하고, LLM은 어떤 규칙에도 해당하지 않는 소수의 경우에만 투입되어 제 몫을 다하고 있음. 잘못된 경로로 가는 티켓도 줄었고, 비용도 훨씬 저렴해졌으며, 무엇보다 클라이언트가 기대했던 것 이상으로 특정 티켓이 왜 그곳으로 분류되었는지 정확히 설명할 수 있게 되었음.
난 LLM을 반대하는 게 아님. 매일 LLM으로 개발하고 있으니까. 하지만 이제는 모든 노드에서 이 단계가 정말로 '생각'이 필요한지, 아니면 그냥 흥미로운 도구라서 모델을 가져다 쓴 건지 자문하기 시작했음. 여러분은 어디에서 모델을 다시 걷어냈고, 그렇게 해서 만족스러웠던 적이 있음?

