
2026/03/23 19:32
**プロジェクト概要** 私は、自動車整備工場向けに特化したAI受付システムを開発しました。このシステムは、顧客とのやり取り、予約のスケジューリング、および車両サービス状況のリアルタイム更新をすべて自然言語で行うことができます。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約
Axleは、Daneの高級自動車整備工場向けに設計されたAI受付担当者であり、電話を受け付け、正確な価格情報とポリシー情報を提供し、回答できない場合にはコールバックを取得することで、失われた収益を排除します。システムはRetrieval‑Augmented Generation(RAG)に基づいており、21以上のスクレイプド文書(サービス、価格、処理時間、ポリシー等)のMongoDB Atlas知識ベースがVoyage AIでベクトル埋め込みされ、上位3件の意味的に関連する文書をクエリします。これらの抜粋はAnthropicのClaude Sonnet 4‑6に渡され、誤情報生成(hallucination)を禁止する厳格なシステムプロンプトで処理されます。
電話対応では、Vapiが着信番号を処理し、Deepgramが音声をテキストへ文字起こし、ElevenLabs(「Christopher」ボイス使用)がClaudeの応答を自然に聞こえる音声へ変換します。FastAPI Webhookは呼び出しデータをRAGパイプライン経由でルーティングし、Vapiへ再送信して再生させます。開発中にはNgrokトンネルがローカルサービスを公開HTTPS URLに公開します。
すべての通話ログとコールバックリクエスト(呼び出し者名・番号含む)はMongoDBコレクション(calls & callbacks)に保存され、Daneは通話量、よくある質問、および人間スタッフへのハンドオフを追跡できます。価格は自然な言い回しで発音されます(例:「四十五ドル」)。これはマークダウンや付随語句を排除するプロンプト書き換えにより実現します。
計画中のアップグレードには、予約用カレンダー統合、新しいコールバックへのSMS通知、コールバック管理ダッシュボード、運用環境でのセキュリティ強化、Railwayへのデプロイ、および顧客全体への本格展開が含まれます。
実際の知識ベースにLLMを基盤とし、出力を制御し、堅牢なフォールバックパス(呼び出し者情報の取得)を構築することで、Axleは収益捕捉を向上させ、自動車修理店向けに拡張可能な音声AIソリューションを提供します。
本文
兄のオーナーは高級メカニックショップを経営しており、毎月数千ドルを失っています。
なぜなら週に何百件もの電話に出られず、顧客が途中で切ってしまうからです。
彼は一日中車の下で作業しています;電話が鳴ると答えられないため、顧客はかけ直しを行い、他の人が仕事を引き受けてしまいます―時にはブレーキで450ドル、エンジン修理で2,000ドルもの差があります。
私は彼に Axle(車輪の軸のような響きを持つ)というAI受付係を作っています。
単なるチャットボットではなく、電話に出て回答し、正確な価格・営業時間・方針を把握し、分からない場合は折り返し連絡先を取得します。
1️⃣ 脳(RAG パイプライン)の構築
まず AI が正しく回答できるようにすることが重要です―誤った価格情報を飛ばさないために。
- Dane のウェブサイトをスクレイピング → サービスページと料金をマークダウン化。
- 21+の文書からなる構造化知識ベースを作成:サービス種別、価格、納期、営業時間、支払方法、キャンセルポリシー、保証、ローンカー、専門車種など。
- 各文書を Voyage‑AI(voyage‑3‑large) で埋め込み、MongoDB Atlas に保存(1024 次元ベクトル)。
- 埋め込みフィールドに Atlas Vector Search インデックスを作成。
- 顧客が質問すると、そのクエリを埋め込み、ベクトルインデックスを検索し、上位3件の意味的に類似した文書を取得。
- それらの文書を Anthropic Claude(claude‑sonnet‑4‑6) に渡し、厳格なシステムプロンプトで回答させます: 「知識ベースからのみ回答し、短く会話調に;分からない場合はその旨と折り返し連絡を申し出る」
結果:ターミナルに質問すると、根拠のある答えが得られます。
「オイル交換はいくらですか?」 → 「通常油なら45ドル、合成油なら75ドルです。オイルフィルター、フルード補充、タイヤ空気圧チェックを含みます。所要時間は約30分です。」
2️⃣ 実際の電話番号へ接続
音声プラットフォームとして Vapi を選択しました。
-
通話、Speech‑to‑Text(Deepgram)、Text‑to‑Speech(ElevenLabs)とリアルタイム関数呼び出しを一括で処理します。
-
FastAPI の webhook サーバーを構築。Vapi は
にクエリを送信し、サーバーは RAG パイプラインへ渡して Claude の返答を受け取り、TTS へ返す。/webhook -
開発時は Ngrok を使い、ローカルポート8000 → 公開 HTTPS URL を Vapi ダッシュボードに貼り付け。
-
Vapi アシスタントの設定:挨拶(「こんにちは、Dane’s Motorsport です。ご用件は?」)、ツール(
とanswerQuestion
)を webhook URL にポイント。saveCallback -
Vapi は会話履歴全体を送信;RAG パイプラインは前回の発話をコンテキストとして受け取る。
-
すべての通話を MongoDB にログ:着信番号、クエリ、AI の回答、エスカレーションフラグ、タイムスタンプ。折り返し依頼は別に保存して Dane がフォローアップできるように。
3️⃣ 音声用チューニング
テキストと音声ではトーンや簡潔さが異なります。
- 適切な声を選ぶ – Vapi/ElevenLabs は多数の声を提供。約20種を試した結果、Christopher(落ち着き・自然でゆっくり)を採用。
- 音声向けシステムプロンプトを書き直す – 短い文、マークダウンやフラーは排除し、価格は「forty‑five dollars」など口語化。2〜4文でまとめる。目的は:ウェブページを読むチャットボットではなく、人間のように親切かつ知識豊富に聞こえること。
- エスカレーションフロー – 知識ベースにない質問の場合、AI は「分からない」と言い、名前と折り返し番号を尋ねて MongoDB に保存。Dane は失われたリードが無くなる。
- 統合テスト – RAG パイプライン・webhook ハンドラ・エンドツーエンドフローを網羅;不正なリクエスト、空の検索結果、欠損した折り返し番号などのケースもチェック。
📦 スタック
| コンポーネント | 役割 |
|---|---|
| Vapi(Deepgram & ElevenLabs) | 電話番号取得・Speech‑to‑Text・Text‑to‑Speech・ツール呼び出し |
| Ngrok | ローカル開発用トンネル |
| FastAPI + Uvicorn | Webhook サーバー |
| MongoDB Atlas | 知識ベース保存、ベクトル検索、通話ログ、折り返しキュー |
| Voyage AI(voyage‑3‑large) | テキスト埋め込み・意味検索 |
| Anthropic Claude(claude‑sonnet‑4‑6) | 知識ベースに基づく応答生成 |
| Python (pymongo, voyageai, anthropic, fastapi) | コードの結合 |
| Copilot CLI | 開発支援 |
🚀 今後やるべきこと
- カレンダー連携 – 通話中に予約を取れるように。
- SMS 通知 – 新しい折り返しがあれば即時通知。
- ダッシュボード – すべての保留中折り返しを一元管理。
- セキュリティ強化 – 本番環境向け堅牢化。
- Railway デプロイ – 永続的な公開 URL を確保。
- ハンドオーバー – Dane の実際の顧客に即稼働できる状態へ。
💡 まとめ
ビジネス固有の音声エージェントを作るなら、単純な LLM に頼らないこと。
真実の知識ベースで基盤を作り、回答は必ずそのベースに限定し、フォールバック(折り返し)フローを最初から設計するべきです。エスカレーションパスはオプションではなく、主要機能として組み込む必要があります。
(この記事は AI の支援で執筆されました。)