โพสต์ในบล็อกที่อธิบายผลงานเบื้องหลังโครงการนี้
แอปสแตกเต็มรูปแบบสำหรับการโทรศัพท์ AI ที่ขัดจังหวะ เวลาแฝงต่ำ และมีคุณภาพใกล้เคียงมนุษย์ สร้างขึ้นจากการรวม LLM เครื่องมือทำความเข้าใจคำพูด โมเดลการอ่านออกเสียงข้อความ และ API โทรศัพท์ของ Twilio
ฟังตัวอย่างการโทร
ส่วนประกอบต่อไปนี้ได้รับการติดตั้งและรวมเข้าด้วยกันใน รูปแบบการสตรีม เพื่อให้บรรลุงานที่มีการเรียก AI ที่มีความหน่วงต่ำ และ ขัดจังหวะได้ :
(คุณอาจต้องการสร้าง Python Virtual Environment เพื่อลดโอกาสที่จะเกิดข้อขัดแย้ง)
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 และติดตั้ง CLI ของ Twilio ให้รันสิ่งต่อไปนี้เพื่อกำหนดค่า Twilio ให้ใช้ตำแหน่งข้อมูลของแอปของคุณ:
twilio phone-numbers:update YOURNUMBER --voice-url=https://NGROKURL/incoming
python app.py
streamlit ui/streamlit_app.py
ยินดีบริจาค! โปรดส่งคำขอดึง
ลิขสิทธิ์ Amir Kiani, 2024
รหัสที่ใช้ร่วมกันภายใต้ใบอนุญาต MIT
โปรเจ็กต์นี้คงไม่เกิดขึ้นหากไม่มีตัวอย่าง TypeScript ที่ยอดเยี่ยมจาก Twilio Labs Claude Sonnet 3.5, GPT-4o และ Aider ยังให้ความช่วยเหลือในการเขียนส่วนต่างๆ ของโค้ดฐานนี้อีกด้วย ?