今天在 GitHub Trending 上看到一个有意思的项目:LiveKit Agents,一个专为构建实时、可编程语音 AI Agent 打造的 Python 开源框架,底层基于 LiveKit 自研的 WebRTC 媒体服务器,支持多模态交互(看、听、理解)和电话 PSTN 接入。
一、项目概述
LiveKit Agents 是 LiveKit 生态系统中的一员,定位是让开发者像写普通 Python 代码一样,轻松构建具有生产级质量的实时语音 AI Agent。
核心特性:
- 多模态语音交互:端到端支持 STT(语音识别)→ LLM(推理)→ TTS(语音合成)完整链路,Agent 能看、能听、能理解
- 灵活模型集成:内置 LiveKit Inference 统一推理 API,也支持直连 OpenAI、Deepgram、Cartesia 等主流供应商插件
- 原生 MCP 支持:一行代码即可接入 MCP Server 提供的工具生态
- 内置 VAD 与语义打断:使用 Transformer 模型进行语义级打断,比传统静音检测更精准
- 电话集成:内置 SIP Trunk 支持,可拨打或接听真实电话号码
- 内置测试框架:提供基于 pytest 的 Agent 测试方案,支持 LLM Judge 自动化评测
- 全栈开源:Agent 框架本身、LiveKit Server、媒体服务器全部开源,支持完全自托管
二、核心概念与架构
LiveKit Agents 的核心抽象非常清晰,围绕以下几个概念展开:
- Agent:基于 LLM 的应用,定义 Agent 的指令(instructions)和工具集(tools)
- AgentSession:管理用户交互的核心容器,持有 VAD/STT/LLM/TTS 实例,协调整个对话流程
- JobContext / Job Harlan:类似 Web 服务器的请求上下文,入口函数通过
@server.rtc_session()装饰器注册 - AgentServer:主进程,负责任务调度和 Agent 启动
其架构设计融合了 Web 服务器的编程模型——开发者不需要了解 WebRTC 的底层细节,只需定义 entrypoint 入口函数即可:
from livekit.agents import Agent, AgentSession, JobContext, cli, function_tool, inference
@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=inference.VAD(), # 语音活动检测
stt=inference.STT("deepgram/nova-3", language="multi"),
llm=inference.LLM("google/gemma-4-31b-it"),
tts=inference.TTS("cartesia/sonic-3", voice="9626c31c-bec5-4cca-baa8-f8ba9e84c8bc"),
)
agent = Agent(
instructions="You are a friendly voice assistant built by LiveKit.",
tools=[lookup_weather],
)
await session.start(agent=agent, room=ctx.room)
await session.generate_reply(instructions="greet the user and ask about their day")
if __name__ == "__main__":
cli.run_app(server)
整个架构将 VAD、STT、LLM、TTS 四大组件通过 AgentSession 串联——VAD 检测用户何时说话完毕,STT 把语音转文字,LLM 推理生成回复,TTS 将回复转为语音,通过 WebRTC 实时推送给客户端。开发者只需声明组件实例和 Agent 逻辑,其余交给框架。
三、MCP 工具集成与多 Agent 协作
LiveKit Agents 提供了优雅的 MCP 支持,集成 MCP Server 提供的工具只需一行代码:
# 在初始化 Agent 时声明 MCP 服务器地址即可自动发现和调用工具
agent = Agent(
instructions="你是一个助手,可以使用 MCP 工具",
mcp_agent=mcp.MCPAgent(...) # 接入 MCP Server
)
对于多 Agent 协作场景,框架支持 Agent 之间的交接(handoff),一个 Agent 可以将对话主动转交给另一个 Agent:
class IntroAgent(Agent):
async def on_enter(self):
self.session.generate_reply(instructions="greet the user and gather information")
@function_tool
async def information_gathered(self, context: RunContext, name: str, location: str):
"""收集完信息后交接给故事 Agent"""
context.userdata.name = name
context.userdata.location = location
story_agent = StoryAgent(name, location)
return story_agent, "Let's start the story!"
这种设计使得复杂对话流程(客服 → 销售 → 专家)的编排变得极为自然,每个 Agent 专注自己的领域逻辑,通过工具调用完成跨 Agent 协作。
四、内置测试框架与质量保障
对于 LLM 应用而言,非确定性行为是最大的测试挑战。LiveKit Agents 提供了一套基于 pytest 的测试方案:
@pytest.mark.asyncio
async def test_no_availability() -> None:
llm = google.LLM()
async with AgentSession(llm=llm) as sess:
await sess.start(MyAgent())
result = await sess.run(user_input="Hello, I need to place an order.")
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()
# 用 LLM 作为 Judge 评判 Agent 行为是否符合预期
await result.expect.next_event().is_message(role="assistant").judge(
llm, intent="assistant should be asking the user what they would like"
)
测试框架提供了基于事件的断言 API(expect.next_event()),结合 LLM Judge,可以对 Agent 的行为进行语义级验证——这在传统单元测试框架中是无法实现的。
五、部署与运行模式
LiveKit Agents 支持三种运行模式,适应不同的开发阶段:
# 终端模拟模式,无需外部服务依赖,本地快速验证
python myagent.py console
# 开发模式,热重载 + 连接到 LiveKit Cloud 或自托管服务器
python myagent.py dev
# 生产模式,进程级优化,支持多并发 Agent
python myagent.py start
生产部署需要配置 LIVEKIT_URL、LIVEKIT_API_KEY 和 LIVEKIT_API_SECRET 三个环境变量,可通过 LiveKit Cloud 获取或自建 LiveKit Server。
六、应用场景与生态
LiveKit Agents 的典型应用场景包括:
- 语音客服/销售助手:接听来电,理解意图,调用后端工具,完成订单或预约
- AI 陪练/面试官:模拟真实对话场景,收集用户反馈并打分
- 视频问诊 AI 助手:结合 Gemini Live 支持视觉理解,能看到患者发送的图片或视频
- 电话呼出机器人:主动外呼通知、提醒、调研
- 开发者工具:通过自然语言查询数据库、搜索代码库、执行操作
其生态极为丰富——支持 50+ 语音/AI 供应商插件,客户端 SDK 覆盖 Browser、iOS、Android、Flutter、Unity、Rust、C++ 等所有主流平台,形成了从服务端到客户端的完整开源技术栈。
七、快速开始
# 安装核心包 + 常用插件(OpenAI + Deepgram 语音识别 + Cartesia 语音合成)
pip install "livekit-agents[openai,deepgram,cartesia]"
# 编写 Agent 代码后,本地终端验证
python myagent.py console
# 环境变量准备好后,连接 LiveKit Cloud 开发调试
LIVEKIT_URL=wss://your-livekit-cloud.livekit.cloud \
LIVEKIT_API_KEY=your_api_key \
LIVEKIT_API_SECRET=your_secret \
python myagent.py dev
LiveKit 还提供了 Agents Playground 在线体验,以及 React、SwiftUI、Android Compose 等多平台 UI 组件库,开发者可以快速搭建完整的语音 AI 应用。
八、总结
LiveKit Agents 最大的价值在于降低实时语音 AI 的开发门槛——它将 WebRTC、STT/TTS、LLM 调用、VAD 打断、MCP 工具这些复杂能力整合成一套统一、Pythonic 的 API,开发者无需理解底层协议细节,只需关注业务逻辑。同时,其开源策略(整个技术栈完全开源,支持自托管)和丰富的生态插件,让生产级部署成为可能。如果你正在构建需要语音交互的 AI 应用,LiveKit Agents 是一个值得关注的选择。