端到端开源语音代理平台:通过JSON快速构建语音首先是对话助手。
Bolna是端到端开源生产的准备框架,用于快速构建基于LLM的语音驱动对话应用程序。
BOLNA可帮助您创建AI语音代理,可以指示以以下方式完成任务:
Twilio
, Plivo
, Exotel
等的电话提供商启动电话。Deepgram
等转录对话等。OpenAI
, Llama
, Cohere
, Mistral
等LLM来处理对话AWS Polly
, XTTS
, ElevenLabs
, Deepgram
等合成llm响应返回电话。请参阅文档,以了解所有受支持的提供商。
基本的本地设置包括使用Twilio或Plivo的电话。我们已经在local_setup/
中停止了设置。一个人需要从.env.sample
中填充环境.env
文件。
该设置由四个容器组成:
ngrok
:用于隧道。一个人需要将authtoken
添加到ngrok-config.yml
redis
:对于持久的代理和提示数据使用docker使用.env
文件作为环境文件构建图像并在本地运行
docker-compose build --no-cache <twilio-app | plivo-app>
:重建图像docker-compose up <twilio-app | plivo-app>
:运行构建图像Docker容器启动后,您现在可以开始创建您的代理并指示他们启动呼叫。
完成上述Docker设置和运行后,您可以创建代理并启动呼叫。
http://localhost:5001/agent
创建代理 {
" agent_config " : {
" agent_name " : " Alfred " ,
" agent_type " : " other " ,
" agent_welcome_message " : " Welcome " ,
" tasks " : [
{
" task_type " : " conversation " ,
" toolchain " : {
" execution " : " parallel " ,
" pipelines " : [
[
" transcriber " ,
" llm " ,
" synthesizer "
]
]
},
" tools_config " : {
" input " : {
" format " : " pcm " ,
" provider " : " twilio "
},
" llm_agent " : {
" agent_flow_type " : " streaming " ,
" provider " : " openai " ,
" request_json " : true,
" model " : " gpt-3.5-turbo-16k " ,
" use_fallback " : true
},
" output " : {
" format " : " pcm " ,
" provider " : " twilio "
},
" synthesizer " : {
" audio_format " : " wav " ,
" provider " : " elevenlabs " ,
" stream " : true,
" provider_config " : {
" voice " : " Meera - high quality, emotive " ,
" model " : " eleven_turbo_v2_5 " ,
" voice_id " : " TTa58Hl9lmhnQEvhp1WM "
},
" buffer_size " : 100.0
},
" transcriber " : {
" encoding " : " linear16 " ,
" language " : " en " ,
" provider " : " deepgram " ,
" stream " : true
}
},
" task_config " : {
" hangup_after_silence " : 30.0
}
}
]
},
" agent_prompts " : {
" task_1 " : {
" system_prompt " : " Ask if they are coming for party tonight "
}
}
}
agent_id
。使用此agent_id
通过在8001
端口上运行的电话服务器(用于Twilio)或8002
端口(对于PLIVO)启动http://localhost:8001/call
{
" agent_id " : " 4c19700b-227c-4c2d-8bgf-42dfe4b240fc " ,
" recipient_phone_number " : " +19876543210 " ,
}
您可以填充.env
文件以使用自己的密钥为提供商。
提供者 | 环境变量要在.env 文件中添加 |
---|---|
深色 | DEEPGRAM_AUTH_TOKEN |
这些是当前支持的LLM提供商家庭:https://github.com/bolna-ai/bolna/bolna/blob/477E08D6800DBF02931ABEEEA883D78451B7D7D7E2/BOLNA
对于基于LITELLM的LLM,请根据您的用.env
添加以下两个文件:
LITELLM_MODEL_API_KEY
:llm的API键LITELLM_MODEL_API_BASE
:托管LLM的URL
LITELLM_MODEL_API_VERSION
:azure等llms的API版本
对于通过VLLM托管的LLM,将以下内容添加到.env
文件:
VLLM_SERVER_BASE_URL
:使用VLLM的托管LLM的URL
提供者 | 环境变量要在.env 文件中添加 |
---|---|
AWS Polly | 通过〜/.aw从系统宽的凭据访问 |
Elevenlabs | ELEVENLABS_API_KEY |
Openai | OPENAI_API_KEY |
深色 | DEEPGRAM_AUTH_TOKEN |
提供者 | 环境变量要在.env 文件中添加 |
---|---|
Twilio | TWILIO_ACCOUNT_SID , TWILIO_AUTH_TOKEN , TWILIO_PHONE_NUMBER |
Plivo | PLIVO_AUTH_ID , PLIVO_AUTH_TOKEN , PLIVO_PHONE_NUMBER |
如果您希望扩展并添加其他一些电话,例如Vonage,telnyx等。遵循以下准则:
尽管存储库是完全开源的,但如果对托管托管产品或更多定制解决方案感兴趣,您可以与我们联系。
我们喜欢各种类型的贡献:无论大小都可以帮助改善社区资源。