bolna
Bolna 是一个端到端的开源语音 AI 智能体平台,旨在帮助开发者快速构建基于大语言模型(LLM)的语音对话应用。它解决了传统语音助手开发中流程复杂、组件分散的痛点,让用户仅需通过简单的 JSON 配置,即可将自动语音识别(ASR)、大语言模型推理和语音合成(TTS)无缝整合,实现低延迟的自然语音交互。
这款工具特别适合后端工程师、AI 应用开发者以及希望探索语音交互场景的技术团队使用。无论是搭建电话客服系统、语音助手,还是进行多模态对话实验,Bolna 都能提供坚实的技术底座。其核心亮点在于强大的编排能力:基于 WebSocket 技术实时协调各类主流服务商,支持 Twilio、Plivo 等电话系统接入,兼容 Deepgram、Azure 的转录服务,并能灵活调用 OpenAI、Llama、Mistral 等多种大模型及 ElevenLabs、AWS Polly 等语音合成引擎。
Bolna 采用“开源优先”的开发理念,作为其托管 API 和无代码平台的核心引擎,确保了技术的透明性与可扩展性。项目提供了完整的本地部署方案(基于 Docker),包含电话服务器、代理隧道及数据持久化组件,方便开发者在私有环境中快速启动并定制专属的语音智能体。
使用场景
一家中型电商公司希望升级其客服热线,引入能处理复杂咨询、支持多轮对话且延迟极低的智能语音助手。
没有 bolna 时
- 开发周期漫长:团队需分别对接 Twilio(电话)、Deepgram(语音转文字)、OpenAI(大模型)和 ElevenLabs(文字转语音),编写大量胶水代码串联各组件,耗时数周。
- 实时性差体验糟:由于各模块间数据传输未针对低延迟优化,用户说完话后往往需要等待 3-5 秒才能听到回复,对话节奏断裂,像在与机器人“打电报”。
- 状态管理混乱:难以在长对话中精准维护上下文状态,一旦用户打断或切换话题,助手容易丢失记忆或重复提问,导致客诉率上升。
- 运维成本高昂:缺乏统一的编排平台,监控通话质量、调试断连问题或更换底层模型时,需要深入修改底层代码,维护难度极大。
使用 bolna 后
- 极速构建部署:仅需通过一份 JSON 配置文件即可定义助手行为,bolna 自动编排 ASR、LLM 和 TTS 流程,将原本数周的开发工作缩短至几天甚至几小时。
- 毫秒级流畅交互:基于 WebSocket 的全双工通信架构实现了流式传输,用户话音刚落助手即刻响应,延迟降低至亚秒级,带来接近真人的自然交谈体验。
- 智能上下文掌控:内置的状态机机制完美处理打断、插话及多轮逻辑,确保助手在任何复杂场景下都能准确理解意图并连贯作答。
- 灵活可观测性强:提供统一的监控视图和标准化接口,开发人员可轻松切换底层模型供应商或实时调整提示词,无需重构核心代码即可迭代优化。
bolna 通过端到端的开源编排能力,让企业能以最低成本快速落地生产级的高性能语音 AI 应用。
运行环境要求
- 未说明 (基于 Docker,理论上支持 Linux/macOS/Windows)
未说明 (主要作为编排平台调用外部 API,本地无重型模型推理需求)
未说明

快速开始
端到端开源语音智能体平台: 通过 JSON 快速构建以语音为核心的对话式助手。
Discord | 托管文档 | 官网
[!NOTE] 我们正在积极寻找维护者。
简介
Bolna 是一个端到端的开源生产就绪框架,用于快速构建基于大语言模型的语音驱动对话应用。
演示
https://github.com/bolna-ai/bolna/assets/1313096/2237f64f-1c5b-4723-b7e7-d11466e9b226
这个仓库是什么?
该仓库包含了构建语音 AI 应用的完整编排平台。它通过 WebSocket 结合不同的 ASR、LLM 和 TTS 提供商及模型来技术性地编排语音对话。
组件
Bolna 帮助您创建 AI 语音智能体,这些智能体可以被指令执行以下任务:
- 编排平台(此开源仓库)
- 托管 API(https://docs.bolna.ai/api-reference/introduction),基于此编排平台构建 [目前为闭源]
- 使用托管 API 和 Tailwind CSS 的无代码 UI 交互平台 https://platform.bolna.ai/ [目前为闭源]
开发理念
- 任何集成、增强或功能最初都会进入这个开源包,因为它构成了我们托管 API 和仪表板的核心。
- 随后,我们会根据需要公开 API 或对现有 API 进行修改。
- 最后,我们将更新推送到 UI 仪表板。
graph LR;
A[Bolna 开源] -->B[托管 API];
B[托管 API] --> C[托管 Playground]
支持的提供商和模型
- 使用电话服务提供商如
Twilio、Plivo、Exotel(即将推出)、Vonage(即将推出)等发起电话呼叫。 - 使用
Deepgram、Azure等进行对话转录。 - 使用
OpenAI、DeepSeek、Llama、Cohere、Mistral等 LLM 处理对话。 - 使用
AWS Polly、ElevenLabs、Deepgram、OpenAI、Azure、Cartesia、Smallest等将 LLM 的响应合成回电话音频。
有关所有支持提供商的深入信息,请参阅 文档。
本地示例设置 [将移至另一个仓库]
基本的本地设置包括使用 Twilio 或 Plivo 进行电话通信。我们已将设置容器化在 local_setup/ 中。用户需要从 .env.sample 文件中填充环境变量文件 .env。
该设置包含四个容器:
- 电话网络服务器:
- Bolna 服务器:用于创建和管理智能体
ngrok:用于隧道转发。用户需要将authtoken添加到ngrok-config.ymlredis:用于持久化智能体和提示数据。
快速开始
最简单的方式是使用提供的脚本:
cd local_setup
chmod +x start.sh
./start.sh
该脚本会检查 Docker 依赖项,启用 BuildKit 构建所有服务,并以分离模式启动它们。
手动设置
或者,您可以手动构建并运行这些服务:
- 确保已安装 Docker 和 Docker Compose V2
- 启用 BuildKit 以加快构建速度:
export DOCKER_BUILDKIT=1 export COMPOSE_DOCKER_CLI_BUILD=1 - 构建镜像:
docker compose build - 运行服务:
docker compose up -d
如果只想运行特定服务:
docker compose up -d bolna-app twilio-app
# 或
docker compose up -d bolna-app plivo-app
Docker 容器启动后,您就可以开始创建智能体并指示它们发起呼叫了。
示例智能体:创建、使用并开始拨打电话
您可以尝试来自 example.bolna.dev 的不同智能体。
编程式使用(最小示例)
您也可以直接在 Python 中构建并运行一个智能体,而无需本地电话设置。
示例脚本:examples/simple_assistant.py
import asyncio
from bolna.assistant import Assistant
from bolna.models import (
Transcriber,
Synthesizer,
ElevenLabsConfig,
LlmAgent,
SimpleLlmAgent,
)
async def main():
assistant = Assistant(name="demo_agent")
# 配置音频输入(ASR)
transcriber = Transcriber(provider="deepgram", model="nova-2", stream=True, language="en")
# 配置 LLM
llm_agent = LlmAgent(
agent_type="simple_llm_agent",
agent_flow_type="streaming",
llm_config=SimpleLlmAgent(
provider="openai",
model="gpt-4o-mini",
temperature=0.3,
),
)
# 配置音频输出(TTS)
synthesizer = Synthesizer(
provider="elevenlabs",
provider_config=ElevenLabsConfig(
voice="George", voice_id="JBFqnCBsd6RMkjVDRZzb", model="eleven_turbo_v2_5"
),
stream=True,
audio_format="wav",
)
# 构建单一连贯的管道:转录器 -> LLM -> 合成器
assistant.add_task(
task_type="conversation",
llm_agent=llm_agent,
transcriber=transcriber,
synthesizer=synthesizer,
enable_textual_input=False,
)
# 流式输出结果
async for chunk in assistant.execute():
print(chunk)
if __name__ == "__main__":
asyncio.run(main())
如何运行:
export OPENAI_API_KEY=...
export DEEPGRAM_AUTH_TOKEN=...
export ELEVENLABS_API_KEY=...
python examples/simple_assistant.py
这展示了编排和流式输出。对于电话通信,请使用 local_setup/ 中的服务。
注意:对于基于 REST 的使用(通过 HTTP 进行智能体的 CRUD 操作),请参阅仓库根目录下的 API.md。
预期输出格式:assistant.execute() 是一个异步生成器,每次产生一个任务结果字典(类似事件的块)。具体的键取决于配置的工具或提供商;应将其视为流,并逐步处理。
仅文本管道示例
如果您想要一个仅包含文本的流程(无需转录器/合成器),可以启用仅文本管道:
示例脚本:examples/text_only_assistant.py
import asyncio
from bolna.assistant import Assistant
from bolna.models import LlmAgent, SimpleLlmAgent
async def main():
assistant = Assistant(name="text_only_agent")
llm_agent = LlmAgent(
agent_type="simple_llm_agent",
agent_flow_type="streaming",
llm_config=SimpleLlmAgent(
provider="openai",
model="gpt-4o-mini",
temperature=0.2,
),
)
# 无转录器/合成器;启用仅文本管道
assistant.add_task(
task_type="conversation",
llm_agent=llm_agent,
enable_textual_input=True,
)
async for chunk in assistant.execute():
print(chunk)
if __name__ == "__main__":
asyncio.run(main())
运行方法(仅文本):
export OPENAI_API_KEY=...
python examples/text_only_assistant.py
预期输出格式:assistant.execute() 每个任务步骤会流式返回字典;字段因配置而异。请逐块处理。
使用您自己的提供商
您可以通过填充 .env 文件来使用您自己的提供商密钥。
ASR 提供商
目前支持的 ASR 提供商如下:
| 提供商 | 需要在 .env 文件中添加的环境变量 |
|---|---|
| Deepgram | DEEPGRAM_AUTH_TOKEN |
LLM 提供商
Bolna 使用 LiteLLM 包来支持多种 LLM 集成。
目前支持的 LLM 提供商家族如下: https://github.com/bolna-ai/bolna/blob/10fa26e5985d342eedb5a8985642f12f1cf92a4b/bolna/providers.py#L30-L47
对于基于 LiteLLM 的 LLM,根据您的使用场景,在 .env 文件中添加以下内容之一:
LITELLM_MODEL_API_KEY:LLM 的 API 密钥
LITELLM_MODEL_API_BASE:托管 LLM 的 URL
LITELLM_MODEL_API_VERSION:适用于 Azure 等 LLM 的 API 版本
对于通过 VLLM 托管的 LLM,在 .env 文件中添加:
VLLM_SERVER_BASE_URL:使用 VLLM 托管的 LLM 的 URL
TTS 提供商
目前支持的 TTS 提供商如下: https://github.com/bolna-ai/bolna/blob/c8a0d1428793d4df29133119e354bc2f85a7ca76/bolna/providers.py#L7-L14
| 提供商 | 需要在 .env 文件中添加的环境变量 |
|---|---|
| AWS Polly | 通过系统范围内的凭据从 ~/.aws 访问 |
| Elevenlabs | ELEVENLABS_API_KEY |
| OpenAI | OPENAI_API_KEY |
| Deepgram | DEEPGRAM_AUTH_TOKEN |
| Cartesia | CARTESIA_API_KEY |
| Smallest | SMALLEST_API_KEY |
电话提供商
目前支持的电话提供商如下:
| 提供商 | 需要在 .env 文件中添加的环境变量 |
|---|---|
| Twilio | TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_PHONE_NUMBER |
| Plivo | PLIVO_AUTH_ID, PLIVO_AUTH_TOKEN, PLIVO_PHONE_NUMBER |
开源与托管 API
我们过去曾尝试同时维护开源和托管解决方案(通过 API 和 UI 控制面板)。
由于时间紧张而非兴趣不足,我们曾在维护此仓库上有所波动。
目前,我们仍在为社区维护它,并致力于提升语音 AI 的普及度。
尽管该仓库完全开源,但如果您对托管服务或更定制化的解决方案感兴趣,仍可与我们联系。

扩展其他电话提供商
如果您希望扩展并添加 Vonage、Telnyx 等其他电话提供商,请遵循以下指南:
- 确保该电话提供商支持双向流媒体
- 在 input_handlers/telephony_providers 中添加特定于电话的输入处理器文件,编写从 telephony.py 类扩展的自定义函数
- 该文件主要包含如何从电话提供商处接收不同类型的事件数据包
- 在 output_handlers/telephony_providers 中添加特定于电话的输出处理器文件,编写从 telephony.py 类扩展的自定义函数
- 这主要涉及将合成器类生成的音频转换为支持的音频格式,并通过电话提供商提供的 WebSocket 流式传输
- 最后,您需要编写一个专用服务器,例如 local_setup 中提供的示例 twilio_api_server.py,以通过 WebSocket 发起呼叫。
贡献
我们欢迎各种形式的贡献:无论大小,只要有助于改善这一社区资源即可。
- 当前有许多 未解决的问题,您可以从中选择一个开始
- 如果您有改进建议,想贡献简单的修复(如纠正错别字),或想解决明显的 bug,请随时发起新问题或提交拉取请求
- 如果您正在考虑对该仓库进行较大规模的更改或添加,无论是结构还是功能方面,请先创建一个问题 新建问题 :octocat: 并概述您的拟议变更。这将使我们在您投入大量时间和精力之前进行讨论。感谢您的合作与理解
版本历史
0.10.12026/02/190.10.02026/01/050.9.92025/10/280.9.82025/09/030.9.72025/05/280.9.62025/04/240.9.52025/03/310.9.42025/02/250.9.32025/01/030.9.22024/12/170.9.12024/10/170.9.02024/10/160.8.02024/09/120.7.142024/09/02常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。