agents
agents 是一个专为构建实时语音 AI 助手而设计的开源框架,让开发者能够轻松创建能“看、听、理解”的多模态智能体。它主要解决了在服务器端开发低延迟、高互动性语音应用时的技术复杂性,帮助开发者快速整合语音识别、大语言模型和语音合成等能力,无需从零搭建底层架构。
这款工具非常适合希望开发实时对话系统的软件工程师、AI 研究者以及需要构建智能客服或虚拟助理的企业技术团队。无论是打造能进行自然对话的虚拟人,还是集成电话通信功能的智能系统,agents 都能提供强大支持。
其独特亮点在于灵活的生态集成能力,允许用户自由组合不同的技术组件;内置的任务调度系统可高效连接终端用户与智能体;同时支持语义化发言检测,显著减少对话中的打断现象。此外,它还原生支持 MCP 协议,方便集成各类外部工具,并配备完整的测试框架以确保应用稳定性。作为完全开源的项目,agents 允许用户在自有服务器上部署整套系统,包括广泛使用的 LiveKit WebRTC 媒体服务器,为注重数据隐私和定制化的团队提供了理想选择。
使用场景
一家初创医疗科技公司正在开发一款能通过电话为老年患者提供用药提醒和健康咨询的 24 小时语音助手。
没有 agents 时
- 延迟高且体验割裂:自行拼接 STT、LLM 和 TTS 服务导致端到端响应延迟超过 2 秒,老人常因等待过久而重复说话,造成对话混乱。
- 打断处理生硬:缺乏智能的语义轮次检测,系统无法识别用户中途插话,经常自顾自说完预设台词,显得极不自然。
- 电话接入复杂:传统电话网络(PSTN)与 WebRTC 架构打通困难,需额外开发复杂的 SIP 网关适配层,耗时数周。
- 多模态扩展受限:若未来想增加“视频看诊”功能,需重构整个底层通信架构,无法平滑升级。
使用 agents 后
- 实时流畅交互:agents 框架内置优化的流水线与边缘节点部署,将响应延迟压缩至毫秒级,老人话音刚落即可得到自然回应。
- 智能语义打断:利用内置的 Transformer 语义轮次检测模型,精准识别用户意图,支持随时自然插话,对话节奏如同真人交流。
- 一键电话集成:直接调用 agents 集成的 LiveKit 电话栈,无需编写底层代码即可实现从手机固话到 AI 助手的无缝连接。
- 原生多模态支持:基于 WebRTC 架构,仅需几行配置即可在语音基础上开启视频流,轻松演进为面对面视频健康顾问。
agents 让开发者从繁琐的实时通信基建中解放出来,专注于构建真正懂人性、低延迟的医疗陪伴体验。
运行环境要求
- Linux
- macOS
- Windows
未说明 (主要依赖云端 API 或本地 CPU 推理,插件如 Silero VAD 通常可在 CPU 运行)
未说明

快速开始
正在寻找 JS/TS 库?请查看 AgentsJS。
什么是 Agents?
Agent 框架旨在构建运行在服务器上的实时可编程参与者。利用它,您可以创建能够看、听并理解的多模态对话式语音代理。
特性
- 灵活的集成:全面的生态系统,允许您根据具体用例自由组合合适的 STT、LLM、TTS 和实时 API。
- 集成的任务调度:内置任务调度与分发功能,通过 dispatch APIs 将终端用户连接到代理。
- 丰富的 WebRTC 客户端:使用 LiveKit 的开源 SDK 生态系统构建客户端应用,支持所有主流平台。
- 电话集成:与 LiveKit 的 电话堆栈 无缝协作,使您的代理能够拨打或接听电话。
- 与客户端交换数据:使用 RPCs 和其他 Data APIs 与客户端顺畅地交换数据。
- 语义轮次检测:采用 Transformer 模型检测用户何时结束发言,有助于减少打断。
- MCP 支持:原生支持 MCP。只需一处即可集成 MCP 服务器提供的工具。
- 内置测试框架:编写测试并使用评判器确保您的代理按预期运行。
- 开源:完全开源,允许您在自己的服务器上运行整个堆栈,包括 LiveKit 服务器,这是最常用的 WebRTC 媒体服务器之一。
安装
要安装核心 Agents 库以及常用模型提供商的插件:
pip install "livekit-agents[openai,silero,deepgram,cartesia,turn-detector]~=1.4"
文档与指南
有关该框架及其使用方法的文档,请参阅 这里。
使用 AI 编码代理进行开发
如果您正在使用 AI 编码助手来基于 LiveKit Agents 进行开发,我们建议采用以下设置以获得最佳效果:
安装 LiveKit Docs MCP 服务器 — 为您的编码代理提供最新的 LiveKit 文档、跨 LiveKit 仓库的代码搜索功能以及实用示例。
安装 LiveKit Agent Skill — 为您的编码代理提供构建语音 AI 应用程序的架构指导和最佳实践,包括工作流设计、交接流程、任务分配及测试模式。
npx skills add livekit/agent-skills --skill livekit-agents
Agent Skill 与 MCP 服务器配合使用效果最佳:Skill 教导您的代理 如何着手 使用 LiveKit 进行开发,而 MCP 服务器则提供 当前的 API 细节 以便正确实现。
核心概念
- 代理:基于 LLM 的应用程序,具有明确的指令。
- 代理会话:用于管理与终端用户交互的容器。
- 入口点:交互式会话的起点,类似于 Web 服务器中的请求处理器。
- 代理服务器:负责协调任务调度并启动用户会话代理的主要进程。
使用方法
简单的语音代理
from livekit.agents import (
Agent,
AgentServer,
AgentSession,
JobContext,
RunContext,
cli,
function_tool,
inference,
)
from livekit.plugins import silero
@function_tool
async def lookup_weather(
context: RunContext,
location: str,
):
"""用于查询天气信息。"""
return {"weather": "sunny", "temperature": 70}
server = AgentServer()
@server.rtc_session()
async def entrypoint(ctx: JobContext):
session = AgentSession(
vad=silero.VAD.load(),
# 可以使用 STT、LLM、TTS 或实时 API 的任意组合
# 本示例展示了 LiveKit Inference,这是一个通过 LiveKit Cloud 访问不同模型的统一 API
# 如果需要直接使用模型提供商的密钥,可以替换为以下内容:
# from livekit.plugins import deepgram、openai、cartesia
# stt=deepgram.STT(model="nova-3"),
# llm=openai.LLM(model="gpt-4.1-mini"),
# tts=cartesia.TTS(model="sonic-3", voice="9626c31c-bec5-4cca-baa8-f8ba9e84c8bc"),
stt=inference.STT("deepgram/nova-3", language="multi"),
llm=inference.LLM("openai/gpt-4.1-mini"),
tts=inference.TTS("cartesia/sonic-3", voice="9626c31c-bec5-4cca-baa8-f8ba9e84c8bc"),
)
agent = Agent(
instructions="您是 LiveKit 构建的友好语音助手。",
tools=[lookup_weather],
)
await session.start(agent=agent, room=ctx.room)
await session.generate_reply(instructions="向用户问好并询问他们今天过得如何")
if __name__ == "__main__":
cli.run_app(server)
此示例需要以下环境变量:
- LIVEKIT_URL
- LIVEKIT_API_KEY
- LIVEKIT_API_SECRET
多智能体交接
这段代码片段已简化。完整示例请参见 multi_agent.py。
...
class IntroAgent(Agent):
def __init__(self) -> None:
super().__init__(
instructions=f"你是一名讲故事的人。你的目标是从用户那里收集一些信息,使故事更加个性化和引人入胜。"
"请询问用户的姓名和来自哪里"
)
async def on_enter(self):
self.session.generate_reply(instructions="向用户问好并收集信息")
@function_tool
async def information_gathered(
self,
context: RunContext,
name: str,
location: str,
):
"""当用户提供了使故事个性化和引人入胜所需的信息时调用。
Args:
name: 用户的姓名
location: 用户所在的地方
"""
context.userdata.name = name
context.userdata.location = location
story_agent = StoryAgent(name, location)
return story_agent, "让我们开始故事吧!"
class StoryAgent(Agent):
def __init__(self, name: str, location: str) -> None:
super().__init__(
instructions=f"你是一名说书人。利用用户的个人信息使故事更具个性化。"
f"用户的名字是{name}, 来自{location}"
# 覆盖默认模型,切换到实时API而非标准LLM
llm=openai.realtime.RealtimeModel(voice="echo"),
chat_ctx=chat_ctx,
)
async def on_enter(self):
self.session.generate_reply()
@server.rtc_session()
async def entrypoint(ctx: JobContext):
userdata = StoryData()
session = AgentSession[StoryData](
vad=silero.VAD.load(),
stt="deepgram/nova-3",
llm="openai/gpt-4.1-mini",
tts="cartesia/sonic-3:9626c31c-bec5-4cca-baa8-f8ba9e84c8bc",
userdata=userdata,
)
await session.start(
agent=IntroAgent(),
room=ctx.room,
)
...
测试
自动化测试对于构建可靠的智能体至关重要,尤其是在LLM表现出非确定性行为的情况下。LiveKit Agents内置了测试集成,可帮助您创建可靠的智能体。
@pytest.mark.asyncio
async def test_no_availability() -> None:
llm = google.LLM()
async AgentSession(llm=llm) as sess:
await sess.start(MyAgent())
result = await sess.run(
user_input="你好,我想下单。"
)
result.expect.skip_next_event_if(type="message", role="assistant")
result.expect.next_event().is_function_call(name="start_order")
result.expect.next_event().is_function_call_output()
await (
result.expect.next_event()
.is_message(role="assistant")
.judge(llm, intent="助手应该询问用户想要什么")
)
示例
更多示例及详细的设置说明,请参阅 examples目录。如需更多示例,请访问 python-agents-examples 仓库。
🎙️ 入门级智能体专为语音对话优化的入门级智能体。 |
🔄 多用户对讲功能通过按住说话的方式响应房间内的多个用户。 |
🎵 背景音频背景环境音和思考音效,以提升真实感。 |
🛠️ 动态工具创建动态创建函数工具。 |
☎️ 外拨呼叫器能够发起外拨电话的智能体。 |
📋 结构化输出使用LLM的结构化输出来指导TTS的语气。 |
🔌 MCP支持使用MCP服务器上的工具。 |
💬 文本专用智能体完全跳过语音部分,将相同代码用于纯文本集成。 |
📝 多用户转录器为房间内所有用户生成转录文本。 |
🎥 视频化身可以添加由Tavus、Hedra、Bithuman、LemonSlice等提供的AI化身。 |
🍽️ 餐厅点餐与预订一个完整的餐厅接线员智能体示例。 |
👁️ Gemini Live视觉一个完整的Gemini Live视觉智能体示例(包括iOS应用)。 |
运行您的智能体
在终端中测试
python myagent.py console
以终端模式运行您的智能体,支持本地音频输入和输出,便于测试。此模式无需外部服务器或依赖项,非常适合快速验证行为。
使用LiveKit客户端开发
python myagent.py dev
启动智能体服务器,并在文件更改时启用热重载。此模式允许每个进程高效地托管多个并发智能体。
智能体会连接到LiveKit Cloud或您自建的服务器。请设置以下环境变量:
- LIVEKIT_URL
- LIVEKIT_API_KEY
- LIVEKIT_API_SECRET
您可以使用任何LiveKit客户端SDK或电话集成进行连接。若想快速上手,不妨试试 Agents Playground。
生产环境运行
python myagent.py start
以生产就绪的优化方式运行智能体。
贡献
Agents框架正处于快速发展阶段,我们欢迎并感谢任何形式的贡献,无论是反馈、错误修复、新功能、新插件和工具,还是更好的文档。您可以在本仓库提交问题、打开PR,或在 LiveKit社区 中与我们交流。
开发环境配置
本项目使用 uv 进行包管理。要安装开发所需的依赖,请运行以下命令:
uv sync --all-extras --dev
示例
本项目在 examples 目录中包含许多示例。要运行这些示例,首先创建 examples/.env 文件,填入 LiveKit 服务器及所需模型提供商的凭据(请参考 examples/.env.example),然后运行:
uv run examples/voice_agents/basic_agent.py dev
更多详细信息,请参阅 示例 README。
测试
单元测试位于 tests 目录下,可以通过以下命令运行:
uv run pytest tests/test_tools.py
每个插件的集成测试需要各种 API 凭据,并且会在 GitHub CI 中自动运行,仅针对由项目维护者提交的 Pull Request。有关详细信息,请查看 测试工作流。
代码格式化
本项目使用 ruff 进行代码格式化和 lint 检查:
uv run ruff format
uv run ruff check --fix
文档生成
要使用 pdoc 在本地生成文档,请执行以下命令:
uv sync --all-extras --group docs
uv run --active pdoc --skip-errors --html --output-dir=docs livekit
| LiveKit 生态系统 | |
|---|---|
| Agents SDKs | Python · Node.js |
| LiveKit SDKs | 浏览器 · Swift · Android · Flutter · React Native · Rust · Node.js · Python · Unity · Unity (WebGL) · ESP32 · C++ |
| 入门应用 | Python Agent · TypeScript Agent · React 应用 · SwiftUI 应用 · Android 应用 · Flutter 应用 · React Native 应用 · 网页嵌入 |
| UI 组件 | React · Android Compose · SwiftUI · Flutter |
| 服务器 API | Node.js · Golang · Ruby · Java/Kotlin · Python · Rust · PHP(社区版) · .NET(社区版) |
| 资源 | 文档 · MCP 服务器文档 · CLI 工具 · LiveKit 云服务 |
| LiveKit 服务器开源项目 | LiveKit 服务器 · Egress · Ingress · SIP |
| 社区 | 开发者社区 · Slack 社区 · X 平台 · YouTube 频道 |
版本历史
livekit-agents@1.3.92025/12/19livekit-agents@1.3.82025/12/17livekit-agents@1.3.72025/12/16livekit-agents@1.5.12026/03/23livekit-agents@1.5.02026/03/19livekit-agents@1.4.62026/03/16livekit-agents@1.4.52026/03/11livekit-agents@1.4.42026/03/03livekit-agents@1.4.32026/02/23browser-v0.1.42026/02/17livekit-agents@1.4.22026/02/17browser-v0.1.32026/02/16browser-v0.1.22026/02/16livekit-agents@1.4.02026/02/06livekit-agents@1.3.122026/01/21livekit-agents@1.3.112026/01/14livekit-agents@1.3.102025/12/23livekit-agents@1.3.62025/12/03livekit-agents@1.3.52025/11/25livekit-agents@1.3.42025/11/24常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
