Сообщение в блоге, объясняющее работу, стоящую за этим проектом.
Полнофункциональное приложение для прерываемых телефонных звонков с низкой задержкой и качеством, близким к человеческому, с использованием искусственного интеллекта, созданное на основе сшивки LLM, инструментов распознавания речи, моделей преобразования текста в речь и телефонного API Twilio.
Прослушать пример звонка
Следующие компоненты были реализованы и согласованы вместе в потоковом режиме для решения задач ИИ-вызовов с малой задержкой и прерываемостью :
(Возможно, вам захочется создать виртуальную среду Python, чтобы свести к минимуму вероятность конфликтов.)
pip install -r requirements.txt
ngrok
Twilio требует наличия внешнего доступного сервера для маршрутизации вызовов. Чтобы сделать это при запуске локального экземпляра, вам необходимо открыть доступ к серверу внешнему миру. Один из способов сделать это — использовать ngrok
Запустите ngrok
, чтобы получить внешний URL-адрес, который перенаправляет трафик на ваш локальный веб-сервер:
ngrok http 3000
Скопируйте URL-адрес, который вам предоставляет ngrok (например, 1bf0-157-131-155-236.ngrok-free.app
) без https://
в начале, и установите его в качестве переменной SERVER
в следующем разделе.
Создайте копию файла .env.example
и переименуйте его в .env
. Затем установите необходимые учетные данные и конфигурации.
Обратите внимание, что у вас есть выбор между anthropic
и openai
для сервиса LLM, а также между deepgram
и elevenlabs
для сервиса TTS.
# 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, выполните следующую команду, чтобы настроить Twilio для использования конечной точки вашего приложения:
twilio phone-numbers:update YOURNUMBER --voice-url=https://NGROKURL/incoming
python app.py
streamlit ui/streamlit_app.py
Вклады приветствуются! Пожалуйста, не стесняйтесь отправить запрос на включение.
Авторские права Амира Киани, 2024 г.
Код, используемый в соответствии с лицензией MIT
Этот проект не состоялся бы без замечательного примера TypeScript от Twilio Labs. Claude Sonnet 3.5, GPT-4o и Aider также предоставили значительную помощь в написании частей этой базы кода.