Kinney Drugs의 AI 봇이 지루한 이유로 실패한 사건
요약
Kinney Drugs의 AI 어시스턴트 'Burt'가 처방전 오류와 개인정보 문제를 일으킨 사례를 분석합니다. 이는 모델의 성능 문제가 아니라, 결정론적 경로(fallback)를 제거하고 검증 없이 시스템에 데이터를 기록한 아키텍처 설계의 실패임을 지적합니다.
핵심 포인트
- AI 도입 시 기존의 결정론적 경로(키패드 등)를 반드시 유지해야 함
- 확률적 모델의 출력을 시스템 기록에 직접 쓰지 말고 명시적 확인 과정을 거칠 것
- 신뢰도가 낮은 의도는 자동으로 폴백(fallback) 경로로 라우팅해야 함
- 사용자가 언제든 상담원이나 메뉴로 연결될 수 있는 탈출구를 제공할 것
제가 이번 달에 읽은 가장 교훈적인 AI 고객 서비스 실패 (AI customer service failure) 사례는 모델의 문제가 전혀 아니었습니다. 그것은 아키텍처 (architecture) 문제이며, 제가 스리랑카의 소규모 제품들에서 끊임없이 목격하는 문제입니다.
VTDigger는 2026년 7월 29일, Kinney Drugs(버몬트와 뉴욕의 약국 체인)가 2026년 5월에 처방전 재발급을 위한 "Burt"라는 이름의 AI 어시스턴트를 도입했다고 보도했습니다. 환자들은 지연, 잘못된 복용량, 그리고 새로운 개인정보 보호 정책을 마주했습니다. 저는 왜 이런 일이 발생했는지 이야기하고 싶습니다. 왜냐하면 해결책은 저렴하지만 아무도 적용하지 않기 때문입니다.
🔍 공학적 관점에서 실제로 무엇이 고장 났는가
이야기를 증상별로 분해해 보면, 그 모든 것들은 미스터리가 아니라 이미 알려진 실패 유형입니다:
| 보고된 증상 | 실제 정체 | 위치 |
|---|---|---|
| 잘못된 복용량 주문 | 시스템 기록(system of record)에 기록된 검증되지 않은 모델 출력값 | 쓰기 경로 (Write path) |
| ... |
이 중 그 어떤 것도 더 똑똑한 모델을 필요로 하지 않습니다. 5개 중 4개는 스테이징 환경 (staging environment)과 실제 계정 이름을 사용한 오후 한나절의 적대적 테스트 (adversarial testing)를 통해 발견되었을 것입니다.
핵심 요점: 봇이 환각 (hallucination)을 일으켜 잘못된 복용량을 주문한 것이 아닙니다. 누군가가 확인 단계 없이 확률적 구성 요소 (probabilistic component)가 시스템 기록 (system of record)에 직접 쓰도록 허용했습니다. 그것은 설계 결정 (design decision)이며, 되돌릴 수 있습니다.
⚡ 실제 버그: 그들은 결정론적 경로 (deterministic path)를 삭제했다
기사에서 저를 멈추게 한 세부 사항은 한 환자가 키패드를 사용할 수 있는 옵션이 없다고 말한 부분이었습니다. 봇과 대화하거나, 아니면 처방전을 받지 못하거나 둘 중 하나였습니다.
그것이 전체 실패를 한 문장으로 요약한 것입니다. 기존 시스템은 **DTMF 전화 트리 (DTMF phone tree)**였습니다. 투박하고, 느리며, 완전히 결정론적 (deterministic)이었습니다. 1번을 누르면 재발급이 됩니다. 이는 강한 억양을 가진 사람, 상태가 좋지 않은 전화선, 청력 손실이 있는 사람, 그리고 인내심이 없는 사람들에게도 작동했습니다. AI는 그 경로의 '앞'에 추가된 것이 아니라, 그 경로를 '대체하여' 추가되었습니다.
올바른 형태는 지루합니다:
- AI가 해피 패스 (happy path)를 처리합니다. 자연어 입력, 의도 (intent) 출력.
- 결정론적 폴백 (Deterministic fallback)은 영원히 살아있어야 합니다. 키패드, 양식 (form), WhatsApp 메뉴 등 기존 방식이 무엇이었든 간에, 절대 삭제하지 마세요.
- 신뢰도가 낮은 의도 (low-confidence intents)는 자동으로 폴백으로 라우팅됩니다. 사용자에게 봇이 실패하고 있다는 사실을 인지하게 만들지 마세요.
- 시스템 기록 (system of record)에 대한 모든 쓰기 작업은 명시적인 확인이 필요합니다. "X를 500mg 요청하셨는데, 맞습니까?"
- 하나의 탈출 문구는 항상 작동해야 합니다. "상담원 (Agent)." "상담원 (Operator)." "메뉴 (Menu)."
팀들이 어기는 규칙은 바로 2번입니다. 두 가지 경로를 모두 유지하는 것은 매력적이지 않고, AI 도입의 전체 비즈니스 케이스 자체가 비용 절감이기 때문입니다. 하지만 폴백을 제거한다고 해서 비용이 절감되는 것은 아닙니다. 비용 절감은 트래픽의 80%가 더 이상 폴백을 건드리지 않게 될 때 발생합니다.
🔐 당신의 개인정보 보호정책은 조용히 벤더의 것이 됩니다
이야기의 나머지 절반은 지연 문제보다 더 중요합니다. 해당 체인은 고객의 건강 정보가 AI 도구에 사용될 수 있음을 공개하기 위해 개인정보 보호정책을 업데이트했으며, Synerio라는 이름의 텍사스 기업인 벤더는 해당 데이터를 보유하는 새로운 제3자가 되었습니다.
이것이 바로 개발자들이 과소평가하는 부분입니다. AI 기능을 추가하는 것은 종종 **데이터 처리자 (data processor)**를 추가하는 것이며, 이는 코드가 거의 바뀌지 않더라도 법적 노출 범위 (legal surface)를 변화시킵니다.
만약 사용자 데이터를 호스팅된 모델 API로 전송한다면, 당신은 제품에 하위 처리자 (sub-processor)를 추가한 것입니다. 개인정보 보호정책을 업데이트하기 전까지 당신의 정책은 틀린 상태가 됩니다.
버몬트주의 자체 데이터 개인정보 보호 법안인 S.71은 2026년 6월 16일에 서명되었으나 2028년이 되어서야 효력이 발생합니다. 따라서 이 배포에 대한 규제적 최저선은 실제로는 회사가 선택한 무엇이든 되었습니다. 스리랑카도 유사한 공백 상태에 있습니다. 개인정보 보호법 (Personal Data Protection Act)이 문서상으로는 존재하지만 집행은 여전히 성숙해가는 단계입니다. 이를 허가로 해석하지 마세요. "사용자가 당신의 실수를 발견하기 전까지는 아무도 당신의 실수를 잡아내지 못할 것이다"라고 읽어야 합니다.
콜롬보에서 지원 봇을 출시하는 2인 규모의 팀을 위한 실무적인 버전은 다음과 같습니다:
- 모든 제3자(third party)를 나열하세요. 제품을 출시하기 전, 사용자 텍스트에 접촉하는 모든 대상을 확인해야 합니다. 모델 제공업체(Model provider), 벡터 DB(vector DB), 로깅 서비스(logging service), 에러 트래커(error tracker) 등이 포함됩니다.
- 기본적으로 개인 정보가 포함된 전체 프롬프트(full prompts)를 로깅하지 마세요. 대시보드가 아닌 엣지(edge) 단계에서 비식별화(Redact) 처리를 해야 합니다.
- 모델 제공업체의 데이터 보관(retention) 설정을 확인하세요. 많은 업체가 남용 모니터링(abuse monitoring)을 위해 입력을 보관하는 것을 기본값으로 설정합니다.
- 기능 구현과 동일한 PR(Pull Request) 내에서 정책을 업데이트하세요. "다음 스프린트(next sprint)"에 하겠다고 미루지 마세요.
🛠️ 이 사건을 잡아낼 수 있었던 저렴한 테스트 방법
QA 부서가 필요한 것이 아닙니다. 모든 릴리스(release) 전에 실행할 20개의 적대적 입력(hostile inputs) 목록과 1시간의 시간이 필요할 뿐입니다:
| 테스트 항목 | 중요한 이유 |
|---|---|
| DB 내에서 가장 긴 실제 고객 이름 | 퍼지 매칭(fuzzy matching)을 가장 먼저 무너뜨림 |
| ... |
음성 기능을 구축하고 있다면, 현재는 저렴한 비용으로 프로토타입(prototype)을 만들 수 있습니다. 저희의 무료 음성-텍스트 변환(speech-to-text) 도구와 텍스트-음성 변환(text-to-speech) 도구는 브라우저에서 실행되며, 특정 벤더(vendor)를 결정하기 전에 3G 연결 환경의 스리랑카 억양에서도 전사(transcription)가 제대로 이루어지는지 확인하는 용도로 충분합니다.
💡 이것이 여러분에게 의미하는 바
Kinney Drugs의 사례는 "AI의 실패"라는 카테고리로 분류되겠지만, 그렇게 읽는 것은 게으르고 무익한 방식입니다. 처방전 재조제(refill) 라인은 높은 처리량, 반복성, 낮은 창의성을 요구하는 이상적인 AI 활용 사례입니다. 이 배포가 실패한 이유는 우리 중 누구라도 다음 주에 저지를 수 있는 세 가지 구체적인 결정 때문이었습니다.
- 트래픽의 10%에만 AI 기능을 출시해도 괜찮습니다. 아무도 전체 전환을 강요하지 않습니다.
- 결정론적 경로(deterministic path)를 절대 제거하지 마세요. 그것은 약간의 투박한 코드를 대가로 얻는 여러분의 롤백(rollback) 계획이자, 접근성(accessibility) 확보 수단이며, 장애 완화(incident mitigation) 방안입니다.
- 확률적 구성 요소(Probabilistic components)에는 사람이 불쾌해할 만한 어떤 것에 대해서도 쓰기 권한(write access)을 주지 마세요. 확인될 때까지는 읽기 전용(Read-only)이어야 합니다.
- 새로운 AI 벤더는 새로운 데이터 처리자(data processor)입니다. 개인정보 처리방침(privacy policy)을 결과물의 일부로 취급하세요.
2년 뒤에 유망해 보일 팀들은 가장 뛰어난 모델을 보유한 팀들이 아닙니다. 그들은 다른 모든 이들이 그것을 삭제해 버리는 동안, 지루한 경로(boring path)를 계속 작동하게 유지한 팀들입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기