@AISuperDomain: 实时语音 Agent 正在从“演示玩具”走向真正可用,而 LiveKit Agents 可能是目前最完整的开源框架之一。 它不只是把 STT、LLM 和 TTS 串起来,还直接提供: • WebRTC 实时音视频 • 电话呼入与呼出 • …
摘要
LiveKit Agents 是一个开源的实时语音 Agent 框架,支持 WebRTC、电话集成、语义轮次检测、MCP 工具调用和多 Agent 交接,帮助开发者快速构建 AI 客服、电话机器人等实时语音应用。
查看缓存全文
缓存时间: 2026/08/04 20:15
实时语音 Agent 正在从“演示玩具”走向真正可用,而 LiveKit Agents 可能是目前最完整的开源框架之一。
它不只是把 STT、LLM 和 TTS 串起来,还直接提供:
• WebRTC 实时音视频 • 电话呼入与呼出 • 语义轮次检测,减少抢话 • 原生 MCP 工具调用 • 多 Agent Handoff • 内置测试与 LLM Judge • 支持自托管完整技术栈
开发者可以自由组合不同厂商的语音和大模型,快速构建 AI 客服、电话机器人、会议助手及实时语音应用。
GitHub:
livekit/agents
Source: https://github.com/livekit/agents
Looking for the JS/TS library? Check out AgentsJS
What is Agents?
The Agent Framework is designed for building realtime, programmable participants that run on servers. Use it to create conversational, multi-modal voice agents that can see, hear, and understand.
Features
- Flexible integrations: A comprehensive ecosystem to mix and match the right STT, LLM, TTS, and Realtime API to suit your use case.
- Integrated job scheduling: Built-in task scheduling and distribution with dispatch APIs to connect end users to agents.
- Extensive WebRTC clients: Build client applications using LiveKit’s open-source SDK ecosystem, supporting all major platforms.
- Telephony integration: Works seamlessly with LiveKit’s telephony stack, allowing your agent to make calls to or receive calls from phones.
- Exchange data with clients: Use RPCs and other Data APIs to seamlessly exchange data with clients.
- Semantic turn detection: Uses a transformer model to detect when a user is done with their turn, helps to reduce interruptions.
- MCP support: Native support for MCP. Integrate tools provided by MCP servers with one line of code.
- Builtin test framework: Write tests and use judges to ensure your agent is performing as expected.
- Open-source: Fully open-source, allowing you to run the entire stack on your own servers, including LiveKit server, one of the most widely used WebRTC media servers.
Installation
To install the core Agents library, along with plugins for popular model providers:
pip install "livekit-agents[openai,deepgram,cartesia]"
Docs and guides
Documentation on the framework and how to use it can be found here
Building with AI coding agents
If you’re using an AI coding assistant to build with LiveKit Agents, we recommend the following setup for the best results:
-
Install the LiveKit Docs MCP server — Gives your coding agent access to up-to-date LiveKit documentation, code search across LiveKit repositories, and working examples.
-
Install the LiveKit Agent Skill — Provides your coding agent with architectural guidance and best practices for building voice AI applications, including workflow design, handoffs, tasks, and testing patterns.
npx skills add livekit/agent-skills --skill livekit-agents
The Agent Skill works best alongside the MCP server: the skill teaches your agent how to approach building with LiveKit, while the MCP server provides the current API details to implement it correctly.
Core concepts
- Agent: An LLM-based application with defined instructions.
- AgentSession: A container for agents that manages interactions with end users.
- entrypoint: The starting point for an interactive session, similar to a request handler in a web server.
- AgentServer: The main process that coordinates job scheduling and launches agents for user sessions.
Usage
Simple voice agent
from livekit.agents import (
Agent,
AgentServer,
AgentSession,
JobContext,
RunContext,
cli,
function_tool,
inference,
)
@function_tool
async def lookup_weather(
context: RunContext,
location: str,
):
"""Used to look up weather information."""
return {"weather": "sunny", "temperature": 70}
server = AgentServer()
@server.rtc_session()
async def entrypoint(ctx: JobContext):
session = AgentSession(
vad=inference.VAD(),
# any combination of STT, LLM, TTS, or realtime API can be used
# this example shows LiveKit Inference, a unified API to access different models via LiveKit Cloud
# to use model provider keys directly, replace with the following:
# 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("google/gemma-4-31b-it"), # low-latency gemma, hosted on LiveKit
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)
You’ll need the following environment variables for this example:
- LIVEKIT_URL
- LIVEKIT_API_KEY
- LIVEKIT_API_SECRET
Multi-agent handoff
This code snippet is abbreviated. For the full example, see multi_agent.py
...
class IntroAgent(Agent):
def __init__(self) -> None:
super().__init__(
instructions=f"You are a story teller. Your goal is to gather a few pieces of information from the user to make the story personalized and engaging."
"Ask the user for their name and where they are from"
)
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,
):
"""Called when the user has provided the information needed to make the story personalized and engaging.
Args:
name: The name of the user
location: The location of the user
"""
context.userdata.name = name
context.userdata.location = location
story_agent = StoryAgent(name, location)
return story_agent, "Let's start the story!"
class StoryAgent(Agent):
def __init__(self, name: str, location: str) -> None:
super().__init__(
instructions=f"You are a storyteller. Use the user's information in order to make the story personalized."
f"The user's name is {name}, from {location}",
# override the default model, switching to Realtime API from standard LLMs
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=inference.VAD(),
stt="deepgram/nova-3",
llm="google/gemma-4-31b-it", # low-latency gemma, hosted on LiveKit
tts="cartesia/sonic-3:9626c31c-bec5-4cca-baa8-f8ba9e84c8bc",
userdata=userdata,
)
await session.start(
agent=IntroAgent(),
room=ctx.room,
)
...
Testing
Automated tests are essential for building reliable agents, especially with the non-deterministic behavior of LLMs. LiveKit Agents include native test integration to help you create dependable agents.
@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()
await (
result.expect.next_event()
.is_message(role="assistant")
.judge(llm, intent="assistant should be asking the user what they would like")
)
Examples
For more examples and detailed setup instructions, see the examples directory. For even more examples, see the python-agents-examples repository.
🎙️ Starter AgentA starter agent optimized for voice conversations. |
🔄 Multi-user push to talkResponds to multiple users in the room via push-to-talk. |
🎵 Background audioBackground ambient and thinking audio to improve realism. |
🛠️ Dynamic tool creationCreating function tools dynamically. |
☎️ Outbound callerAgent that makes outbound phone calls |
📋 Structured outputUsing structured output from LLM to guide TTS tone. |
🔌 MCP supportUse tools from MCP servers |
💬 Text-only agentSkip voice altogether and use the same code for text-only integrations |
📝 Multi-user transcriberProduce transcriptions from all users in the room |
🎥 Video avatarsAdd an AI avatar with Tavus, Bithuman, LemonSlice, and more |
🍽️ Restaurant ordering and reservationsFull example of an agent that handles calls for a restaurant. |
👁️ Gemini Live visionFull example (including iOS app) of Gemini Live agent that can see. |
Running your agent
Testing in terminal
python myagent.py console
Runs your agent in terminal mode, enabling local audio input and output for testing. This mode doesn’t require external servers or dependencies and is useful for quickly validating behavior.
Developing with LiveKit clients
python myagent.py dev
Starts the agent server and enables hot reloading when files change. This mode allows each process to host multiple concurrent agents efficiently.
The agent connects to LiveKit Cloud or your self-hosted server. Set the following environment variables:
- LIVEKIT_URL
- LIVEKIT_API_KEY
- LIVEKIT_API_SECRET
You can connect using any LiveKit client SDK or telephony integration. To get started quickly, try the Agents Playground.
Running for production
python myagent.py start
Runs the agent with production-ready optimizations.
License
The Agents framework is licensed under Apache-2.0. The LiveKit turn detection models are licensed under the LiveKit Model License.
Contributing
The Agents framework is under active development in a rapidly evolving field. We welcome and appreciate contributions of any kind, be it feedback, bugfixes, features, new plugins and tools, or better documentation. You can file issues under this repo, open a PR, or chat with us in the LiveKit community.
Development setup
This project uses uv for package management. To install dependencies for development:
uv sync --all-extras --dev
Examples
This project includes many examples in the examples directory. To run them, create the file examples/.env with credentials for LiveKit Server and any necessary model providers (see examples/.env.example), then run:
uv run examples/voice_agents/basic_agent.py dev
For more information, see the examples README.
Tests
Unit tests are in the tests directory and can be run with:
uv run pytest --unit
Integration tests for each plugin require various API credentials and run automatically in GitHub CI for PRs submitted by project maintainers. See the tests workflow for details.
Formatting
This project uses ruff for formatting and linting:
uv run ruff format
uv run ruff check --fix
Documentation
To generate docs locally with pdoc:
uv sync --all-extras --group docs
uv run --active pdoc --skip-errors --html --output-dir=docs livekit
| LiveKit Ecosystem | |
|---|---|
| Agents SDKs | Python · Node.js |
| LiveKit SDKs | Browser · Swift · Android · Flutter · React Native · Rust · Node.js · Python · Unity · Unity (WebGL) · ESP32 · C++ |
| Starter Apps | Python Agent · TypeScript Agent · React App · SwiftUI App · Android App · Flutter App · React Native App · Web Embed |
| UI Components | React · Android Compose · SwiftUI · Flutter |
| Server APIs | Node.js · Golang · Ruby · Java/Kotlin · Python · Rust · PHP (community) · .NET (community) |
| Resources | Docs · Docs MCP Server · CLI · LiveKit Cloud |
| LiveKit Server OSS | LiveKit server · Egress · Ingress · SIP |
| Community | Developer Community · Slack · X · YouTube |
相似文章
livekit/agents
LiveKit Agents 是一个用于构建实时、多模态语音智能体的开源框架,这些智能体能够看、听和理解,并具备灵活的 STT/LLM/TTS 集成、任务调度、电话支持、MCP 兼容性以及内置测试框架。
@mylifcc: 语音 Agent 正在爆发,生产里却大多还是黑盒。 昨天(7月21日)LangSmith 正式上线了 Python 端语音 tracing 支持,覆盖目前最主流的 4 个框架: Pipecat LiveKit OpenAI Realtim…
LangSmith 正式上线 Python 端语音 tracing 支持,覆盖 Pipecat、LiveKit、OpenAI Realtime 和 Gemini Live 四个主流框架,将语音对话纳入与文本 Agent 同一套可观测、可评估的工作流,解决了语音 Agent 可调试性差的痛点。
@DanKornas: 实时语音智能体需要的不仅仅是 LLM 调用——它们还需要传输、语音组件、通话处理以及部署路径。
TEN 是一个用于构建实时多模态对话式 AI 智能体的框架,提供可配置的 STT、LLM 和 TTS 组件、可视化设计器,以及包括自托管和拆分部署在内的部署选项。
@DanKornas:构建实时语音智能体需要协调音频流、轮次检测、中断、模型调用和媒体路由…
VideoSDK AI Agents 是一个开源 Python 框架,用于构建生产可用的实时语音和多模态 AI 智能体,这些智能体可以以参与者身份加入 VideoSDK 房间,支持统一 Pipeline 配置和多种执行模式。
@seclink: 最近这个开源工具挺火的。 看起来像是 钉钉悟空 、 字节 aily的开源版本。 你可以基于它来实现自己的agent 并且接入到上述的 即时通讯平台之中。 有的哥们基于这个改吧改吧,就能给投资人演示,拿到了不小规模的估值 。 让投资人记忆深…
CowAgent 是一个基于大模型的开源 AI 助理框架,支持自主任务规划、长期记忆、知识库、多模型切换和多渠道接入(微信、飞书、钉钉等),可快速构建和部署个性化 AI agent。