メインコンテンツまでスキップ

実装例

実践的なAIボットの実装例を紹介します。これらのサンプルコードを参考に、用途に応じたボットを開発できます。

📦 GitHubリポジトリ: https://github.com/urth-inc/metatell-ai-bot

📂 実装例ディレクトリ: https://github.com/urth-inc/metatell-ai-bot/tree/develop/examples

サンプルボット一覧

metatell Bot SDKには以下のサンプル実装が含まれています。

サンプル名説明主な機能
basic-bot基本的なチャットボットメンション返信、利用者の追従、アニメーション
voice-botWAV音声ボットWAV再生、ルーム音声の録音、利用者の追従
speech-to-speech-bot音声間変換ボット音声認識→処理→音声合成
dify-botDify統合ボット外部AI APIとの連携
voice-ai-botGemini Live音声ボットルーム音声のストリーミング、リアルタイム音声応答
bt-botビヘイビアツリーボット優先度付き自律行動、LLM発話、カスタムノード

voice-bot の概要

WAVファイルをルームへ再生し、ルームから受信したPCM音声をWAVファイルへ保存するサンプルです。

主な機能

  • WAVファイルを48kHzのPCMへ変換してルームへ再生します。
  • ルームから受信した音声をローカルのrecordingsディレクトリへ保存します。
  • キー操作でWAVの再生と録音、接続の終了ができます。
  • 近くの利用者を追従します。

セットアップと起動

# リポジトリのルートで依存関係をインストールしてビルド
pnpm install
pnpm build

# サンプルディレクトリに移動
cd examples/voice-bot

# voice-bot固有の依存関係をインストール
npm ci

# ボットの起動
npm start -- YOUR_ROOM_URL

第2引数へWAVファイルのパスを指定できます。 省略した場合はサンプル付属の音声を使用します。

キー動作
pWAVファイルを再生します。
r停止中の録音を再開します。起動直後は録音が自動で開始されます。
s録音を停止し、WAVファイルを保存します。
q録音を停止して接続を終了します。

basic-bot の概要

メンションへ返信し、近くの利用者を追従する最小構成のチャットボットです。

主な機能

  • 自分宛てのメンションへの返信
  • 在室ユーザーの確認
  • 近くの利用者への移動と視線制御
  • 移動中と待機中のアニメーション切り替え

speech-to-speech-bot の概要

音声を認識して処理し、音声で応答するボットです。

主な機能

  • 音声ストリームの処理
  • リアルタイム音声認識
  • テキスト処理(翻訳、要約など)
  • 音声合成と配信

dify-bot の概要

Dify APIと連携する高度なAIボットです。

主な機能

  • 外部AI APIとの連携
  • 会話履歴の管理
  • ユーザーごとのコンテキスト保持
  • ストリーミング応答の分割送信

カスタムボットの作成

用途に応じて様々なボットを作成できます。

ゲームマスターボット

  • クイズゲームの進行
  • スコア管理
  • プレイヤー管理

サポートボット

  • FAQ応答
  • チケット作成
  • ユーザーガイダンス

モデレーターボット

  • ルール違反の検出
  • ユーザー管理
  • 統計レポート

デプロイと運用

公式サンプルには、PM2の設定ファイルやDockerfileは含まれていません。 常時運用する場合は、利用する実行環境に合わせてプロセス管理またはコンテナの設定を用意してください。

  • APIキーと認証トークンをシークレットとして管理します。
  • SIGINTSIGTERMを受けたときに接続を終了します。
  • 接続失敗と再接続を監視し、ログへ機密値を出力しないようにします。
  • LLM、音声認識、音声合成など外部サービスの利用量と費用を監視します。