开发与工程 voice-aitelephonyspeech-to-texttext-to-speechtwiliotypescriptpythonopentelemetry

Patter Voice SDK

为 Python 和 TypeScript 电话 AI 代理提供可替换语音、模型与运营商的全栈 SDK。

FollowAgents 评估 · FARS-2.1
不推荐
52/ 100 五分制 2.6 / 5
1 2 3 4 5 6
按维度查看评分与理由
1信任安全11 / 29 · 1.9/5

证据显示:README 明确说明遥测数据可选择性退出,且不收集敏感内容;依赖审计工作流存在但仅警告不阻塞;外部效果(如电话呼叫)需要用户提供凭证和配置。扣分:未提供最小权限原则的明确说明,用户确认机制未明确,敏感数据处理细节不足,回滚机制缺失,来源归属仅基于仓库元数据。

2可靠稳定8 / 14 · 2.9/5

证据显示:README 和代码示例一致,依赖声明存在,但失败消息的具体内容未在提供的文件中展示。扣分:失败消息的详细性和可操作性不足。

3适用触发12 / 18 · 3.3/5

证据显示:README 提供了多种使用场景(入站、出站、工具调用等),能力边界通过模式(Realtime/Pipeline/Hybrid)和提供商选择明确,触发条件(如 webhook)有示例,环境适配(本地隧道、生产 webhook)有说明。扣分:部分边界(如并发限制)未明确。

4规范维护9 / 18 · 2.5/5

证据显示:README 结构清晰,安装说明明确,命名一致(getpatter),示例丰富,MIT 许可证明确。扣分:版本变更日志未提供,已知限制未明确列出,维护责任未明确。

5有效结果9 / 13 · 3.5/5

证据显示:输出可用性高(提供 Python/TypeScript SDK 和模板),边际价值明显(替代 Vapi/Retell),成本效益合理(开源免费)。扣分:未提供性能基准或成本对比数据。

6证据核验3 / 8 · 1.9/5

证据显示:README 中的声明(如 27+ 集成)未在提供的文件中得到验证,跨来源佐证不足,事实与推断未明确区分。扣分:缺乏可验证的细节。

证据充分度: 评估于 2026年8月9日 审查版本 1feec82c4086
上游仓库在本次评估后已有新提交;当前评分仍对应所示审查版本,可能尚未覆盖最新改动。
源码中未见的安全控制:回滚或恢复路径
使用前请注意
  • 遥测数据虽可退出,但默认开启,需注意隐私合规。
  • 依赖审计仅警告不阻塞,可能存在未修复的已知漏洞。
  • 未提供回滚机制,升级后出现问题难以恢复。
  • 版本变更日志缺失,难以追踪破坏性变更。
评估证据 [1][2][3][4][5][6]
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

Patter 是一个开源 SDK,用于把应用中的 AI 代理连接到电话网络,并处理代理循环、语音识别、语音合成、实时语音、音频处理和运营商接入。它提供 Python 与 TypeScript 两套接口,README 声明二者具备相同的 API 表面、钩子和事件。开发者可按层选择 LLM、STT、TTS、实时引擎、电话运营商以及音频组件,并以 Realtime、Pipeline 或 Hybrid 模式组合。服务可通过 `phone.serve()` 启动;本地开发可启用 Cloudflare quick tunnel,生产环境则使用静态 `webhook_url`。

应用先以 Patter 创建电话接入,例如 Python 中的 Patter(carrier=Twilio(), phone_number="+15550001234"),再用 phone.agent() 配置 OpenAIRealtimesystem_promptfirst_message。随后调用 await phone.serve(agent, tunnel=True),SDK 会启动代理服务,并在启用隧道时创建 Cloudflare quick tunnel、把号码指向该服务。Patter 将通话在电话运营商、语音组件和模型之间编排;可选运营商包括 Twilio、Telnyx 与 Plivo。它还记录供应商无关的 OpenTelemetry 调用追踪,并提供中途故障切换的 LLM fallback chain。

  1. 需要用 Python 或 TypeScript 为餐厅预订场景接听来电的团队,可基于 Inbound Agent 模板构建电话接待员。
  2. 需要拨打外呼电话、处理 AMD 并投递语音留言的业务团队,可采用 Outbound Calls 模板。
  3. 已有 Twilio 号码、但希望把实时语音引擎替换为 OpenAIRealtime、Gemini Live、Ultravox 或 ElevenLabs ConvAI 的开发者。
  4. 需要在通话中查询 CRM 或创建工单的集成开发者,可使用 webhook tools 对接自己的后端。
  5. 需要把 Deepgram STT 与 ElevenLabs TTS 等不同供应商组合进电话代理的团队,可使用 Pipeline 模式。
  6. 希望在本机验证完整通话流程、暂时不接入实体电话的开发者,可从终端模拟通话。

这个 Agent 有哪些优点和局限?

优点
  • 将 LLM、STT、TTS、实时引擎、电话运营商和音频处理明确拆层,可分别替换供应商。
  • Python 与 TypeScript 都提供 SDK,README 声明二者的接口、钩子和事件保持一致。
  • 支持 Twilio、Telnyx 和 Plivo,并将工具调用、转接和 guardrails 设计为跨运营商一致的行为。
  • 提供 Realtime、Pipeline、Hybrid 三种组合方式,以及通话中的 LLM fallback chain。
  • 内置本地隧道、终端通话模拟和供应商无关的 OpenTelemetry 追踪。
局限
  • 实际运行依赖外部模型、语音和电话运营商的账户及环境变量凭据。
  • 本地 tunnel: true 使用 Cloudflare quick tunnel;生产部署需要配置静态 webhook_url 或使用 ngrok。
  • README 未说明各供应商的价格、计费聚合方式或完整的生产容量限制。
  • 遥测默认收集匿名 SDK、供应商/模型分桶及通话事实数据,虽然可通过配置、CLI 或环境变量关闭。
  • 文档虽列出 27+ 集成,但所给材料未逐项描述每个集成的配置差异与功能覆盖度。

如何安装或部署这个 Agent?

选择一种 SDK:TypeScript 运行 npm install getpatter;Python 运行 pip install getpatter。Python 需要 3.11+,TypeScript 需要 5.0+。在环境变量中提供所选供应商和运营商的凭据,例如 Twilio 的 TWILIO_ACCOUNT_SID 与 OpenAI 的 OPENAI_API_KEY;完整变量目录由项目文档列出。

如何使用这个 Agent?

Python 最小调用:from getpatter import Patter, Twilio, OpenAIRealtime;创建 phone = Patter(carrier=Twilio(), phone_number="+15550001234");用 phone.agent(engine=OpenAIRealtime(), system_prompt="You are a friendly receptionist for Acme Corp.", first_message="Hello! How can I help?") 创建代理;最后执行 await phone.serve(agent, tunnel=True)tunnel=True 适合本地开发;生产环境改用静态 webhook_url

这个 Agent 与同类方案有什么区别?

项目将自身定位为 Vapi 和 Retell 的替代方案,面向希望自行掌控语音 AI 技术栈的构建者;所给材料未提供逐项功能或价格对比。

常见问题

Patter 是否绑定某一家模型或电话运营商?
不是。README 列出多家 LLM、STT、TTS、实时引擎和电话运营商,并说明可按层替换;电话运营商包括 Twilio、Telnyx 和 Plivo。
运行前必须准备什么?
需要 Python 3.11+ 或 TypeScript 5.0+,以及所选电话运营商和 AI/语音供应商的环境变量凭据。
本地开发是否需要先部署公网服务?
不一定。tunnel=True 会创建 Cloudflare quick tunnel 并将号码指向本地服务;README 也说明可在终端模拟完整通话。
模型供应商在通话中失败会怎样?
Patter 提供自动 LLM fallback chain,README 将其描述为可在通话中进行供应商故障切换。
是否会发送通话内容作为遥测?
README 声明不会收集通话内容、提示词、电话号码、密钥或自由文本;可用 telemetry=Falsegetpatter telemetry disablePATTER_TELEMETRY_DISABLED=1DO_NOT_TRACK=1 关闭遥测。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents