이 프로젝트의 작업을 설명하는 블로그 게시물입니다.
스티칭 LLM, 음성 이해 도구, 텍스트 음성 변환 모델 및 Twilio의 전화 API로 구축된 중단 가능하고 대기 시간이 짧으며 인간에 가까운 품질의 AI 전화 통화를 위한 풀 스택 앱
예시 통화 듣기
지연 시간이 짧고 중단 가능한 AI 호출 작업을 달성하기 위해 다음 구성 요소가 스트리밍 방식 으로 구현되고 함께 랭글링되었습니다.
(충돌 가능성을 최소화하기 위해 Python 가상 환경을 생성하는 것이 좋습니다.)
pip install -r requirements.txt
ngrok
설정 Twilio에서는 통화를 라우팅하려면 외부에서 액세스할 수 있는 서버가 필요합니다. 로컬 인스턴스를 실행하는 동안 이를 수행하려면 서버를 외부에 노출해야 합니다. 이를 수행하는 한 가지 방법은 ngrok
사용하는 것입니다.
ngrok
실행하여 로컬 웹 서버로 트래픽을 전달하는 외부 URL을 얻으세요.
ngrok http 3000
시작 부분에 https://
없이 ngrok이 제공하는 URL(예: 1bf0-157-131-155-236.ngrok-free.app
)을 복사하고 다음 섹션에서 이를 SERVER
변수로 설정합니다.
.env.example
파일의 복사본을 만들고 이름을 .env
로 바꿉니다. 그런 다음 필요한 자격 증명과 구성을 설정합니다.
LLM 서비스의 경우 anthropic
과 openai
중에서 선택할 수 있으며, TTS 서비스의 경우 deepgram
과 elevenlabs
중에서 선택할 수 있습니다.
# Server Configuration
SERVER=your_server_here
# port number if you are running the server locally
PORT=3000
# Service API Keys
# Twlio
TWILIO_ACCOUNT_SID=your_twilio_account_sid
TWILIO_AUTH_TOKEN=your_twilio_auth_token
# AI Services
## LLM
OPENAI_API_KEY=your_openai_api_key
ANTHROPIC_API_KEY=your_anthropic_api_key
## Speech Understanding/TTS
DEEPGRAM_API_KEY=your_deepgram_api_key
## TTS
ELEVENLABS_API_KEY=your_elevenlabs_api_key
ELEVENLABS_MODEL_ID=eleven_turbo_v2
ELEVENLABS_VOICE_ID=XrExE9yKIg1WjnnlVkGX
# Which service to use for TTS
TTS_SERVICE=elevenlabs
# Which service to use for LLM
LLM_SERVICE=openai
# When you call a number, what should the caller ID be?
APP_NUMBER=your_app_number
# When UI launches, what number should it call by default
YOUR_NUMBER=your_number
# When a call needs to be transferred, what number should it be transferred to?
TRANSFER_NUMBER=your_transfer_number
# AI Configuration
SYSTEM_MESSAGE="You are a representative called Sarah from El Camino Hospital. Your goal is to obtain a prior authorization for a patient called John Doe for a knee surgery. Be brief in your correspondence."
INITIAL_MESSAGE="Hello, my name is Sarah, and I'm calling from El Camino Hospital. I need to discuss a prior authorization for a patient. Could you please direct me to the appropriate representative?"
# Should calls be recorded? (this has legal implications, so be careful)
RECORD_CALLS=false
Twilio 전화번호를 생성하고 Twilio의 CLI를 설치했다고 가정하고 다음을 실행하여 앱의 엔드포인트를 사용하도록 Twilio를 구성합니다.
twilio phone-numbers:update YOURNUMBER --voice-url=https://NGROKURL/incoming
python app.py
streamlit ui/streamlit_app.py
기여를 환영합니다! 언제든지 Pull Request를 제출해 주세요.
저작권 아미르 키아니(Amir Kiani), 2024
MIT 라이선스에 따라 공유되는 코드
이 프로젝트는 Twilio Labs의 훌륭한 TypeScript 예제가 없었다면 일어나지 않았을 것입니다. Claude Sonnet 3.5, GPT-4o 및 Aider도 이 코드 베이스의 일부를 작성하는 데 충분한 도움을 제공했습니다.