Ein Blogbeitrag, der die Arbeit hinter diesem Projekt erklärt.
Eine Full-Stack-App für unterbrechbare KI-Telefonanrufe mit geringer Latenz und nahezu menschlicher Qualität, die aus Stitching-LLMs, Sprachverständnistools, Text-to-Speech-Modellen und der Telefon-API von Twilio besteht
Hören Sie sich den Beispielanruf an
Die folgenden Komponenten wurden implementiert und im Streaming-Modus miteinander verknüpft, um die Aufgaben von KI-Aufrufen mit geringer Latenz und unterbrechbarer Geschwindigkeit zu erfüllen:
(Vielleicht möchten Sie eine virtuelle Python-Umgebung erstellen, um das Risiko von Konflikten zu minimieren.)
pip install -r requirements.txt
ngrok
Twilio benötigt einen von außen zugänglichen Server, um Anrufe weiterleiten zu können. Um dies zu tun, während Sie eine lokale Instanz ausführen, müssen Sie den Server der Außenwelt zugänglich machen. Eine Möglichkeit hierfür ist die Verwendung von ngrok
Führen Sie ngrok
aus, um eine externe URL zu erhalten, die den Datenverkehr an Ihren lokalen Webserver weiterleitet:
ngrok http 3000
Kopieren Sie die URL, die Ihnen ngrok gibt (z. B. 1bf0-157-131-155-236.ngrok-free.app
), ohne https://
am Anfang und legen Sie diese im folgenden Abschnitt als Ihre SERVER
Variable fest.
Erstellen Sie eine Kopie der Datei .env.example
und benennen Sie sie in .env
um. Legen Sie dann die erforderlichen Anmeldeinformationen und Konfigurationen fest.
Bitte beachten Sie, dass Sie für den LLM-Dienst die Wahl zwischen anthropic
und openai
und für den TTS-Dienst zwischen deepgram
und elevenlabs
haben.
# 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
Angenommen, Sie haben eine Twilio-Telefonnummer erstellt und die CLI von Twilio installiert, führen Sie Folgendes aus, um Twilio für die Verwendung des Endpunkts Ihrer App zu konfigurieren:
twilio phone-numbers:update YOURNUMBER --voice-url=https://NGROKURL/incoming
python app.py
streamlit ui/streamlit_app.py
Beiträge sind willkommen! Bitte senden Sie gerne einen Pull Request.
Copyright Amir Kiani, 2024
Code wird unter MIT-Lizenz geteilt
Dieses Projekt wäre ohne dieses großartige TypeScript-Beispiel von Twilio Labs nicht zustande gekommen. Claude Sonnet 3.5, GPT-4o und Aider leisteten ebenfalls reichlich Hilfe beim Schreiben von Teilen dieser Codebasis?