SupabaseでAI音声エージェントがライブデータにアクセス
SupabaseとElevenLabsの連携により、アプリケーションデータを音声で操作できる強力なインターフェースが実現します。AIエージェントはデータベースへのクエリ、リアルタイムの変化への対応、サーバーサイドロジックの実行を自然な会話で行い、ユーザーが期待する低遅延パフォーマンスを維持します。
仕組み
ElevenLabsの音声エージェントはSupabaseの自動生成REST APIやEdge Functionsに直接接続し、会話中にリアルタイムでデータへアクセスできます。ユーザーが「注文状況は?」「今日の分析を見せて」などと質問すると、エージェントがSupabaseデータベースからライブデータを即座に取得し、返答します。
主な機能
- リアルタイムデータクエリ 音声会話中に実行
- 安全なAPI連携 認証機能を内蔵
- サーバーレスロジックの実行 Supabase Edge Functions経由
- グローバル低遅延アクセス 分散インフラによる提供
- シームレスなスケーラビリティ ユーザー数の増加に対応
デベロッパー向けメリット
この連携は、既存システムとシームレスに統合できる信頼性の高い音声AIを求めるデベロッパー向けに設計されています。複雑なカスタムバックエンドは不要で、SupabaseのPostgreSQL基盤により標準SQLが使え、ElevenLabsがエンタープライズレベルの音声レイヤーを提供します。
機能
連携機能
音声エージェントをより賢く、反応よくする強力な機能
リアルタイムデータベースアクセス
- ライブ会話中にSupabaseへ直接APIコール
- サブセカンド応答の即時データ取得
- 複雑なSQLクエリやJOINにも対応
- 頻繁にアクセスされるデータのキャッシュ機能
安全な認証・認可
- Supabase AuthによるJWT認証
- ユーザーごとのデータアクセスを制御するRow Level Security
- ロールベース権限によるAPIキー管理
- 機密情報の暗号化通信
Edge Function連携
- 通話中のカスタムサーバーレスロジック実行
- 複数テーブル操作や外部APIコールに対応
- TypeScript/JavaScriptによる複雑なワークフロー対応
- グローバル展開による最小遅延
多言語データ対応
- 31以上の言語で音声対話が可能
- 入力言語に関係なく統一されたデータベースクエリ
- リアルタイム翻訳機能
- 返答時の文化的文脈も保持
リアルタイムデータ同期
- 会話中にライブでデータベース更新
- Webhookによるプッシュ通知対応
- データ変更イベントに応じたレスポンス
- 既存ワークフローとのシームレス連携
インストール
インストールガイド
Supabase+ElevenLabs連携をすぐに始める手順
ステップ1:Supabaseアクセスの準備
Supabaseプロジェクトの認証情報を用意
- app.supabase.comでSupabaseダッシュボードにログイン
- 既存プロジェクトを選択、または新規作成
- 左サイドバーの「設定」→「API」へ移動
- 「Project URL」をコピー(例:https://your-project.supabase.co
- サーバーサイド操作用の「Service Role Key」をコピー
- 公開アクセスが必要な場合は「Anon Key」を控える
Row Level Securityの設定
- Supabaseの「認証」→「ポリシー」へ移動
- エージェントがアクセスするテーブルに適切なRLSポリシーを設定
- Service Role Keyに必要な権限があるか確認
- SQLエディタでサンプルクエリを使いポリシーをテスト
ステップ2:ElevenLabsエージェントの設定
Supabase認証情報を安全に保存
- ElevenLabs会話型AIダッシュボードに移動
- 「設定」→「Secrets Manager」へ進む
- SUPABASE_SERVICE_KEYという名前で新しいシークレットを作成
- SupabaseのService Role Keyを値として貼り付け
- SUPABASE_URLという名前でプロジェクトURLのシークレットも作成
ツール設定にアクセス
- ダッシュボードから音声エージェントを選択
- 「ツール」セクションに移動
- 「新しいツールを追加」をクリックしてデータベース連携を作成
ステップ3:データベースツールの定義
データベースクエリツール
- 名前:query_database
- 説明:Supabaseデータベースからデータを取得
- メソッド:GET
- URL:SupabaseプロジェクトURLの後ろに/rest/v1/table_nameを入力
- apikeyというヘッダーを追加し、保存済みのSUPABASE_SERVICE_KEYを選択
- Authorizationヘッダーを追加し、BearerトークンでSUPABASE_SERVICE_KEYを選択
- Content-Typeヘッダーを追加し、値はapplication/json
レコード挿入ツール
- 名前:insert_record
- 説明:Supabaseデータベースに新規レコードを作成
- メソッド:POST
- URL:SupabaseプロジェクトURLの後ろに/rest/v1/table_nameを入力
- apikeyというヘッダーを追加し、保存済みのSUPABASE_SERVICE_KEYを選択
- Authorizationヘッダーを追加し、BearerトークンでSUPABASE_SERVICE_KEYを選択
- Content-Typeヘッダーを追加し、値はapplication/json
- Preferヘッダーを追加し、値はreturn=representation
レコード更新ツール
- 名前:update_record
- 説明:Supabase内の既存レコードを更新
- メソッド:PATCH
- URL:SupabaseプロジェクトURLの後ろに/rest/v1/table_nameを入力
- apikeyというヘッダーを追加し、保存済みのSUPABASE_SERVICE_KEYを選択
- Authorizationヘッダーを追加し、BearerトークンでSUPABASE_SERVICE_KEYを選択
- Content-Typeヘッダーを追加し、値はapplication/json
- レコード選択用のクエリパラメータを設定
レコード削除ツール
- 名前:delete_record
- 説明:Supabaseデータベースからレコードを削除
- メソッド:DELETE
- URL:SupabaseプロジェクトURLの後ろに/rest/v1/table_nameを入力
- apikeyというヘッダーを追加し、保存済みのSUPABASE_SERVICE_KEYを選択
- Authorizationヘッダーを追加し、BearerトークンでSUPABASE_SERVICE_KEYを選択
- レコード選択用のクエリパラメータを設定
ステップ4:エージェントプロンプトの設定
システムプロンプトの更新
エージェントのシステムプロンプトにデータベースアクセス手順を追加:
以下のツールでSupabaseデータベースにアクセスできます:
- query_database:ユーザーがデータについて質問したときに情報を取得
- insert_record:ユーザー入力に基づき新しいエントリを作成
- update_record:リクエストに応じて既存データを修正
- delete_record:権限がある場合にレコードを削除
insert・update・delete操作を実行する前に、必ずユーザーに内容を確認してください。データ取得時は自然な会話形式で提示しましょう。
ツール説明の設定
各ツールに、エージェントが使い分けやすい明確な説明を記載:
- クエリツール:既存データの質問や検索時に使用
- 挿入ツール:新しい情報追加やレコード作成時に使用
- 更新ツール:既存データの変更リクエスト時に使用
- 削除ツール:情報削除が必要な場合に慎重に使用
レスポンス処理の設定
エージェントに適切なデータベースレスポンス処理を学習させる:
- 返却データを解析し、会話形式で提示
- 結果が空の場合も親切なメッセージで案内
- 挿入・更新成功時は必ず確認メッセージを返す
- エラーメッセージはユーザーに分かりやすく伝える
トラブルシューティング
トラブルシューティング&サポート
スムーズな運用のためのよくある問題と解決策