实时语音 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。

JobContextRunContext 是请求上下文,持有房间连接、用户数据等执行信息。

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 集成让这件事变成了可能:

  1. 语音输入 → STT 转文字
  2. 文字发给 Claude Code MCP Server,执行代码审查
  3. MCP 结果转 TTS,用语音读出审查意见

整条链路不需要写任何媒体处理代码,LiveKit Agents 把 WebRTC 和媒体流处理封装好了,你只需要关注业务逻辑。

下一步

如果你在配语音 AI 产品,推荐从这个顺序开始:

  1. pip install "livekit-agents[openai,deepgram,cartesia]" 装好核心包
  2. 看官方 examples/voice_agents 目录里的 simple_agent.py,50 行跑通全流程
  3. 看 multi_agent.py 了解多轮对话和打断处理
  4. 装 LiveKit Agent Skill:npx skills add livekit/agent-skills,给 AI coding agent 加上架构指导

开源地址:github.com/livekit/agents,Apache-2.0 协议,可以完全自托管。

如果你正在配类似的方案,欢迎说说踩了哪些坑。

评论区

0 条评论

登录后可评论。

Prompt 工程 113 阅读