JevCode / 패턴

신뢰도 라우팅

신뢰도를 두 번째 의사결정 축으로 사용하세요. 답변은 '무엇인지'를 알려주고, 신뢰도는 '실행할지 여부'를 알려줍니다.

이 문서는 zh-CN에서 기계 번역되었으며 교정되지 않았습니다. 빠른 참고용으로만 사용하세요.

소스: docs.typesafe.ai/patterns/confidence-routingconfidenceroutingsafety
Confidence routing

이 패턴이 해결하는 문제

정답과 신뢰도는 서로 독립적인 정보 차원입니다. 정답만으로 분기를 결정한다는 것은 모델이 제공한 정보의 절반을捨棄하는 것과 같습니다.

신뢰도 라우팅의 접근 방식은 다음과 같습니다. 먼저 정답을 확인한 후, 해당 정답을 실행할 만큼 충분히 신뢰할 수 있는지 여부를 신뢰도를 통해 결정합니다. 이는 신뢰할 수 있고 안전한 시스템을 구축하는 기초가 됩니다.

예시: 음성 기반 은행 명령어

음성으로 계좌를 조작할 수 있는 음성 은행 인터페이스를 구축한다고 가정해 봅시다. 의도 인식 신뢰도가 높을수록 좋지만, 동작의 위험도가 다르므로 서로 다른 신뢰도 임계값이 필요합니다.

1단계: 사용자 의도 파악

Choice 호출을 통해 의도를 얻으며, 후보에는 check_balance(잔액 조회), approve_transfer(송금 승인) 등이 포함됩니다.

2단계: 신뢰도에 따른 라우팅

action = response.answers["intent"]

# 모든 동작에서 신뢰도가 0.6 미만이면 상담원으로 라우팅
if action.confidence < 0.6:
    route_to_support_agent(account_id)

elif action.choice == "check_balance":
    # 저위험. 신뢰도 0.6이면 충분함.
    show_balance(account_id)

elif action.choice == "approve_transfer":
    if action.confidence > 0.85:
        # 고위험이지만 신뢰도도 높음. 실행.
        ...
    else:
        # 고위험이며 신뢰도는 중간 수준. 먼저 확인 요청.
        ask_user_to_confirm(account_id)

왜 임계값을 단계별로 설정해야 하는가

위 코드에 나타난 세 가지 임계값을 살펴봅시다.

임계값 역할
< 0.6 전체 차단 모델이 불확실하다고 스스로 보고할 경우, 어떤 동작도 실행하지 않음
check_balance 임계값 0.6 읽기 전용 작업으로, 오류 발생 시 복구가 가능함
approve_transfer 임계값 0.85 자금이 관여되며, 오류 발생 시 되돌릴 수 없음

이는 「위험도에 따라 임계값을 조정하는 것」의 엔지니어링적 표현입니다. 전체 시스템에서 단일 통일 임계값만 사용한다면, 저위험 동작에서는 사용자를 과도하게 방해하거나, 고위험 동작에서는 충분히 신중하지 못할 수 있습니다.

설계 핵심 사항

먼저 하드 코어 하한선을 설정한 후, 동작별 임계값을 설정하십시오. 하드 코어 하한선(예: 0.6)은 모델이 스스로 ’정말 불확실하다’고 보고하는 것을 차단하는 안전망 역할을 합니다. 동작별 임계값은 이 하한선 위에서 위험도에 따라 단계별로 구분됩니다.

임계값을 명시적인 설정으로 관리하고, 흩어진 마법 숫자(Magic Number)가 되지 않도록 하십시오. 각 동작의 임계값을 한 곳에 집중하여 정의하면 감사와 조정이 용이합니다. 비즈니스 담당자가 “왜 이 송금에 수동 확인이 필요한가?“라고 물을 때, 구체적인 숫자를 가리켜 설명할 수 있어야 합니다.

신뢰도로 비즈니스 검증을 대체하지 마십시오. 신뢰도는 모델의 자기 평가일 뿐, 비즈니스 규칙을 대체할 수 없습니다. 금액 상한선, 권한 확인과 같은 결정적 규칙은 여전히 코드에 작성해야 합니다.

실제 데이터를 사용하여 임계값을 보정하십시오. 공식적으로 명시된 대로, 올바른 임계값은 도메인과 사용 사례에서 모델의 성능에 따라 달라집니다. 보수적인 임계값으로 시작하여 자체 데이터로 테스트하고, 관찰 결과를 바탕으로 조정하십시오.

사용해서는 안 되는 경우

어떤 결정이 잘못되어도 결과가 없는 경우(예: 로그에 태그 붙이기)에는 신뢰도 임계값을 추가하면 복잡도와 수동 비용만 증가합니다. 신뢰도 라우팅의 가치는 결정의 비가역성 정도에 비례합니다.

관련

  • 신뢰도 — confidence와 probabilities의 관계
  • 의도 라우팅 — 일반적으로 신뢰도 라우팅과 함께 사용됨
  • 복합 점수 — 정렬 시나리오에서의 신뢰도 처리