SupabaseでAI音声エージェントがライブデータにアクセス
機能
連携機能
リアルタイムデータベースアクセス
- ライブ会話中にSupabaseへ直接APIコール
- サブセカンド応答の即時データ取得
- 複雑なSQLクエリやJOINにも対応
- 頻繁にアクセスされるデータのキャッシュ機能
安全な認証・認可
- Supabase AuthによるJWT認証
- ユーザーごとのデータアクセスを制御するRow Level Security
- ロールベース権限によるAPIキー管理
- 機密情報の暗号化通信
Edge Function連携
- 通話中のカスタムサーバーレスロジック実行
- 複数テーブル操作や外部APIコールに対応
- TypeScript/JavaScriptによる複雑なワークフロー対応
- グローバル展開による最小遅延
多言語データ対応
- 31以上の言語で音声対話が可能
- 入力言語に関係なく統一されたデータベースクエリ
- リアルタイム翻訳機能
- 返答時の文化的文脈も保持
リアルタイムデータ同期
- 会話中にライブでデータベース更新
- Webhookによるプッシュ通知対応
- データ変更イベントに応じたレスポンス
- 既存ワークフローとのシームレス連携
インストール
インストールガイド
ステップ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操作を実行する前に、必ずユーザーに内容を確認してください。データ取得時は自然な会話形式で提示しましょう。
ツール説明の設定
各ツールに、エージェントが使い分けやすい明確な説明を記載:
- クエリツール:既存データの質問や検索時に使用
- 挿入ツール:新しい情報追加やレコード作成時に使用
- 更新ツール:既存データの変更リクエスト時に使用
- 削除ツール:情報削除が必要な場合に慎重に使用
レスポンス処理の設定
エージェントに適切なデータベースレスポンス処理を学習させる:
- 返却データを解析し、会話形式で提示
- 結果が空の場合も親切なメッセージで案内
- 挿入・更新成功時は必ず確認メッセージを返す
- エラーメッセージはユーザーに分かりやすく伝える
トラブルシューティング