用途:在浏览器端接入 Deepgram 语音智能体(听、想、说由同一 WebSocket 承载)。四层包逐层封装,按“想自己写多少 UI”选择,而非按包名。
主要能力与选层:@deepgram/agents-widget 无需框架和构建,内置六种布局(sidebar、floating、inline、button、embedded、orb),用 CSS 自定义属性换肤;@deepgram/ui 提供 AgentConversation、Orb、LiveWaveform、麦克风/扬声器按钮等 React 组件;@deepgram/react 提供 AgentProvider 与十个 hooks(如 useAgentState、useAgentConversation、useAgentClientTool);@deepgram/agents 面向 Vue、Svelte、Angular、原生 JS,提供 AgentSession、AgentMicrophone、AgentPlayer。每层会再导出下层内容。
用法要点:浏览器 WebSocket 无法设置请求头,SDK 通过 tokenFactory 以 Sec-WebSocket-Protocol 传递短时令牌,连接与重连前均会调用。令牌须由自有服务端签发:POST https://api.deepgram.com/v1/auth/grant,需 Member 及以上权限的 API Key,字段为 ttl_seconds(默认 30 秒),返回 access_token。为 token 路由加上自己的会话校验,否则任何人都可用你的账号发起计费会话。widget 用 init({ tokenFactory, agent, layout, placement }),返回 teardown();无构建页面可加载 UMD 包并调用 DeepgramAgent.init。React 用 <AgentProvider config={...}>;AgentSession 负责握手、KeepAlive(默认 10000ms)与带抖动的指数退避重连(maxAttempts 默认 8)。
限制与注意:四个包均为 pre-1.0,latest 是唯一 dist-tag,接口可能在小版本间变化,安装前先查注册表版本;生产环境 CDN 需固定 v 前缀版本。切勿在浏览器打包 apiKey。ttl 字段无效,应写 ttl_seconds 并读取响应 expires_in。@deepgram/ui 声明 @deepgram/react ^0.1.0,与 0.2.0 同装会产生两份 React context,需统一从 @deepgram/ui 导入或用 overrides 去重。须引入 @deepgram/ui/styles.css 并在包裹元素加 data-dg-agent,否则无样式。AgentPlayer 仅解码 linear16 PCM,采样率需与会话 audio.output.sampleRate 一致(默认 24000),麦克风默认 16000。原始 SDK 构建需在 user-started-speaking 时调用 player.interrupt() 实现打断。0.1.2 未提供客户端 VAD,端点检测与打断为服务端行为。未提供的具体定价、平台兼容细节暂未说明。