처방전 재조제 요청 접수를 위한 음성 AI 어시스턴트 구축기
요약
Telnyx AI Assistants를 활용하여 처방전 재조제 요청을 접수하는 음성 AI 어시스턴트 구축 사례를 소개합니다. AI가 임상적 결정을 내리는 대신, 효율적인 정보 수집과 백엔드 도구 호출을 통해 업무 부담을 줄이는 워크플로우를 제안합니다.
핵심 포인트
- AI의 역할을 의사 결정자가 아닌 정보 수집용 접수 어시스턴트로 한정
- Telnyx AI Assistants와 Python/Flask를 이용한 실시간 음성 대화 구현
- 백엔드 도구를 통해 요청 생성, 수동 검토 플래그, 콜백 예약 기능 수행
- 의료 분야 AI 도입 시 컴플라이언스와 역할 분담의 중요성 강조
처방전 재조제 (Prescription refill) 전화는 운영 세부 사항을 살펴보지 않을 때까지는 간단해 보이는 워크플로우 중 하나입니다.
전화한 사람은 어떤 약에 대해 전화했는지 설명해야 합니다. 약국이나 클리닉은 선호하는 약국, 콜백 (callback) 번호, 재조제가 얼마나 빨리 필요한지, 그리고 요청에 수동 검토 (manual review)가 필요한지 여부를 확인해야 할 수도 있습니다.
하지만 명확한 경계선이 있습니다. AI는 처방을 승인하거나, 재조제를 거부하거나, 복용량 지침을 변경하거나, 무엇인가를 진단하거나, 임상적 결정 (clinical decisions)을 내려서는 안 됩니다.
그래서 저는 이 워크플로우를 의사 결정자가 아닌 접수 어시스턴트 (intake assistant)로 구축했습니다.
Telnyx 코드 예제는 여기에 있습니다:
이 예제는 작은 Python + Flask 백엔드와 함께 Telnyx AI Assistants를 사용합니다.
흐름 (The Flow)
전화자가 Telnyx 전화번호로 전화를 겁니다. Telnyx는 Flask 앱으로 call.initiated 웹훅 (webhook)을 보냅니다.
앱은 두 가지 작업을 수행합니다:
- 전화를 받습니다.
ai_assistant_start를 통해 구성된 Telnyx AI Assistant를 시작합니다.
그 후, 어시스턴트가 실시간 대화를 주도합니다. 응급 상황에 대한 안내를 제공한 다음, 한 번에 하나씩 질문을 던집니다.
어시스턴트는 세 가지 백엔드 도구 (backend tools)를 가지고 있습니다:
create_refill_requestflag_manual_reviewqueue_callback
어시스턴트가 충분한 정보를 수집하면 create_refill_request를 호출합니다. 만약 요청 내용에 통제 약물 (controlled substance), 복용량 변경, 부작용, 긴급한 접근 문제 또는 이와 유사한 후속 조치 트리거가 언급되면 flag_manual_review를 호출합니다. 전화자가 콜백을 원하면 queue_callback을 호출합니다.
내가 중요하게 생각하는 부분
AI는 기록 시스템 (system of record)이 아닙니다.
AI는 재조제를 승인하는 것이 아닙니다.
AI는 직원이 다음 단계를 수행할 수 있도록 충분한 정보를 수집하는 것입니다.
이러한 구분은 의료 분야의 음성 AI (voice AI)에서 매우 중요합니다. 유용한 어시스턴트는 약사, 임상의 또는 컴플라이언스 (compliance) 프로세스를 대체하는 척하지 않으면서도, 접수 부담을 줄여주어야 합니다.
백엔드 (backend)는 워크플로 (workflow)가 강제되는 곳입니다. 이곳에서 요청을 저장하고, 발신자 식별 정보를 마스킹 (masking)하며, 어시스턴트 도구 비밀키 (assistant tool secret)를 확인하고, 직원을 위한 검토 엔드포인트 (review endpoint)를 노출합니다.
여기서 Telnyx AI Assistants를 사용하는 이유
gather 및 speak 명령어를 사용하는 수동 음성 상태 머신 (voice state machine)으로 이를 구축할 수도 있습니다. 그렇게 하면 작동은 하겠지만, 코드가 대화의 배관 작업 (conversation plumbing)에 집중되게 됩니다.
Telnyx AI Assistants를 사용하면 구조가 더 깔끔합니다:
Call Control이 전화를 받습니다
AI Assistant가 대화를 처리합니다
assistant tools가 Flask 백엔드를 호출합니다
...
어시스턴트 프롬프트 (assistant prompt) 또한 provision_assistant.py의 코드로부터 프로비저닝 (provisioning)되므로, 누군가가 포털 스크린샷에서 설정을 수동으로 복사하는 대신 리포지토리 (repo)로부터 어시스턴트를 재생성할 수 있음을 의미합니다.
로컬에서 실행하기
git clone https://github.com/team-telnyx/telnyx-code-examples.git
cd telnyx-code-examples/ai-prescription-refill-intake-voice-assistant-python
python3 -m venv .venv
...
필요한 환경 변수 (environment variables)를 설정하세요:
TELNYX_API_KEY=KEY...
PUBLIC_BASE_URL=https://your-ngrok-url.ngrok-free.app
TOOL_SECRET=replace_with_a_random_shared_secret
...
앱을 시작합니다:
python app.py
외부에 노출합니다:
ngrok http 5000
어시스턴트를 프로비저닝합니다:
python provision_assistant.py
그 다음 Call Control 애플리케이션의 웹훅 (webhook) URL을 다음과 같이 설정하세요:
Telnyx 번호로 전화를 걸어 처방전 재조제를 요청해 보세요.
코드에서 살펴볼 내용
메인 앱은 app.py입니다.
인바운드 웹훅 (inbound webhook)이 전화를 받고 어시스턴트를 시작합니다:
requests.post(
f"{TELNYX_API_BASE}/calls/{call_control_id}/actions/ai_assistant_start",
headers=telnyx_headers(),
...
어시스턴트 설정은 provision_assistant.py에 포함되어 있습니다. 해당 파일은 어시스턴트를 생성하거나 업데이트하고, 모델을 설정하며, 프롬프트 (prompt)를 추가하고, 동적 변수 (dynamic variables)를 구성하며, 웹훅 도구 (webhook tools)를 등록합니다.
도구 엔드포인트 (tool endpoints)는 의도적으로 범위를 좁게 설정했습니다. 이들은 구조화된 데이터를 수락하고 워크플로 상태 (workflow state)를 반환합니다. 이를 통해 어시스턴트가 승인 계층 (approval layer)이 되지 않도록 하면서도 유용하게 작동하도록 만듭니다.
프로덕션 참고 사항 (Production Notes)
샘플은 로컬에서 쉽게 실행할 수 있도록 설계되었기 때문에 상태를 메모리에 유지합니다.
프로덕션 환경의 경우, 암호화된 데이터베이스 저장소, 직원 인증 (staff authentication), 감사 로그 (audit logging), 보존 정책 (retention policies), 모니터링, 더 엄격한 PHI (Protected Health Information, 개인 건강 정보) 제어 및 전체 컴플라이언스 검토 (compliance review)를 추가하겠습니다.
또한 어시스턴트 지침 (assistant instructions)을 보수적으로 유지하겠습니다:
접수 정보 수집 (collect intake)
직원에게 전달 (route to staff)
승인 또는 거절 금지 (do not approve or deny)
...
이것이 이러한 종류의 헬스케어 AI 워크플로 (healthcare AI workflow)에 적합한 유용한 형태입니다.
리소스 (Resources)
- 코드 예제: https://github.com/team-telnyx/telnyx-code-examples/tree/main/ai-prescription-refill-intake-voice-assistant-python
- Telnyx AI Assistant 퀵스타트: https://developers.telnyx.com/docs/inference/ai-assistants/no-code-voice-assistant
- 통화에 AI Assistant 연결하기: https://developers.telnyx.com/docs/voice/programmable-voice/ai-assistant-start
- AI Assistant 동적 변수: https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables
- Telnyx 개발자 문서: https://developers.telnyx.com
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기