实时语音 AI Agent 我配了四套系统,今天发现这套开源框架把整个链路串起来了——LiveKit Agents 全解
配过语音 AI Agent 的人都懂那种”明明没几行代码但哪里都不对”的感觉。
STT 要接一个服务,LLM 要接另一个服务,TTS 再接一个。三个模型之间还要跑一个 VAD 检测用户什么时候说完话了,要不要打断,打断之后怎么切回去。服务商那边还要调参数、加缓存、做降级。等你把这些都调通了,产品那边说:加个电话接入功能吧。
LiveKit Agents 就是来解决这个问题的。它本质上是一个语音 AI 的编排层,把 STT / LLM / TTS 的调用链路、对话状态管理、用户打断检测、电话/WebRTC 接入全部封装好了,你只需要写业务逻辑。
架构:四个类说清楚整个系统
LiveKit Agents 的核心是四个类,理解它们就够了。
Agent 是业务逻辑单元,类似一个带着提示词的对话实例。你定义它会做什么、有什么工具可以调用。
AgentSession 是会话管理。它把 STT、LLM、TTS 三个模型串成一个管道,管理对话状态、语音活性检测(VAD)、以及什么时候触发回复。
AgentServer 是进程入口,负责接收用户请求、分发任务、启动会话,类似 web server 里的 request handler。
JobContext 和 RunContext 是请求上下文,持有房间连接、用户数据等执行信息。
from livekit.agents import (
Agent, AgentServer, AgentSession, JobContext,
RunContext, cli, function_tool, inference,
)
@function_tool
async def lookup_weather(context: RunContext, location: str):
"""查询天气"""
return {"weather": "晴天", "temperature": 26}
server = AgentServer()
@server.rtc_session()
async def entrypoint(ctx: JobContext):
session = AgentSession(
vad=inference.VAD(), # 语音活动检测
stt=inference.STT("deepgram/nova-3"), # 语音转文字
llm=inference.LLM("google/gemma-4-31b-it"), # 理解 + 生成
tts=inference.TTS("cartesia/sonic-3"), # 文字转语音
)
agent = Agent(
instructions="你是一个友好的语音助手。",
tools=[lookup_weather],
)
await session.start(agent=agent, room=ctx.room)
await session.generate_reply(instructions="向用户问好并询问今天的感受")
这套架构的好处是:你想换 TTS 服务商,从 Cartesia 换成 ElevenLabs,只需要改一行配置。
MCP 集成:用 MCP 工具不用重写协议栈
对 AI 编程工程师来说,最值得关注的功能是 Native MCP 支持。
接入 MCP 服务器提供的工具,在 LiveKit Agents 里只需要这样:
from livekit.agents import function_tool
@function_tool
async def query_database(context: RunContext, sql: str):
"""通过 MCP 数据库服务执行查询"""
# 实际调用 MCP server 暴露的工具
return {"result": "..."}
@function_tool 装饰器会自动处理 MCP 协议转换。你写的 Python 函数就是 MCP 工具,LiveKit Agents 负责把你的函数签名转成 MCP schema,把调用结果转回来。
对于想用语音控制 AI 编程工具的场景,这个能力很关键:你不需要自己在 LiveKit 的语音层和 MCP 协议之间写桥接代码。
LiveKit 官方还提供了一套配套工具:
- LiveKit Docs MCP Server:给 AI coding agent 访问 LiveKit 文档、代码搜索、示例代码
- LiveKit Agent Skill:架构指导和最佳实践,包括工作流设计、handoff 机制、测试模式
实测:200 行代码能跑一个完整的语音 Agent
LiveKit Agents 的 example 目录里有一个 multi_agent.py,完整跑一个多轮对话的语音助手不到 200 行。
支持的功能包括:
- 语音打断和自然切话(semantic turn detection,基于 transformer 模型)
- WebRTC 实时通话(LiveKit 自有的开源媒体服务器)
- 电话接入(通过 SIP trunk)
- 多 Agent 级联(一个 Agent 收集信息后交接给另一个 Agent)
- Realtime API 和标准 LLM 混用
和 AI 编程工具的结合点
今天配 AI 编程工具的一个实际场景:用语音唤起 Claude Code 执行代码审查,然后把审查结果用 TTS 读出来。LiveKit Agents 的 MCP 集成让这件事变成了可能:
- 语音输入 → STT 转文字
- 文字发给 Claude Code MCP Server,执行代码审查
- MCP 结果转 TTS,用语音读出审查意见
整条链路不需要写任何媒体处理代码,LiveKit Agents 把 WebRTC 和媒体流处理封装好了,你只需要关注业务逻辑。
下一步
如果你在配语音 AI 产品,推荐从这个顺序开始:
pip install "livekit-agents[openai,deepgram,cartesia]"装好核心包- 看官方 examples/voice_agents 目录里的
simple_agent.py,50 行跑通全流程 - 看 multi_agent.py 了解多轮对话和打断处理
- 装 LiveKit Agent Skill:
npx skills add livekit/agent-skills,给 AI coding agent 加上架构指导
开源地址:github.com/livekit/agents,Apache-2.0 协议,可以完全自托管。
如果你正在配类似的方案,欢迎说说踩了哪些坑。
评论区
登录后可评论。