의사결정 모델이 수동으로 작성된 라우팅 규칙을 대체할 수 있을까? 3,080 메시지 실험
요약
본 기사는 의사결정 모델이 수동으로 작성된 라우팅 규칙을 대체할 수 있는지 실험한 내용을 다룹니다. 3,080개 메시지 테스트 세트를 기반으로 '규칙', 'JEV', 'LLM', '하이브리드' 네 가지 방법을 비교했습니다. 그 결과 JEV가 기존 규칙보다 우수하고 LLM보다 빠르지만, 비용 측면에서는 LLM이 유리하다는 점을 확인했습니다.
핵심 포인트
- JEV는 수동 규칙 대비 성능이 뛰어나며 LLM보다 9배 빠른 응답 속도를 보였습니다.
- LLM은 비용 효율성이 높았으나, JEV가 전반적인 선택 정확도에서 우위를 차지했습니다.
- 규칙과 JEV를 결합한 하이브리드 방식이 잘못된 자동 선택을 줄이는 데 도움이 되었습니다.
- 본 실험은 언어를 액션으로 해석하는 것이 목표이며, 일반적인 엔드포인트 대체는 아닙니다.
한 고객이 "제 카드가 아직 도착하지 않았어요."라고 글을 씁니다. 백엔드 어딘가에서 이 문장은 구체적인 선택(existing delivery를 추적하거나, 배송 시간을 설명하거나, 다른 카드를 주문하는 것)으로 변환되어야 합니다.
저는 의사결정 모델이 이러한 선택을 내리는 수동 작성 로직을 대체할 수 있는지 테스트하고 싶었습니다.
그래서 저는 switchless라는 가상의 은행 백엔드를 구축했습니다. 이 시스템은 77개의 액션, 네 개의 교체 가능한 디스패처를 가지고 있으며, 3,080 메시지 규모의 Banking77 테스트 세트를 기반으로 평가되었습니다.
결과는 유용했지만, 원래 가설만큼 깔끔하지는 않았습니다. JEV가 저희 규칙보다 우수했으며 LLM보다 약 9배 빠르게 응답했습니다. 다만 LLM이 더 저렴했습니다. 동일한 수의 추천 건수를 기준으로 했을 때, 규칙과 JEV를 결합하는 것이 탐색적 비교에서 잘못된 자동 선택을 적게 만들었지만, 여전히 11개 중 약 하나는 틀린 선택을 남겼습니다.
면책 조항: 본 실험은 독립적인 연구입니다. 저는 TypeSafe와 아무런 관계가 없으며, 이 작업에 대해 그들로부터 크레딧, 자금 지원 또는 기타 지원을 받지 않았습니다.
대체하고 싶었던 백엔드 부분
이 실험의 목적은 언어를 액션으로 해석하는 것입니다. 게이트웨이의 엔드포인트 테이블, 인증 확인(authentication checks), 권한(permissions), 로드 밸런싱을 대체하는 것이 아닙니다.
POST /cards/123/freeze와 같은 명시적인 요청의 경우, 목적지는 이미 알려져 있습니다. 하지만 "제 카드를 찾을 수 없어요"라는 말의 경우에는 애플리케이션이 먼저 요청을 해석해야 합니다.
가상의 제품인 Kestrel Bank는 11개의 서비스 모듈과 77개의 구현된 핸들러를 가지고 있습니다. 일부는 정보를 반환하고, 다른 일부는 인메모리 은행의 상태를 변경합니다. 이들은 독립적으로 배포되는 마이크로서비스(microservices)가 아니라 하나의 애플리케이션 내부에서 실행됩니다.
Customer message
|
v
...
핸들러와 게이트웨이를 공유함으로써, 나머지 애플리케이션을 재구축하지 않고도 셀렉터(selector)를 변경할 수 있었습니다.
동일한 선택을 내리는 네 가지 방법
규칙 (Rules): 8단계에 걸쳐 개발된 순서가 지정된 키워드 및 정규식 디스패처입니다. 일치하는 규칙이 없으면 보류합니다.
JEV: TypeSafe의 jev-1.13.0을 사용하여 77개의 액션 ID와 그에 대한 한 줄 설명을 기반으로 선택하도록 요청했습니다.
LLM: OpenAI의 gpt-6-luna를 사용했으며, 동일한 카탈로그와 고객 메시지를 제공하고 구조화된 출력 및 추론 기능을 비활성화했습니다.
하이브리드(Hybrid): 두 규칙과 JEV 모두를 실행합니다. 이들이 동의할 경우 그들의 선택을 수용합니다. 의견이 불일치할 경우, JEV의 신뢰도가 최소 0.9 이상인 경우에만 수용하고 그렇지 않으면 기권합니다.
두 모델 라우터는 요청 시 예시 메시지를 받지 못했습니다. 여기서 “제로샷(zero-shot)”은 이러한 설정을 설명하며, 어느 제공업체의 학습 데이터가 이 공개 벤치마크를 포함했는지 여부를 확립하지는 않습니다.
규칙들은 AI 코딩 어시스턴트가 작성하고 프로젝트의 일환으로 검토되었습니다. 이것이 중요합니다: 이것은 전문 팀이 구축할 수 있는 최고의 규칙 시스템과 비교한 것이 아니라, 공개된 하나의 구현체와 비교한 것입니다.
실험 측정 방법
Banking77에는 77개의 의도(intent)로 레이블링된 짧은 은행 지원 메시지가 포함되어 있습니다. 각 의도는 Kestrel Bank의 하나의 액션에 매핑됩니다.
저희는 1,000개의 학습 메시지를 별도의 측정 샘플로 보류하고 나머지 9,003개를 규칙 개발에 사용했습니다. 하이브리드 전략과 임계값을 선택하기 위해 규칙 개발 풀에서 추출한 다른 1,000개 메시지 샘플을 사용했습니다. 이는 보류된 측정 샘플과는 분리되었지만, 규칙 개발에 사용 가능한 데이터와는 중복되었습니다. 최종 테스트 평가는 모든 3,080개의 테스트 메시지를 사용했습니다. 규칙, JEV, 하이브리드 설정은 이전에 고정되었고(frozen), LLM은 별도의 실행에서 재조정을 거치지 않고 나중에 추가되었습니다.
주요 측정 지표는 정확한 액션 정확도(exact-action accuracy)였습니다. 메시지를 올바른 서비스로 보내더라도 잘못된 핸들러를 선택하면 정답으로 간주되지 않았습니다. 기권은 전체 정확도의 누락(misses)으로 계산되며 별도로 보고됩니다.
결과
| 측정 항목 | 규칙 (Rules) | JEV | LLM | Hybrid |
|---|---|---|---|---|
| Exact-action accuracy | 65.5% | 80.9% | 81.5% | 74.1% |
| ... | ||||
| These are recorded-run measurements. API cost excludes infrastructure and human work. The hybrid's line count includes both underlying routers and its combining logic; the model integrations don't include provider-side model complexity. |

JEV는 11개 서비스 모듈 각각에서 이 규칙 구현보다 성능이 우수했습니다.
더 많은 규칙이 도움이 되었지만, 향상 폭은 작아졌습니다
1,000 메시지 홀드아웃 샘플(held-out sample)에서 처음 137줄의 규칙은 39.4%의 정확도를 기록했습니다. 380줄에서는 정확도가 55.2%였습니다. 최종 772줄 버전은 63.0%에 도달했습니다.
후기 단계에서는 이전 규칙들을 수정하는 경우가 많았습니다. 구체적인 예로, cheque|check 패턴은
정확도는 근접했습니다. LLM이 관찰한 우위는 0.65 퍼센트 포인트였으며, 쌍별 95% 신뢰 구간은 −0.38에서 +1.68 포인트였습니다. 이 테스트 분할에서는 차이가 감지되지 않았지만, 이것이 동등성을 증명하는 것은 아닙니다. 별도의 1,000개 메시지 홀드아웃 샘플에서는 LLM이 2.20 포인트 앞섰으며, 구간은 +0.19에서 +4.21이었습니다.
가격 결과는 원래의 기대를 뒤엎었습니다. LLM 비용은 약 3분의 1 수준이었습니다. 반복적인 액션 카탈로그는 캐시된 입력 가격 덕분에 이점을 얻었습니다. 특정 워크로드 하에서 저비용 생성 모델보다 저렴한 분류가 자동으로 더 저렴하지는 않습니다.
JEV는 jev-1.13.0에 고정되었고, LLM은 고정된 스냅샷이 없어 평가 분할마다 한 번씩 실행되었습니다. 고정된 200개 메시지 테스트 하위 집합에서 두 번의 JEV 반복 실행은 원래 실행 대비 선택 항목을 각각 2.0%와 0.5% 변경시켰으며, 옵션 순서를 역전시키자 5.0%가 변경되었습니다.
이 구간들은 메시지에 대한 불확실성을 설명합니다. 이들은 모델 드리프트(model drift), 다른 네트워크 조건, 또는 반복적인 API 실행 전반의 변동성은 포함하지 않습니다.

지연 시간(Latency)은 로그 스케일을 사용합니다. 관찰된 JEV–LLM 정확도 차이는 쌍별 95% 신뢰 구간 내에 있었습니다.
하이브리드가 실제로 제공하는 것 (What the hybrid actually buys)
하이브리드는 2,516개 메시지에 응답했으며 564개를 참조했습니다. 응답한 메시지 중 233개가 부정확했습니다: 81.7% 커버리지에서 90.7%의 정확도를 보였습니다.
이를 단일 모델 라우터와 비교하기 위해, 분석은 또한 각 모델의 가장 신뢰도가 낮은 564개 메시지를 참조했습니다. 신뢰도 동점(Confidence ties)은 데이터셋 인덱스로 해결되었으며, 다른 동점 순서에 대한 민감도 계산이 이루어졌습니다.
| 정책 | 추천 건수 | 답변 정확도 (95% CI) | 잘못된 자동 선택 건수 |
|---|---|---|---|
| Hybrid | 564 | 90.7% (89.5–91.8) | 233 |
| ... |
구간은 각 정책의 답변 정확도에 대한 95% Wilson 구간이며, 선택된 메시지에 조건화됩니다. 이는 테스트 세트에서 잘라내는 지점을 선택한 것을 고려하지 않습니다. 또한 정책 간의 차이에 대한 구간이 아닙니다.
이는 동일한 추천 건수에서의 탐색적 비교입니다. 모델의 절단점(cutoffs)은 개수를 맞추기 위해 테스트 세트에서 선택되었고, 하이브리드 임계값(hybrid threshold)은 사전에 고정되었습니다. 이 정책들은 서로 다른 메시지를 참조하며, 이는 다른 양의 인력 노력이 필요할 수 있음을 의미합니다. 경계 타이(boundary ties)를 재배열하는 것은 LLM의 답변 정확도를 87.3%에서 88.1% 사이로 이동시켰을 뿐이며, 관찰된 순서 배열을 뒤집지는 못했습니다.
이 비교에서 하이브리드가 더 적은 잘못된 자동 선택을 했습니다. 이 관찰된 차이가 미래 트래픽에 대한 우월성을 입증하는 것은 아닙니다. 또한 모든 규칙을 유지하고 모든 메시지에 대해 JEV를 호출했습니다. 이는 개선이라기보다는 상충 관계(tradeoff)입니다.

JEV의 임계값 스윕(threshold sweep)은 탐색적이며 테스트 분할을 사용합니다. 추천 건수는 기권(abstentions)입니다. 인간의 해결 및 실제 검토 노력은 측정되지 않았습니다.
올바른 선택과 안전한 실행은 다른 문제입니다
게이트웨이는 선택된 핸들러를 즉시 실행합니다. 20개의 핸들러는 카드 차단, 클레임 개설 또는 보류 중인 이체 취소 등 은행 상태를 변경할 수 있습니다.
하이브리드의 233개 잘못된 선택 중 32개가 상태를 변경할 수 있는 핸들러를 선택했습니다. 이것이 32개의 관찰된 유해한 행동을 의미하는 것은 아닙니다. 핸들러가 무언가를 변경하는지는 고객의 계정 상태에 따라 달라지며, 평가 로그는 실제 고객 결과가 아닌 예측을 기록합니다.
마찬가지로, '보류(abstention)'는 오직 에스컬레이션 응답이나 제안만을 생성합니다. 저희는 인간이 이를 성공적으로 해결하는 사례를 측정하지 못했습니다.
이러한 차이점은 제가 프로젝트를 설명하는 방식 자체를 바꾸었습니다. 그 결과들은 일부 수동으로 작성된 의도 선택(intent-selection) 로직을 대체할 수 있음을 보여줍니다. 하지만 이로 인해 발생하는 행동들이 추가적인 확인이나 승인 없이 실행하기에 안전하다는 것을 입증하지는 못합니다.

신뢰도가 높을수록 정확도도 높았지만, 올바름(correctness)을 보장하지는 않았습니다. 빈(Bins)은 최소 20개의 메시지를 포함하며, 의도 선택의 검정(calibration)이 실행의 안전성을 입증하는 것은 아닙니다.
다른 연구와의 연관성
Glean의 JEV 평가는 이 실험을 수행하도록 동기를 부여했습니다. 긍정적인 전문가 전이(expert transfers)가 있는 40개 사례에서, 기존 LLM 경로 대비 평균 항목당 8.1배의 속도 향상을 보고했습니다. 다른 작업에 대한 결과들은 혼재되어 있었습니다: JEV는 Glean의 프로덕션 리랭커를 대체하지 못했습니다. 이 속도 향상은 서로 다른 작업의 지원 컨텍스트와 작은 지연 시간 샘플에서 비롯된 것입니다.
제가 찾은 가장 근접한 비교 대상은 Lyzr의 Banking77 평가입니다: 이 평가는 770개 메시지에서 80.1%의 제로샷 JEV 정확도를 보고했으며, 이는 저희의 80.9%에 근접합니다. 또한 의도당 10개의 레이블링된 예제를 사용한 임베딩 분류기(embedding classifier)에서는 87.5%, 전체 레이블링된 세트를 기반으로 학습된 로지스틱 회귀(logistic regression)에서는 93.9%를 보고했습니다. 이 측정치들은 직접적으로 상호 교환 가능한 수치는 아니지만, 이 프로젝트의 중요한 격차를 드러냅니다: 저희는 학습된 분류기나 임베딩 기준선(baseline)을 테스트하지 않았습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기