LLM 비용 절감을 위한 질문 난이도별 모델 라우팅
목차
AI 집사의 모든 응답에 최상위 모델을 고정해 두었더니 일상 잡담에도 가장 비싼 모델이 호출되고 있었습니다. 질문을 trivial, normal, deep 세 단계로 분류해 모델 티어를 나눴고, normal 쿼리 하나당 약 40%, 전체 API 비용으로는 약 20~28%를 아낄 것으로 예상했습니다. 다만 무조건 싼 모델로 내리면 품질이 깨지는 구간이 있어서, 감정·민감 대화는 예외로 빼야 했습니다.
토큰 내역을 보다가 멈칫했습니다
저는 Jarvis라는 AI 집사를 혼자 만들어서 24시간 돌립니다. 처음엔 단순하게 생각했습니다. 기왕이면 제일 똑똑한 모델로 답하게 하자. 그래서 모든 응답을 최상위 모델(Opus급)에 고정해 뒀습니다.
한동안 잘 썼는데, 어느 날 토큰 사용 내역을 들여다보다 멈칫했습니다. “오늘 일정 뭐 있어?”, “안녕”, “응 고마워” 같은 한 줄짜리에도 가장 비싼 모델이 풀로 돌고 있었습니다. 이런 건 훨씬 가벼운 모델로도 충분합니다. 식당에서 물 한 잔 따르는 데 수석 셰프를 부른 셈이었습니다.
질문 난이도는 같지 않았습니다
제가 깔고 있던 가정은 “비싼 모델이면 항상 더 낫다”였습니다. 같은 질문이면 더 좋은 모델이 더 잘 답하니 틀린 말은 아닙니다. 다만 모든 질문이 같은 난이도가 아니었습니다. 실제로 들여다보니 세 종류로 갈렸습니다.
- 사소한 것: “응”, “고마워”, “지금 몇 시야” 같은 질문은 누가 답해도 똑같습니다
- 보통: “오늘 일정 정리해줘”, “이거 어떻게 생각해”는 무난한 모델로 충분합니다
- 어려운 것: 코드 리뷰, 아키텍처 설계, 장애 원인 분석에서만 최상위 모델이 값을 합니다
앞의 두 칸에 최상위 모델을 쓰면 품질은 거의 오르지 않는데 비용만 몇 배가 됩니다.
질문을 분류해서 모델을 갈아 끼웠습니다
질문을 받자마자 난이도로 분류하고, 그에 맞는 모델 티어로 보내기로 했습니다. 라우팅 규칙은 이렇게 잡았습니다.
deep → 최상위 모델 유지 (품질 보장)
normal → 중간 모델로 합리적 다운 (비용 최적화)
trivial → 가장 가벼운 모델 (비용 절감)분류 기준은 무겁지 않게 만들었습니다. deep은 코드 블록이 있거나 리뷰·설계·아키텍처·트레이드오프·디버그·최적화·장애·성능 같은 키워드가 잡히는 질문입니다. trivial은 20자 미만이면서 yes/no·숫자·상태 요약 같은 짧은 패턴이고, normal은 나머지 전부입니다. 어려운 질문에서 품질을 깎으면 안 되니 deep만 비싼 모델을 유지하고 나머지에서 아끼는 방식입니다.
비용 차이를 따져 보면, 일상(normal) 응답 하나를 최상위 모델 대신 중간 모델로 처리할 때 출력 비용이 대략 60% 수준으로 떨어집니다. 응답당 약 40% 절감입니다. 제 사용 패턴을 보니 전체 대화의 절반 이상이 normal·trivial이었고, 그래서 전체 API 비용으로는 약 20~28% 절감이 예상됐습니다.
숫자만 보면 응답 하나에 몇십 원 차이라 별것 아닌 것 같지만, 24시간 돌아가는 봇이라 쌓입니다. 한 달이면 무시하기 어렵습니다.
싸게 내렸다가 한 번 데였습니다
중간에 한 번 크게 데였습니다. “normal은 무조건 중간 모델로 내린다”를 곧이곧대로 적용했더니 감정적인 대화에서 품질이 뚝 떨어졌습니다. 힘든 일을 털어놓는 메시지에까지 기계적으로 싼 모델이 배정됐고, 답변이 영혼 없이 건조해졌습니다. 비용은 아꼈지만 집사로서는 빵점이었습니다.
그래서 규칙에 예외를 넣었습니다. 길이나 키워드로는 “보통”으로 분류되더라도 감정·민감한 맥락은 품질을 지켜야 하는 구간으로 빼 뒀습니다. 어디까지 깎아도 되는지의 선을 같이 정해 두지 않으면, 비용 그래프가 내려가는 것을 보다가 정작 써야 할 자리에서 봇이 무성의해지는 것을 한참 뒤에야 알게 됩니다. 저는 사용자가 저 혼자라 며칠 만에 알아챘지만, 실제 서비스였다면 더 늦었을 겁니다.
마무리
제일 똑똑한 모델을 모든 자리에 박아 둔 것은 타협하지 않은 결정이 아니라 생각을 안 한 것에 가까웠습니다. 백엔드를 9년 했으면서 DB 사양은 트래픽을 보고 정하고 캐시는 패턴을 보고 걸면서, LLM에는 한 줄로 “다 최상위”를 박아 뒀습니다.
20~28%는 사용 패턴으로 계산한 예상치이므로, 다음에는 모델별·태스크별 비용을 따로 집계해 실측값으로 바꿔 볼 생각입니다. 새 모델 티어가 나오면 이번에는 난이도부터 나눠 놓고 시작하겠습니다.
참고 :
