运维123 - 语音AI
type: channel
link: https://www.sddts.cn/index.php/tag/%E8%AF%AD%E9%9F%B3AI/
items: 为豪华汽车修理店构建 AI 接待员

为豪华汽车修理店构建 AI 接待员
type: item
date: 2026-03-24T00:13:42+00:00
description: 为豪华汽车修理店构建 AI 接待员一、概述1. 简介A. 是什么这是一个为豪华汽车修理店定制的 AI 语音接待员系统，名为 Axle。它能够接听电话、回答价格和服务相关问题、记录回访请求，帮助店主挽回因漏接电话造成的业务损失。B. 为什么学展示 RAG（检索增强生成）在实际业务中的应用演示如何将 LLM 与语音通信集成了解 AI Agent 的完整开发流程学习向量搜索和知识库构建的最佳实践C. 学完能做什么使用 MongoDB Atlas 构建向量知识库集成 Vapi 实现语音 AI 代理使用 Claude 构建基于知识库的问答系统设计企业级 AI 应用的升级路径二、项目背景1. 业务问题Dane 经营一家豪华汽车修理店，每天因在车底下工作而漏接数百个电话。每个未接电话都意味着潜在的收入损失：从 45 美元的刹车服务到 2000 美元的发动机维修。客户电话无人接听时，会转向其他服务商。2. 解决方案概述构建一个名为 Axle 的 AI 接待员，具备以下能力：24/7 接听电话准确回答价格和服务问题了解营业时间、政策等业务信息在无法回答时收集回访信息graph LR A[客户来电] --> B[Vapi 语音平台] B --> C[FastAPI Webhook] C --> D[MongoDB Atlas 向量搜索] D --> E[检索相关文档] E --> F[Anthropic Claude] F --> G[生成回复] G --> C C --> B B --> H[语音播放给客户]三、技术栈1. 核心组件组件用途说明Vapi语音平台电话号码、语音识别/合成、工具调用Deepgram语音转文字集成于 VapiElevenLabs文字转语音集成于 VapiFastAPI + UvicornWebhook 服务处理 Vapi 回调请求MongoDB Atlas数据存储知识库、向量搜索、通话记录Voyage AI文本嵌入voyage-3-large 模型Anthropic Claude响应生成claude-sonnet-4-6Ngrok隧道服务本地开发时暴露公网地址Copilot CLIAI 辅助开发代码生成工具2. 为什么选择这套技术栈Vapi：一站式语音解决方案，无需单独处理电信复杂性MongoDB Atlas：原生向量搜索，知识库和通话记录统一存储Voyage AI：高质量的语义嵌入，适合专业领域知识Claude：优秀的指令遵循能力，减少幻觉问题四、实施步骤1. 步骤一：构建大脑（RAG 管道）A. 知识库准备抓取修理店网站数据，提取以下信息：服务类型和定价（21+ 份文档）营业时间支付方式取消政策质保信息代步车服务擅长的汽车品牌B. 向量化存储使用 Voyage AI 将每个文档转换为 1024 维向量：# 示例：文档向量化 import voyageai voyage_client = voyageai.Client(api_key="your_key") document = "刹车服务：450美元，包含前后刹车片更换..." embedding = voyage_client.embed( [document], model="voyage-3-large" )C. 检索流程graph TD A[用户提问] --> B[使用 Voyage AI 嵌入查询] B --> C[MongoDB Atlas 向量搜索] C --> D[返回前3个最相关文档] D --> E[传递给 Claude + 严格系统提示] E --> F{是否包含答案?} F -->|是| G[生成简洁对话回复] F -->|否| H[请求回访信息] G --> I[返回答案] H --> J[保存到 callbacks 集合]D. 系统提示设计关键原则：仅从知识库回答保持简短对话风格不知道时明确说明禁止幻觉五、步骤二：连接真实电话号码1. FastAPI Webhook 服务器from fastapi import FastAPI, Request from pymongo import MongoClient app = FastAPI() @app.post("/webhook") async def handle_call(request: Request): data = await request.json() # 提取用户查询 query = data.get("message", "") # 调用 RAG 管道 response = rag_pipeline(query) # 记录到 MongoDB client = MongoClient("mongodb+srv://...") db = client["mechanic_…