- 高級整備工場の電話に出られないことによる売上損失を解決するため、実際に電話応対を行う**AIレセプショニスト「Axle」**を開発
- AIは**Retrieval-Augmented Generation(RAG)**ベースで構築され、Webサイトから収集した実際のサービス・価格情報を根拠に正確な回答を提供
- Vapi、Deepgram、ElevenLabs、FastAPI、MongoDB Atlasなどを連携し、電話接続、音声認識・合成、会話記録保存機能を実装
- 音声品質は自然なトーンと短い文の構成に調整され、顧客に親しみやすく、それでいてプロフェッショナルな応答を提供
- 今後は予約システム・SMS通知・コールバックダッシュボードへ拡張予定で、業務特化型の音声エージェントでは知識ベースとエスカレーション設計が重要
AIレセプショニスト構築プロセス
- 高級自動車整備工場を運営する兄が電話に出られないことで毎月数千ドルの損失を被っていた問題を解決するため、カスタム**AIレセプショニスト「Axle」**を構築
- 単なるチャットボットではなく、実際に電話を受けられる音声ベースのエージェントとして設計され、価格・営業時間・ポリシーなど実情報に基づいて顧客問い合わせに対応
- プロジェクトは3段階で構成:知識ベース構築(RAGパイプライン) → 電話接続とサーバー連携 → 音声品質と会話トーンの調整
Step 1: 頭脳の構築(RAGパイプライン)
- **Retrieval-Augmented Generation (RAG)**方式を使い、AIが実データに基づいて応答するよう設計
- 単純にLLMを使うと誤った価格提示などの**幻覚(hallucination)**リスクがあるため、実際の情報だけを根拠に回答するよう制限
- Webサイトデータのスクレイピングによって21件以上の文書を収集し、サービスの種類・価格・所要時間・営業時間・支払い方法・保証・代車ポリシーなどを含めた
- MongoDB Atlasに知識ベースを保存し、**Voyage AI (voyage-3-large)**モデルで1024次元のベクトル埋め込みを生成
- Atlas Vector Searchインデックスを通じて意味ベースの検索を実行
- 顧客の質問が入ると同じ埋め込みモデルでクエリを変換し、意味的に類似した上位3件の文書を検索
- **Anthropic Claude (claude-sonnet-4-6)**モデルを使い、検索された文書を文脈として応答を生成
- システムプロンプトには「知識ベース外の情報は禁止、簡潔で会話調を維持、不明な場合はコールバックを提案」というルールを含めた
- 結果として、ターミナルで「オイル交換の費用は?」のような質問に対して、実際の価格とサービス内容を正確に回答できるようになった
Step 2: 実際の電話番号への接続
- AIの頭脳を実際の電話システムに接続するため、Vapiプラットフォームを使用
- 電話番号の購入、Deepgramベースの音声認識、ElevenLabsベースの音声合成、リアルタイムの関数呼び出し機能を提供
- FastAPI Webhookサーバーを構築
- Vapiが顧客の質問を
tool-callsリクエストとして/webhookエンドポイントに送信
- サーバーはこれをRAGパイプラインに渡してClaudeの応答を受け取り、再びVapiへ送信
- 自然な会話スピードを保つために遅延の最小化が必要
- Ngrokを使ってローカルサーバーを外部HTTPS URLとして公開し、開発中でもリアルタイムでテスト可能
-
Vapiアシスタント設定
- あいさつ文と2つのツール(
answerQuestion, saveCallback)をWebhookに接続
- 質問に答えるか、分からない場合は名前と電話番号を受け取ってコールバックを保存
- 会話メモリ機能により以前の会話の文脈を維持
- 「営業時間はどうなっていますか?」→「ではタイヤ交換はいくらですか?」のような連続質問にも対応可能
-
MongoDBへの通話ログ保存
- 発信番号、質問、応答、人間の担当者への切り替え有無、タイムスタンプを記録
- コールバック要求は別の
callbacksコレクションに保存して後続連絡を可能にした
- これにより顧客問い合わせパターンとコール量の分析が可能
Step 3: 音声品質の調整
- テキスト応答と音声応答の違いを踏まえ、音声伝達の最適化が必要
- 文章としては自然でも、音声で聞くと不自然に感じられることがある
-
ElevenLabsの音声選定
- 約20種類の音声を試した結果、**「Christopher」**の音声が最も自然で整備工場の雰囲気に適していた
- あまりにロボットっぽい声や、過度に明るい声は不適切
-
システムプロンプトの修正
- 短い文、Markdownの除去、「いい質問ですね!」のような不要な文句の削除
- 価格は自然言語で発音(“forty-five dollars”)
- 応答は2〜4文以内に制限
- 目標は親しみやすくプロフェッショナルな人間らしい音声の実現
-
エスカレーション(コールバック)フローのテスト
- 知識ベースにない質問が来た場合、AIは分からないと伝え、名前・番号を聞いてMongoDBに保存
- 整備工場のオーナーが直接フォローアップできる
-
統合テストの作成
- RAGパイプライン、Webhook処理、全体フローを検証
- 不正なリクエスト、検索結果なし、コールバック番号の欠落などのエッジケース処理も含めた
技術スタック構成
- Vapi (Deepgram & ElevenLabs統合) — 電話番号、音声認識、音声合成、関数呼び出し
- Ngrok — ローカル開発用HTTPSトンネル
- FastAPI + Uvicorn — Webhookサーバー
- MongoDB Atlas — 知識ベース、ベクトル検索、通話ログ、コールバックキュー
- Voyage AI (voyage-3-large) — 意味ベースのテキスト埋め込み
- Anthropic Claude (claude-sonnet-4-6) — 知識ベースに基づく応答生成
- Python —
pymongo, voyageai, anthropic, fastapiで構成
- Copilot CLI — ビルド自動化ツール
次のステップ
- 現在のAIは質問応答とコールバック収集機能まで完成
- 次の目標はカレンダー連携によるリアルタイム予約、SMS通知、コールバック管理ダッシュボード、セキュリティ強化、Railwayデプロイ
- 完成すれば24時間運用が可能になり、電話応答の取りこぼしによる売上損失を防止
- 最も難しかった部分はコードではなく、整備工場に合う音声トーンの実現
- 核心となる教訓:業務特化型の音声エージェントに生のLLMをそのまま使わないこと
- 実際の知識ベースに基づかせ、**分からないときの対応フロー(エスカレーション)**を必ず設計する必要がある
- これは例外対応ではなく中核機能である
1件のコメント
Hacker Newsのコメント
以前、サービスアドバイザー(受付担当) として働いていた。記事で述べられているシステムは、現実的には機能しないと思う
こういう開発は単なる 傲慢 を超えて危険だ。検証もなく仮定だけで作れば、他人の生計を危うくする
うちの地域の Subaruディーラー では、電話予約時にAIアシスタントを選べる。使ってみると、人間より正確で速かった。Taco Bell のAI注文も同様に素晴らしかった。こういうケースでは人と話さなくても不利益はなく、必要ならいつでも人につないでもらえる
こういうブログ記事は半分の話にすぎない。実際に 売上が増えたのか、顧客がボットであることを気にしたのか、失敗事例があったのか が気になる
私は最近、LLMベースの電話アシスタント をかなり好意的に見ている。Mint Mobileのカスタマーサポートに電話したとき、LLMが自然に理解して1分で問題を解決してくれた。以前なら20分以上待っていたような案件だ
記事によれば、その整備工場は電話に出られず 毎月数千ドルの損失 を出しているという。だとすれば、月500ドル程度の 外注受付担当 を置くほうが、はるかにROIが高い
最近はロボット対応だと感じたらすぐ切るようにしている。でも、そのうち AI音声 が人間と区別できないレベルになる気がする。そのときには電話に対する 信頼 が崩れるかもしれない。すでにメールやLinkedInはAIスパムであふれていて、だから電話に移ったのに、それもすぐ失われそうだ
「これは汎用チャットボットではない」と言っていたが、実質的には 2026年型の汎用チャットボット にすぎない
ブログの「About」ページを見ると、筆者は コーディングを学んで金持ちになった というインフルエンサーに影響を受けたらしい。だが、そうした姿勢は私が望む エンジニアリング文化の方向性 とはかけ離れている
人々が AIで個人ブログを書くこと に少し憂鬱さを感じる
ここで RAG は本当に必要だろうか。単なる価格表と営業時間程度なら、コンテキストウィンドウ に全部入る