说一句询盘,拿到一份能直接发客户的英文报价单

AssemblyAI Voice Agent Hackathon 2026 · 跨境贸易询盘 → 语音口播 → 确定性引擎出单

AssemblyAI Voice Agent Hackathon
跨境贸易 · 语音优先

外贸业务员对着麦克风说一段话,剩下的匹配、算价、成稿、口播,Agent 全包。

买家从 WhatsApp 发来一条语音询盘,业务员要查产品线、把工厂价算成到岸成本(运费 · 体积重 · 关税 · MOQ · 打样与交期 · IP 授权风险),再写成英文报价单 —— 一单 20 到 40 分钟, 而且每次都要重新手算。这个项目把这段工作压成一次对话。

进入语音 Agent不开麦,文字模式需要浏览器麦克风权限;没配 API Key 时页面会明说,不会假装在跑。
01说口述询盘

中文说一句:卖家是谁、要什么机型、多少量、目标价、什么时候要到。不用整理成表格。

02算确定性引擎算价

匹配产品目录 → 工厂价 → 体积重运费 → 关税 → 到岸成本 → 与目标价的差额。全程纯函数,不经过模型。

03报口播 + 出单

先语音把结论和风险讲回来,屏幕上同时落一份可以直接转发给海外买家的英文报价单。

AssemblyAI 用在哪

语音链路全部落在 Voice Agent API 上,没有自建 STT/TTS,也没有第二家模型供应商。

Voice Agent API · agents.assemblyai.com

一条 WebSocket 跑完 STT + LLM + TTS

wss://agents.assemblyai.com/v1/ws —— 听、想、说共用一条连接,中间没有第三方胶水层。

wss://agents.assemblyai.com/v1/ws

Agent 定义发布在服务端

POST /v1/agents 一次性写入 system prompt、音色、greeting、26 个行业 keyterm(FOB / CIF / MOQ / 体积重 / 到岸成本 / 授权链 …)和两个 JSON-Schema 工具。

POST /v1/agents · PUT /v1/agents/{id}

工具由模型自己决定什么时候调

analyze_inquiry 解析询盘并算到岸成本;generate_quotation 出报价单,也能按一句口述修正重新报价。浏览器执行,结果原路回同一条 socket。

tool.call → 本地引擎 → tool.result

服务端时间线可直接取证

GET /v1/sessions/{id} 返回 artifacts 与逐轮 timeline(含 time_to_first_audio_ms、每次 tool call 的耗时)。演示视频里的数字就是从它读出来的。

GET /v1/sessions/{id}
设计决定

报价单里的每一个数字都来自纯函数,不来自语言模型

模型只负责听、决定调什么工具、以及把结果说出来 —— 它不被允许编价格。 这不是一开始就这么设计的:第一版让模型直接写整份报价单,结果 3,924 字符的文档 被静默截断成 356 字符,而且两次运行数字会漂移。改成确定性引擎之后, 输出的每一份报价单都要先过一遍自检(不含中文、长度足够、含价格、含贸易术语、 含关键条款、结尾没被截断),不合格就自己拒绝自己。

lib/quoteDocument.ts

报价单生成器 · 纯函数 + 自检

lib/products.ts

16 个 SKU 的华强北真实价目(工厂价 / FOB / 体积重 / 关税)

lib/revision.ts

口述改价的结构化解析(「降到 1 块,改 DDP」)

量出来的数字

全部取自线上部署的真实会话与真实 HTTP 请求,仓库里有可复现的脚本。

0.58 s
session.ready
建连耗时
336 ms
greeting TTFA
首字音频延迟
2 / 2
tool calls
成功且无超时
4,241
client-facing chars
客户可见报价单,0 个中文字符
981 ms
POST /api/quote/analyze
线上中位耗时
1,130 ms
POST /api/quote
线上中位耗时
176
unit tests
16 个文件全绿
53.6 s
session
含 greeting 与收尾的整段会话