تدوينة تشرح العمل وراء هذا المشروع.
تطبيق مكدس كامل للمكالمات الهاتفية ذات الجودة العالية المتقطعة وذات زمن الوصول المنخفض والجودة القريبة من الإنسان والتي تم إنشاؤها من دمج LLMs وأدوات فهم الكلام ونماذج تحويل النص إلى كلام وواجهة برمجة تطبيقات الهاتف الخاصة بـ 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's CLI، قم بتشغيل ما يلي لتكوين Twilio لاستخدام نقطة نهاية التطبيق الخاص بك:
twilio phone-numbers:update YOURNUMBER --voice-url=https://NGROKURL/incoming
python app.py
streamlit ui/streamlit_app.py
المساهمات هي موضع ترحيب! لا تتردد في تقديم طلب السحب.
حقوق النشر أمير كياني، 2024
تمت مشاركة الرمز بموجب ترخيص MIT
لم يكن هذا المشروع ليحدث لولا مثال TypeScript الرائع هذا من Twilio Labs. قدم كلود Sonnet 3.5 وGPT-4o وAider أيضًا مساعدة كبيرة في كتابة أجزاء من قاعدة التعليمات البرمجية هذه؟