엔드 투 엔드 오픈 소스 음성 에이전트 플랫폼 : JSON을 통해 Voice First를 신속하게 구축하십시오.
Bolna 는 LLM 기반 음성 중심 대화 응용 프로그램을 신속하게 구축하기위한 엔드 투 엔드 오픈 소스 프로덕션 준비 프레임 워크입니다.
Bolna는 다음과 같은 작업을 수행하도록 지시받을 수있는 AI 음성 에이전트를 만드는 데 도움이됩니다.
Twilio , Plivo , Exotel 등과 같은 전화 제공 업체를 사용하여 전화를 시작합니다.Deepgram 등을 사용하여 대화를 전사합니다.OpenAI , Llama , Cohere , Mistral 등과 같은 LLM 사용 대화를 처리합니다.AWS Polly , XTTS , ElevenLabs , Deepgram 등을 사용하여 LLM 응답을 전화로 다시 통신으로 합성합니다.지원되는 모든 제공자에 대한 심층에 대한 문서를 참조하십시오.
기본 로컬 설정에는 전화기 용 Twilio 또는 Plivo 사용이 포함됩니다. local_setup/ 에서 설정을 Dockerized했습니다. .env.sample 에서 .env 파일을 채워야합니다.
설정은 4 개의 컨테이너로 구성됩니다.
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/blob/477e08d6800dbf02931abeeea883d78451b7d7e2/bolna/providers.py#l29-l44
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 폴리 | ~/.aws를 통해 시스템 넓은 자격 증명에서 액세스 |
| elevenlabs | ELEVENLABS_API_KEY |
| Openai | OPENAI_API_KEY |
| 딥 그램 | DEEPGRAM_AUTH_TOKEN |
| 공급자 | .env 파일에 추가 될 환경 변수입니다 |
|---|---|
| 트와 일리오 | TWILIO_ACCOUNT_SID , TWILIO_AUTH_TOKEN , TWILIO_PHONE_NUMBER |
| 주름 | PLIVO_AUTH_ID , PLIVO_AUTH_TOKEN , PLIVO_PHONE_NUMBER |
Vonage, Telnyx 등과 같은 다른 전화기를 확장하고 추가하려는 경우 아래 지침에 따라 다음과 같습니다.
저장소는 완전히 오픈 소스이지만 관리되는 호스팅 오퍼링 또는 더 많은 맞춤형 솔루션에 관심이 있으면 당사와 연결할 수 있습니다.
우리는 모든 유형의 기여를 좋아합니다 :이 지역 사회 자원을 향상시키는 데 큰 도움이되는지