Vapi 是一个面向开发者的托管语音 Agent 平台:把语音识别(STT)、大模型推理(LLM)、语音合成(TTS)与电话线路(PSTN/WebRTC)整合成一条可商用的通话管线,通过 REST API 和官方 SDK(Node.js/Python/Web/React)调用。它解决的问题很直接——自建语音 Agent 通常要同时处理流式音频转发、用户说话结束检测(VAD)、说话打断(barge-in)、电话接入与并发扩容,调试周期以周计;而 Vapi 用 Assistant(话术与模型配置)、Call(一次通话会话)、Phone Number(号码线路)三个概念覆盖从搭话术到跑量外呼的完整链路,并在每次通话结束后自动生成转写、录音与 End of Call Report(EOCR,通话结束后的摘要、结构化数据、成本等报告)。官方口径支持 19+ 供应商、100+ 模型组合,宣传端到端延迟通常低于 500ms。本文按“速览 → 安装 → 上手 → 核心能力 → 生产部署”组织,跟随每一步即可打出第一通电话。

岗位关联

掌握 Vapi 意味着你能在一天内把大模型、语音识别与合成、电话线路组装成可商用的语音 Agent——这是语音交互产品从 Demo 走向生产的关键工程能力。

目录
  1. 为什么需要 Vapi:语音 Agent 从“能跑”到“能上线”
  2. 安装与环境配置:拿到 Key 三步就绪
  3. 快速上手:30 分钟打出第一通电话
  4. 核心能力详解:4 大支柱
  5. 生产部署与监控:从上线到运维
  6. AI 应用场景
  7. 常见误区
  8. 面试题
  9. 参考来源
工具类型
语音 Agent 开发平台(托管式 API/SaaS)
开发商
Vapi Inc.(美国,Y Combinator 背景)
开源协议
平台闭源;官方 SDK 开源(MIT)
GitHub Stars
无
主要语言
Python / Node.js / Web·React SDK
当前版本
SaaS 持续发布(无传统版本号,以官方文档与 Changelog 为准)
安装方式
npm install @vapi-ai/server-sdk
下载地址
官方文档
上手难度
★★☆☆☆(低)
适合人群
AI 应用工程师、语音客服/外呼产品团队、Agent 创业团队
同类工具
Retell AI、Bland AI、LiveKit Agents

速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。

为什么需要 Vapi:语音 Agent 从“能跑”到“能上线”

自建语音 Agent 的经典链路是“音频流 → 转写 → LLM → 合成 → 播放”,但真正上线还要额外解决四类问题:一是“用户到底说完没有”的检测,检测不准会抢话或冷场;二是用户中途打断时,如何停止合成并带着上下文重新进入对话;三是电话线路(PSTN)接入需要号码、中继与通话控制能力;四是并发与扩容,高峰期不能掉链子。每一层都有现成组件,但串起来调试通常以周为单位,且每一跳都在累积延迟。

Vapi 把上述能力收拢为一个托管运行时,对外暴露三个核心概念:Assistant(系统提示词、模型、语音、转写、工具等配置)、Call(一次通话会话)、Phone Number(号码线路)。开发者不需要管理媒体服务器,通过 REST API 或 SDK 创建通话,通话结束后自动拿到转写、录音和 EOCR(含摘要、成功评估、结构化数据、成本明细)。计费按分钟,成本透明,特别适合把语音交互当作产品功能而非基础设施的团队。

与开源框架(如 LiveKit Agents)相比,Vapi 是“托管运行时”:省掉运维,但深度定制受平台能力边界限制;与 Retell AI、Bland AI 等同类平台相比,Vapi 的差异化在配置即 API、工具调用机制和开发者文档体验。选型时先明确一件事:是要快速上线,还是要彻底掌控底层管线。

安装与环境配置:拿到 Key 三步就绪

Vapi 没有本地服务可装,核心是拿到两把 Key 并装好 SDK。注册后在控制台 API Keys 页面复制:Private Key 用于服务端(创建通话、管理资源),Public Key 用于浏览器端(Web SDK 初始化)。随后安装 Server SDK(后端集成)与 Web SDK(浏览器通话)。

验证命令返回 [] 即表示鉴权通过。注意 Private Key 泄露等同于账号管理权限泄露,不要写进前端代码或提交到 Git 仓库。

bash15 行
# 1) 安装 Server SDK(服务端创建通话、管理资源)npm install @vapi-ai/server-sdk # 浏览器端集成npm install @vapi-ai/web @vapi-ai/react # Python 环境:官方 Python SDK 包名为 vapi-server-sdk# pip install vapi-server-sdk # 2) 配置环境变量(Private Key 只放服务端)export VAPI_API_KEY="你的_Private_Key" # 3) 验证 Key 是否有效:应返回 assistant 列表,新账号为空数组 []curl -s https://api.vapi.ai/assistant \  -H "Authorization: Bearer $VAPI_API_KEY"

快速上手:30 分钟打出第一通电话

最小可行路径:在 Playground 配好一个 Assistant → 购买一个号码 → 手机拨打验证 → 再用 API 批量外呼。Playground 是控制台内的可视化配置入口,能直接测试对话效果,也可以完全跳过它、全程用 API 定义 Assistant。

1. 控制台 → Assistants → 创建 Assistant:填写名称与系统提示词(如“你是某品牌售后助理,先核对订单号再回答问题”);模型选 gpt-4o-mini(OpenAI,速度快、成本低);语音选 11labs 的 paula;First Message 填开场白“您好,我是xx,请问有什么可以帮您”;转写(Transcriber)选 Deepgram,Turn Detection 保持默认 server-vad;保存后复制 assistantId。

2. 控制台 → Phone Numbers → 购买号码:直接购买一个美国号码(底层为 Twilio,约一分钟开通),在号码详情中绑定刚才创建的 Assistant。

3. 用手机拨打该号码:接通后应听到 First Message,对话结束挂断后,在 Calls 列表能看到该通话的状态、时长、成本,并可打开转写与录音回放。

4. 外呼自动化:用 Server SDK 创建 Call,即可把名单里的手机号批量发起外呼,代码如下。

运行脚本后控制台输出 Call ID,通话结束再执行一次查询即可拿到 EOCR 摘要。进阶技巧:用 assistantOverrides 在单次调用中覆盖 System Prompt 或语音,实现同一 Assistant 多话术;把 EOCR 中的 structuredData 字段回写 CRM,实现全自动留痕。

js16 行
import Vapi from '@vapi-ai/server-sdk'import 'dotenv/config' const client = new Vapi({ token: process.env.VAPI_API_KEY }) // 用 Playground 里创建好的 assistantId 直接外呼const call = await client.calls.create({  phoneNumberId: process.env.PHONE_NUMBER_ID, // 控制台「Phone Numbers」中的号码 ID  customer: { number: '+14155550100', name: 'Demo' },  assistantId: 'your_assistant_id_here',})console.log('通话已发起,Call ID:', call.id) // 通话结束后查询详情(含 End of Call Report)const detail = await client.calls.get(call.id)console.log(detail.endOfCallReport?.summary)

核心能力详解:4 大支柱

支柱一:低延迟会话管线与打断处理。 Vapi 把“转写 → 模型 → 合成”组织成流式管线:音频边传边识别,模型边生成边合成,官方宣传端到端延迟通常低于 500ms(从用户结束说话到 Agent 开口)。管线上有两个关键参数:transcriber(转写服务商,如 Deepgram、OpenAI、Gladia)和 turn detection(判定“用户说完”的方式)。turn detection 有多种模式,如 server-vad(Vapi 服务端统一检测)、provider-vad(交由转写服务商的端点检测)等。打断处理(barge-in)由平台完成:用户插话时立即停止 TTS 播放,把“用户新输入 + 被打断内容摘要”重新交给模型,让 Agent 无缝接话。这两组配置直接决定通话是“抢话”还是“冷场”,是上线前必调的旋钮。

支柱二:“先思考再开口”(model.think)。 在 model 配置下增加 think 子配置(指定思考用的模型),Agent 会先用一个独立模型生成内部思考笔记,再让主模型基于笔记回答。适合金额计算、政策解释、多步推理等复杂问题;代价是每次回答多一次模型调用,延迟和 token 成本上升。是否开启应按问题复杂度决定,不建议全局默认开启。

支柱三:工具调用与结构化数据。 Assistant 可配置 Tools:Function Tool 按 JSON Schema 声明参数,LLM 判断调用时机并生成参数,Vapi 把调用转发到你提供的 HTTP 接口;Webhook Tool 则直接触发指定 URL。这一机制让语音 Agent 在通话中实时查订单、建工单、写 CRM。通话结束后,EOCR 自动产出:summary(摘要)、successEvaluation(是否达成通话目标)、structuredData(按自定义字段提取,如“客户意向:高/中/低”)、costBreakdown(成本明细)与完整转写。业务系统对接 EOCR 即可实现自动留痕与质检,无需人工抽听录音。

支柱四:电话与 Web 双端接入。 电话侧:控制台可直接购买号码并绑定 Assistant;已有 Twilio 账号可 BYO(Bring Your Own Twilio)接入,适合国际号码和已有线路资源。Web 侧:@vapi-ai/web 提供浏览器实时通话——new Vapi(publicKey) 初始化,vapi.start(assistantId) 开始通话、vapi.stop() 结束,完全不需要电话号码;@vapi-ai/react 提供 useVapi Hook 与 VapiComponent,适合 React 产品快速嵌入。Web 与电话共用同一套 Assistant 配置,同一话术两个入口都能跑。

生产部署与监控:从上线到运维

配置即代码。 不建议在控制台手工维护生产配置。Assistant 的完整定义是 JSON,用 POST /assistant 和 PATCH /assistant/:id 创建与更新,把配置存进 Git 仓库并在 CI 中同步。单次通话用 assistantOverrides 覆盖提示词、模型或语音,做 A/B 测试和灰度,避免为每个变体新建 Assistant 造成配置爆炸。

号码与呼叫策略。 国内及国际线路建议 BYO Twilio 并完成企业资质认证,注意主叫号码实名与呼叫时段合规。外呼走 POST /call 或 SDK 的 calls.create,必须提供 phoneNumberId(从哪条线路呼出)、customer.number(打给谁,E.164 格式)与 assistant 或 assistantId。批量外呼前先小流量验证号码信誉与接通率,再逐步放量,避免因号码被标记导致接通率骤降。

可观测性与成本。 控制台 Calls 页面提供逐通话的状态、实时日志(转写/模型/合成各阶段事件)、延迟与成本;API 侧 GET /call/:id 拿到完整 Call 对象,转写与录音地址在 artifacts 中。成本控制手段:给 Assistant 设置 maxDurationSeconds 限制单通通话时长;关注 EOCR 中的成本明细按模型拆分费用,发现异常模型调用及时收敛;工具(Webhook Tool)的请求日志在业务侧也保留一份,便于定位调用失败。

<p class="para-label">避坑清单:</p>

<ul class="dash-list"><li>Key 混淆:Private Key 仅用于服务端,Web SDK 必须用 Public Key;把 Private Key 放进前端代码等于把账号管理权限公开,任何人可代你发起通话并产生费用。</li><li>号码未绑定:外呼前确认 phoneNumberId 已绑定 Assistant,customer.number 必须为 E.164 格式(如 +14155550100),否则会报错或拨打失败。</li><li>turn detection 不调优:默认 server-vad 对多数场景可用,但嘈杂环境或语速差异大时需调整,否则出现抢话或应答迟钝,建议在 Playground 实测后再固化配置。</li><li>忽略 EOCR:每次通话的转写、摘要、结构化数据与成本都在 EOCR 中,上线前把 structuredData 接入 CRM/质检,而不是事后人工翻录音。</li><li>think 模式滥用:model.think 会引入额外模型调用,增加延迟与 token 成本,只对复杂问题开启,简单问答不要开。</li></ul>

维度VapiRetell AIBland AILiveKit Agents
定位开发者优先的托管语音 Agent 平台开发者优先、强调语音听感的 Agent 平台主打企业规模化外呼的语音 AI API开源实时 Agent 框架(WebRTC 底座 + 编排)
编排范式Assistant/Call 配置化,REST + SDK类似 LLM/Agent 配置,SDK 为主电话为中心的 API,外呼/入站统一代码即一切的 Agent worker + 房间/会话
类型约束托管运行时,能力受平台边界限制托管运行时,自研 ASR/TTS 调度托管运行时,外呼与线路能力较强完全自托管,全部由自己实现
学习曲线低(Playground + 文档)低低中高(需懂并发与媒体管线)
生态集成19+ 供应商、100+ 模型、Webhook、SDK多 LLM、BYO LLM、Webhook多模型,偏销售场景模板任意 LLM/STT/TTS,完全自定义
生产部署零运维,按分钟计费零运维,按分钟计费零运维,按分钟计费自建服务,需自行运维与扩容
License闭源 SaaS + 开源 SDK(MIT)闭源 SaaS + 开源 SDK闭源 SaaSApache 2.0
适合谁客服/外呼/RAG 团队,快速上线对语音听感要求高的团队大规模外呼、电销/提醒场景需深度定制或私有化部署的团队

选型建议:一周内上线且不愿维护媒体服务器的团队,在 Vapi 与 Retell 之间二选一——Vapi 强在配置即 API 与工具调用生态,Retell 强在语音听感调优;以大规模外呼、销售线索触达为核心选 Bland;有工程团队且需要私有化或彻底掌控底层管线,选 LiveKit Agents 自建,但并发与稳定性要自己负责。

AI 应用场景

外呼回访与预约提醒的批量自动化

阶段:语音 Agent 会话 + End of Call Report 结构化回填

解决的问题:人工外呼话术不统一、无留痕,质检靠抽听录音。Vapi 通过 API 按名单批量外呼,每次通话自动产出转写、录音与 EOCR,结构化字段(如“客户是否同意续费、意向预约时间”)可直接回写 CRM,质检从抽听录音变为按字段稽核。

具体案例:运营系统批量下发外呼任务(每日数百至上千通由平台并发承载),每通结束即回调 EOCR:summary 记录沟通结果,structuredData 提取“是否本人接听、是否同意、意向日期”等字段自动写入业务库;单条核验从听录音的分钟级降到查字段的秒级。外呼前需配置主叫号码实名与呼叫时段,先小流量验证接通率再放量。

官网与业务前端的 Web 语音助手

阶段:Web SDK 接入 + Tool 调用(查订单 / 预约)

解决的问题:用户打电话有心理门槛,纯文字聊天在移动端输入成本高。用 @vapi-ai/web 在浏览器内直接对话,无需安装 App、无需电话号码,适合售前咨询、售后引导、预约表单等页面。

具体案例:某品牌官网将语音助手嵌入产品咨询页,用户点击麦克风即说;Agent 通过 Webhook Tool 实时查询库存与价格,回答同时把会话摘要写入工单系统,整个链路无需改造现有业务系统,只新增一个 HTTP 接口即可接入工具调用。

常见误区

误区我以为 Vapi 是一个类似 GPT 的语音大模型,把一段音频丢给它就能得到回答。

正解Vapi 不训练模型,它是编排平台:把转写(如 Deepgram)、LLM(如 OpenAI、Groq、Anthropic)、TTS(如 11labs、PlayHT)串成一条低延迟通话管线,并对每次通话做转写、成本统计与结构化输出。你配置的是“用什么模型、什么语音、什么话术”,而不是调用一个统一的语音模型。这也意味着模型能力差异(如中文理解、推理质量)由你选择的 LLM 决定。

为何常见:官方页面强调低延迟与 Voice AI,产品形态又是 API,容易让人误以为是语音驱动的大模型。

误区既然叫语音 Agent 平台,应该只能接打电话,浏览器端没法用。

正解Vapi 支持两类会话:PSTN 电话(购买号码或 BYO Twilio)和 Web Call(浏览器,用 @vapi-ai/web 或 @vapi-ai/react 直接接入麦克风)。Web 端常用于官网客服、门店扫码问答、预约表单等不需要实体号码的场景,两端共用同一套 Assistant 配置。

为何常见:平台主推打电话场景,Demo 和外呼案例多,Web SDK 容易被忽略。

误区只要用了 Vapi,延迟就自动低于 500ms,模型和参数不用管。

正解低延迟依赖配置组合:模型选 turbo 级(如 gpt-4o-mini)比大模型快;turn detection 的模式影响“判断用户说完”的速度;TTS 供应商与音色影响首字时间;开启 think 模式会增加延迟与成本。上线前应在 Playground 实测各组合的延迟与成本,再固化为正式配置。

为何常见:官网宣传语强调低延迟,容易让人误以为这是内置免费能力。

误区Web SDK 里直接填 Private Key 就能调用,省得写后端。

正解@vapi-ai/web 应使用 Public Key(公开 Key,用于浏览器初始化);Private Key 拥有建号、创建通话等管理权限,暴露在前端意味着任何人可代你发起通话并产生费用。正确做法是服务端持有 Private Key 调 Server SDK,Web 端只用 Public Key 发起 Web Call。

为何常见:前端最快跑通 Demo 的方式是复制 Key,而安全说明藏在文档 API 章节里,容易被跳过。

误区每次改话术都得去网页上点,没法做版本管理。

正解Assistant 配置本质是 JSON,可通过 POST /assistant、PATCH /assistant/:id 创建与更新;团队可把配置存 Git、在 CI 中同步;运行时还能用 assistantOverrides 对单次调用覆盖模型、语音或提示词,实现 A/B 与灰度。Playground 只是可视化入口,不是唯一管理路径。

为何常见:Playground 是上手第一步,文档示例又偏重创建通话,“配置即代码”的路径需要翻到 API Reference 才能看到。

面试题

Q1. Vapi 的 Web SDK(浏览器端)与服务端 SDK 分别应使用哪种 API Key?

单选题 · easy

  • A.两者都必须使用 Private Key 来鉴权
  • B.Web 用 Public Key,Server 用 Private Key← 正确答案
  • C.两者都必须使用 Public Key 来鉴权
  • D.Web 用 Private Key,Server 用 Public Key

答案:B。Public Key 只用于浏览器端初始化 Web SDK,权限面小;Private Key 拥有创建通话、管理资源等权限,只能放在服务端。把 Private Key 暴露在前端,等于把账户管理能力开放给任意用户,存在盗打和费用风险。

Q2. 下列哪一项不是 Vapi 通话结束后的标准产物?

单选题 · easy

  • A.通话实时转写文本(含事后刷新)
  • B.通话录音文件(可用于回听回放)
  • C.结构化数据提取结果(预定义字段)
  • D.对方人脸识别与表情分析结果数据← 正确答案

答案:D。Vapi 的产物包括转写、录音、EOCR(摘要、成功评估、结构化数据、成本等),但不包含视频或人脸分析。人脸/表情属于视觉模型能力,不在语音 Agent 平台的职责范围内。

Q3. 想让 Agent 在复杂问题上“先思考再回答”以提升回答质量,应在 Assistant 的模型配置中开启什么?

单选题 · mid

  • A.model.think(开启独立思考模型配置)← 正确答案
  • B.voice.speed(调高语速以加快响应)
  • C.transcriber.turnDetection(端点检测)
  • D.phoneNumberId(更换外呼线路号码)

答案:A。Vapi 提供 think 参数:在 model 下配置独立思考模型,Agent 先产出内部思考笔记再生成最终回答,适合复杂或逻辑型问题;代价是增加延迟与 token 成本。turnDetection 管的是“何时判定用户说完”,与思考无关。

Q4. 通过 API 发起一通外呼电话(PSTN 呼出),请求中必须包含哪些核心字段?

单选题 · mid

  • A.仅需要 customer.number 与 assistantId 即可
  • B.phoneNumberId、customer.number 与 assistant 或 assistantId← 正确答案
  • C.仅需要 assistantId 与 voiceId 两个字段
  • D.customer.number、voiceId、assistantId 三个字段

答案:B。外呼必须指定 phoneNumberId(从哪条线路呼出)、customer.number(打给谁,E.164 格式)以及 assistant 或 assistantId(由谁应答)。voice、模型等参数可省略,未指定时使用 Assistant 中的默认配置。

Q5. 要在通话过程中触发 CRM 建单、数据库查询等外部动作,Vapi 推荐的机制是?

单选题 · mid

  • A.在 End of Call Report 中直接编写业务逻辑代码
  • B.配置 Function Tool / Webhook Tool 由 LLM 触发← 正确答案
  • C.在 firstMessage 中写入指令让用户触发
  • D.在 transcriber 回调地址里处理业务逻辑

答案:B。Function Tool 以 JSON Schema 描述参数,LLM 判断调用时机并生成参数,Vapi 转发到你提供的 HTTP 接口;Webhook Tool 直接触发指定 URL。EOCR 是会话结束后的分析产物,不是执行入口,A 不成立。

Q6. 关于 Vapi 的 End of Call Report(EOCR),下列说法正确的是?

单选题 · mid

  • A.只包含录音文件的下载地址与回放链接
  • B.包含摘要、评估、结构化数据以及成本← 正确答案
  • C.只包含转写文本与通话时长的统计字段
  • D.只包含客户号码与该次通话的费用

答案:B。EOCR 通常包含转写、摘要(summary)、成功评估(successEvaluation)、结构化数据(structuredData)与成本明细等,是对接 CRM 和质检自动化的数据源。录音文件是独立产物,不属于 EOCR 内容。

Q7. 关于 Vapi 的 turn detection,server-vad 与 provider-vad 的本质区别是?

单选题 · hard

  • A.provider-vad 由转写厂商判断端点,server-vad 由 Vapi 服务端判断← 正确答案
  • B.两者之间没有实质性的区别,只是命名不一样而已
  • C.server-vad 只能搭配使用 OpenAI 的模型,其他模型全部不行
  • D.provider-vad 会强制关闭录音以及转写存储相关的功能

答案:A。provider-vad 依赖转写厂商(如 Deepgram)的语音端点检测能力;server-vad 是 Vapi 在服务端先做 VAD,再决定何时把音频交给转写与模型,适配更多转写服务商。模式选择直接影响“抢话”和“应答迟钝”的体验。

Q8. 以下关于 Vapi 成本与风险控制的说法,正确的有?

单选题 · mid

  • A.为 assistant 设置 maxDurationSeconds 限制单次通话时长← 正确答案
  • B.在 Web 前端代码中直接使用 Private Key 可省略服务端
  • C.按业务需要决定是否开启 recording,避免不必要的数据存储← 正确答案
  • D.将高权限函数直接暴露给 LLM 自动触发,无需任何权限校验

答案:AC。maxDurationSeconds 可防止通话无限续时产生超额费用;recording 按需开启,避免不必要的数据存储与合规负担。B 会把私有凭证暴露给用户,D 忽略了工具调用必须做权限与参数校验的基本安全要求。

Q9. 关于 Vapi 的供应商体系,以下说法正确的有?

单选题 · easy

  • A.同一个 Assistant 可混用不同供应商的 LLM、语音与转写← 正确答案
  • B.LLM 只能使用 OpenAI 的模型,完全无法更换供应商
  • C.支持 ElevenLabs、PlayHT 等多家 TTS 语音厂商← 正确答案
  • D.通话转写只能使用 Vapi 自研的专有模型

答案:AC。Vapi 支持 19+ 供应商、100+ 模型(官方口径),模型、语音、转写各自独立选择。例如 OpenAI 模型 + ElevenLabs 语音 + Deepgram 转写是常见组合。B、D 与实际相反。

Q10. 用户中途说话打断 Agent,Agent 应立即闭嘴并重新接话。该行为依赖 Vapi 的哪项能力?

单选题 · hard

  • A.开启 think 模式让 Agent 在回复之前进行多轮思考
  • B.依赖打断检测机制,停止 TTS 并携带上下文重新提示模型← 正确答案
  • C.依赖通话结束报告在通话结束后重新修正对话内容
  • D.使用静态语音合成策略来保证播放过程不中断

答案:B。Vapi 支持打断(barge-in)处理:检测到用户插话即停止当前 TTS 播放,并把“被中断的内容摘要 + 用户新输入”一起交给模型重新响应。A 管回答质量,C 是事后分析,D 与打断需求完全相反。

参考来源