LiveKit Agents: Sprach-KI-Agenten in Echtzeit mit Python bauen
Projektüberblick: Ein Framework zum Erstellen von Sprach-KI-Agenten in Echtzeit. Erstellen Sie damit gesprächige, multimodale Sprachagenten, die sehen, hören und verstehen können.
Auf einen Blick
- Was ist das?
- Das Python-Framework LiveKit Agents von livekit baut Echtzeit-Sprachagenten, die hören, sehen und verstehen, und orchestriert STT-, LLM- und TTS-Anbieter frei untereinander. Job-Verteilung, semantische Sprecherwechsel-Erkennung, MCP-Werkzeuge und ein eingebautes Test-Framework richten es für den Produktionsbetrieb ein.
- Für wen ist es gedacht?
- LiveKit Agents passt für Teams, die Gesprächsagenten mit eigener Anbieterwahl betreiben wollen, denn STT, LLM, TTS und Realtime-APIs lassen sich frei mischen, und der ganze Stack läuft dank Apache-2.0 auf eigenen Servern samt dem LiveKit-WebRTC-Server. Wer nur einen Chatbot ohne Sprachkanal braucht, trägt zu viel Ballast; vor dem Start sollten LIVEKIT_URL, LIVEKIT_API_KEY und LIVEKIT_API_SECRET gesetzt sein.
- Darf ich es kommerziell nutzen?
- Ja. Apache-2.0 ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
- Wird es noch gepflegt?
- Ja. Das Repository hat innerhalb des letzten Tages neue Commits erhalten.
- In welcher Sprache ist es geschrieben?
- Hauptsächlich Python, laut der Sprachstatistik von GitHub.
Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.
TIEFGEHENDE OPEN-SOURCE-ANALYSE
Programmierbare Gesprächsteilnehmer statt One-Shot-Chatbots
Das Agent-Framework von LiveKit beschreibt sich als Werkzeug für Echtzeit- und programmierbare Teilnehmer, die auf Servern laufen. Ziel sind konversationelle, multimodale Sprachagenten, die sehen, hören und verstehen können. Mit rund 13.300 Sternen auf GitHub und der Apache-2.0-Lizenz gehört es zu den verbreitetsten Bausteinen für Sprach-KI in Python, und eine Schwesterbibliothek namens AgentsJS deckt dieselbe Domäne für JavaScript und TypeScript ab.
Der Unterschied zu einem einfachen LLM-Wrapper liegt in der Laufzeitumgebung: Ein Agent ist ein LLM-basiertes Programm mit definierten Instruktionen, das als Teilnehmer an einer WebRTC-Sitzung teilnimmt. Die AgentSession ist der Container, der die Interaktion mit Endnutzern verwaltet, und der entrypoint ist der Startpunkt einer interaktiven Sitzung, vergleichbar mit einem Request-Handler in einem Webserver.
Der AgentServer bildet den Hauptprozess, der Jobverteilung koordiniert und Agenten für Nutzersitzungen startet. Eingebaute Dispatch-APIs verbinden Endnutzer mit Agenten, sodass die Zuteilung von Gespräch zu Agent-Instanz Teil des Frameworks ist, nicht einer handgebauten Schicht.
Freie Mischung aus STT, LLM, TTS und Realtime-API
Die zentrale Flexibilität des Frameworks ist das Anbieterökosystem: Speech-to-Text, LLM, Text-to-Speech und Realtime-API lassen sich je nach Anwendungsfall frei kombinieren. Die Installation zieht den Kern samt Plugins für gängige Anbieter mit einem Befehl: pip install "livekit-agents[openai,deepgram,cartesia]".
Im Beispielcode aus dem README zeigt die AgentSession mit vad=inference.VAD() die Einbindung der Sprachaktivitätserkennung, und der Kommentar macht klar, dass jede Kombination aus STT, LLM, TTS oder Realtime-API zulässig ist. Für dieses Beispiel braucht es drei Umgebungsvariablen: LIVEKIT_URL, LIVEKIT_API_KEY und LIVEKIT_API_SECRET.
Eine weitere Verringerung von Unterbrechungen liefert die semantische Sprecherwechsel-Erkennung: Ein Transformer-Modell stellt fest, wann ein Nutzer mit seinem Beitrag fertig ist. Das ist bei Sprachgesprächen der Unterschied zwischen einem Agenten, der dem Nutzer ins Wort fällt, und einem, der abwartet.
Ein Wettersuche-Agent als Minimalbeispiel
Das README definiert Werkzeuge über den Decorator function_tool. Das Beispiel lookup_weather ist eine async-Funktion mit dem Kontext RunContext und dem Parameter location, deren Docstring Used to look up weather information lautet und die ein Wörterbuch mit weather und temperature zurückgibt. Aus dieser Deklaration macht das Framework ein vom Agenten aufrufbares Werkzeug.
Der Server wird mit server = AgentServer() angelegt, und der entrypoint hängt an den Decorator server.rtc_session(). Innerhalb des entrypoints entsteht die AgentSession, die den VAD und die gewählten Modelle erhält und dann die Gesprächsschleife übernimmt.
Dieses Muster, deklarierte Python-Funktionen als Agentenwerkzeuge zu verwenden, durchzieht das ganze Framework. Ergänzend unterstützt LiveKit Agents das Model Context Protocol nativ: Werkzeuge von MCP-Servern lassen sich laut README mit einer Zeile Code einbinden, womit bestehende MCP-Infrastruktur ohne Adapter weitergenutzt werden kann.
Handoffs zwischen mehreren Agenten
Für mehrstufige Gespräche zeigt das Beispiel multi_agent.py aus examples/voice_agents einen Übergabefluss zwischen mehreren Agenten. Die Klasse IntroAgent erbt von Agent und erhält im Konstruktor Instruktionen, hier als Geschichtenerzähler, der Name und Herkunft des Nutzers erfragt, um die Geschichte zu personalisieren.
Der Hook on_enter erzeugt bei Betreten des Agenten automatisch eine Antwort über session.generate_reply mit der Instruktion, den Nutzer zu begrüßen und Informationen zu sammeln. Das Werkzeug information_gathered ist wieder als function_tool deklariert und nimmt name und location entgegen.
Mit diesem Muster lassen sich Rollen trennen: ein Empfangsagent sammelt Daten, ein Fachagent übernimmt danach. Das README verweist für das vollständige Beispiel auf examples/voice_agents/multi_agent.py, und im Repository livekit-examples/python-agents-examples liegen weitere Umsetzungen, darunter ein Starter-Agent für Sprachgespräche, Push-to-Talk für mehrere Nutzer in einem Raum und Hintergrundaudio für mehr Realismus.
Das eingebaute Test-Framework mit Richtermodellen
Weil LLM-Verhalten nicht deterministisch ist, baut LiveKit Agents Tests direkt ins Framework ein. Ein Test öffnet eine AgentSession mit einem konkreten LLM wie google.LLM, startet mit sess.start(MyAgent()) den Agenten und führt mit sess.run(user_input="Hello, I need to place an order.") eine feste Nutzerwiedergabe aus.
Auf das Ergebnis folgen Erwartungsketten: result.expect.skip_next_event_if(type="message", role="assistant") überspringt variable Nachrichten, result.expect.next_event().is_function_call(name="start_order") verlangt einen bestimmten Funktionsaufruf, und is_function_call_output prüft dessen Rückgabe. Ein .judge-Aufruf am Ende beurteilt die Antwort eines Assistenten durch ein Richtermodell.
Damit lassen sich Dialogverläufe regressionsgeprüft halten, ohne auf Zufall im Modell zu reagieren. Für den Bau mit KI-Coding-Assistenten empfiehlt das README zusätzlich den LiveKit Docs MCP Server für aktuelle API-Details und das Agent Skill, das per npx skills add livekit/agent-skills --skill livekit-agents installiert wird und Arbeitsweise, Handoffs, Aufgaben und Testmuster vermittelt.
Fazit: Der Weg von der Installation zur ersten Gesprächssitzung
LiveKit Agents bündelt die Bausteine, die Sprachagenten im Betrieb schwer machen: Anbieterwahl, Jobverteilung, Sprecherwechsel-Erkennung, Telefonie über den LiveKit-SIP-Stack, RPC- und Data-APIs für den Datenaustausch mit Clients sowie Tests. Der ganze Stack ist quelloffen und läuft auf eigenen Servern, eingeschlossen den LiveKit-WebRTC-Server, der zu den verbreitetsten Medienservern zählt.
Die aktuelle Version livekit-agents@1.7.1 stammt vom August 2026, und die Releases erscheinen in kurzen Abständen, was auf aktive Pflege deutet. Die Dokumentation liegt unter docs.livekit.io/agents, und für Clients stellt das SDK-Ökosystem von LiveKit alle wichtigen Plattformen bereit, vom Browser bis zum Telefon über die SIP-Anbindung.
Wer ausprobieren will, installiert mit pip install "livekit-agents[openai,deepgram,cartesia]", setzt LIVEKIT_URL, LIVEKIT_API_KEY und LIVEKIT_API_SECRET und startet aus dem Repository das Beispiel examples/voice_agents/basic_agent.py. Für eigene Werkzeuge lohnt der Blick auf function_tool und die Beispiele zu dynamischer Werkzeugerzeugung, für verlässliche Dialoge das Test-Framework mit sess.run und den expect-Ketten.
Redaktionelles Fazit
LiveKit Agents passt für Teams, die Gesprächsagenten mit eigener Anbieterwahl betreiben wollen, denn STT, LLM, TTS und Realtime-APIs lassen sich frei mischen, und der ganze Stack läuft dank Apache-2.0 auf eigenen Servern samt dem LiveKit-WebRTC-Server. Wer nur einen Chatbot ohne Sprachkanal braucht, trägt zu viel Ballast; vor dem Start sollten LIVEKIT_URL, LIVEKIT_API_KEY und LIVEKIT_API_SECRET gesetzt sein.
Community-Notizen