CLIツール
livekit/agents avatar
livekit/agents

LiveKit AgentsでPythonのリアルタイム音声対話を組み立てる

プロジェクト概要:リアルタイム音声 AI エージェントを構築するためのフレームワーク。これを使用して、見て、聞いて、理解できる会話型のマルチモーダル音声エージェントを作成します。

スター 14,210フォーク 3,740PythonApache-2.0

ひと目でわかる

これは何?
livekit/agentsは、見て、聞いて、理解するサーバー上のマルチモーダル音声エージェントをPythonで構築するフレームワークです。
誰に向いている?
LiveKit Agentsは、音声入出力とLLMを組み合わせたリアルタイム対話を、PythonのAgent、AgentSession、AgentServerとして構成したい開発者向けです。READMEは最小例、OpenAIやDeepgramやCartesiaのプラグイン、console、dev、startの実行モード、イベント順序のテストを示していますが、資格情報の取得、各プロバイダーの料金と設定、ターン検出モデルの細部は別文書に委ねています。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。直近 1 日以内に新しいコミットがあります。
何の言語で書かれている?
主に Python です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

サーバー上の参加者として音声を扱う

LiveKit Agentsは、サーバーで動くリアルタイムのプログラム可能な参加者を構築するPythonフレームワークです。READMEは、見て、聞いて、理解できる対話型のマルチモーダル音声エージェントを目標に挙げています。LiveKitサーバーを含む構成を自分のサーバーで動かせるという説明もあり、音声処理だけの部品ではなく、通信基盤とエージェントの接点を扱います。

主要リポジトリのメタデータでは、Apache-2.0、スター13270、フォーク3626、オープンIssue797、既定ブランチmainが確認できます。JavaScriptとTypeScript向けのAgentsJSは別リポジトリとして紹介されています。Python版と別SDKを混同せず、アプリの言語と採用するクライアントを先に決める必要があります。

AgentからAgentServerまで役割を分ける

READMEは四つの概念を使います。Agentは命令を持つLLMベースのアプリケーション、AgentSessionは利用者との対話を管理するコンテナ、entrypointは対話セッションの開始点、AgentServerはジョブのスケジュールとユーザーセッション用エージェントの起動を調整するメインプロセスです。

この分担は、会話の指示、セッション状態、接続の入口、プロセス管理を一つの関数へ詰め込まないための見取り図になります。READMEは概念と使用例を示しますが、アプリ固有の認証、セッション終了、再接続、権限継承を決めるものではありません。実装時は各境界の入力と終了条件を記録し、音声データとテキストの保存場所を分けて設計してください。

プラグインと環境変数をそろえる

インストール例はpip installにlivekit-agentsのopenai、deepgram、cartesia追加を指定し、コアライブラリと三つのプラグインを入れます。実行にはLIVEKIT_URL、LIVEKIT_API_KEY、LIVEKIT_API_SECRETの環境変数が必要です。資格情報の取得方法はREADMEに詳しくなく、LiveKitドキュメントへのリンクで補われています。

環境変数へ秘密値を置くことは、コードへ直書きしないための入口にすぎません。開発、テスト、本番の値を分け、ログや例外にキーが出ないこと、権限が必要最小限であること、失効と更新の手順があることを確認してください。OpenAI、Deepgram、Cartesiaの組み合わせが自分の地域、契約、音声データ規則に合うかも個別に確認が必要です。

VAD、STT、LLM、TTSを一つの会話へ

最小例では、@function_toolで天気検索のようなツールを定義し、AgentServerを作成し、@server.rtc_sessionでentrypointを登録します。entrypoint内のAgentSessionは、音声活動検出、音声認識、LLM、音声合成で構成されます。モデルの指定はlivekit.inferenceの文字列か、deepgram.STT、openai.LLM、cartesia.TTSのプラグインクラスで行う例が示されています。

会話開始はsession.startとsession.generate_replyで明示されます。音声を認識できたことだけで、ユーザーへの返答、ツール呼び出し、割り込み、無音、終了が正しく扱えるとは限りません。各段階の遅延、失敗、再試行、利用者のキャンセルをイベントとして観測し、モデル名とプラグイン版を固定してから対話品質を評価してください。

引き継ぎをイベント列としてテストする

二つ目の例は、IntroAgentが情報を集め、StoryAgentの新しいインスタンスを返すマルチエージェントの引き継ぎを示します。役割ごとにAgentを分けると、導入、確認、物語生成などの指示を切り替える構成を考えやすくなりますが、引き継ぎ時に何をセッションへ持ち越すかはアプリ側で決める必要があります。

テストではpytestを使いAgentSessionを実行し、関数呼び出しやアシスタントメッセージを含むイベントの順序を検証できます。result.expect.next_eventで順に確認し、LLMを使うジャッジで意図を評価する例があります。LLMの挙動は非決定的とREADMEが説明しているため、最終文面だけでなく、期待するイベント、ツール入力、終了状態を検証する方が再現性を保ちやすいです。

console、dev、startを使い分ける

python myagent.py consoleは端末モードで動き、ローカル音声の入出力を試せます。外部サーバーを必要としないため、最初の会話経路を確認する入口になります。python myagent.py devはホットリロード付きのAgentServerを起動し、一つのプロセスで複数の同時エージェントをホストできるとREADMEにあります。

python myagent.py startは本番向けに最適化された実行方法です。Agents Playgroundやexamplesディレクトリも案内されています。consoleで動いたことを本番準備とみなさず、devでの再読み込み、同時セッション、startでの監視、環境変数、音声データの保持を順に確認してください。READMEは性能値や可用性保証を提示していないため、同時接続数を推測してはいけません。

Apache-2.0とモデルライセンスを分ける

AgentsフレームワークはApache-2.0で提供され、複製、派生物、配布を認める著作権ライセンスと、条件付きの特許ライセンスを含みます。一方、LiveKitのターン検出モデルには別のLiveKit Model Licenseが適用されるとREADMEにあります。フレームワークのライセンスをモデルへそのまま広げないことが重要です。

エコシステム表にはPython Agents SDK、Node.jsのAgentsライブラリ、複数プラットフォームのクライアントSDK、オープンソースのLiveKitサーバーと関連コンポーネントが並びます。編集部の判断では、リアルタイム音声の構成をコードで管理したいチームに候補になります。まずconsoleで短い会話とツール呼び出しを試し、イベントテスト、資格情報、モデルの個別条件、音声データの保存方針を確認してから公開範囲を広げるべきです。

編集部の結論

LiveKit Agentsは、音声入出力とLLMを組み合わせたリアルタイム対話を、PythonのAgent、AgentSession、AgentServerとして構成したい開発者向けです。READMEは最小例、OpenAIやDeepgramやCartesiaのプラグイン、console、dev、startの実行モード、イベント順序のテストを示していますが、資格情報の取得、各プロバイダーの料金と設定、ターン検出モデルの細部は別文書に委ねています。まずローカル音声の短い対話でイベントと秘密情報の扱いを確認し、次に同時接続と本番権限を検証してください。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート