# 成本控制 ## 概述 实时视频流 + 多模态 LLM 推理的成本极易失控。从**视觉链路**、**语音链路**、**推理链路**三个维度梳理成本控制策略,核心思想是**端云协同**——将适合的计算前置到客户端,降低对云端 API 的依赖。 **成本对比**:优化前(1fps 全量发送)vs 优化后(0.2fps + 端侧筛选 + 模型分级)→ 月成本从 **$5000 降至 $300~500**,降幅约 90%。 ## 成本构成 ``` 总成本 ├── 视觉链路:图像编码与传输、视觉 token 消耗 ├── 语音链路:STT 按分钟计费、TTS 按字符计费 └── 推理链路:LLM 输入 tokens、LLM 输出 tokens ``` 假设:10 分钟/天/用户,1fps,每次 1000 tokens → 一天 60 万 tokens。1000 用户时成本不可控。 ## 策略一:智能采样——少发图,发好图 | 策略 | 降本幅度 | 实现复杂度 | 说明 | |------|---------|-----------|------| | 提高采样间隔 | 高 | 低 | 从 1fps 降到 0.2fps | | 关键帧过滤 | 中 | 中 | 画面不变时不发送 | | 用户触发 | 高 | 低 | 只在用户提问时拍照 | | 本地预筛选 | 中 | 高 | 用轻量模型判断"是否值得问 LLM" | **实现细节**:参见 `frontend/src/lib/sampling.ts` 中的 SamplingController,根据 VAD 状态在空闲模式(5s/帧)和活跃模式(1s/帧)之间切换。 ## 策略二:端云协同——把计算推到边缘 不是所有计算都需要上云。可前置到客户端的计算: - **VAD 语音检测**:浏览器端完成,减少无效音频上传(节省 ~70% 带宽) - **人脸/物体检测**(待实现):用 ONNX Runtime 跑轻量模型(如 YOLOv8-nano ~6MB,推理 ~30ms),只在检测到新物体时触发 LLM。当前 MVP 使用 Canvas 像素比较做关键帧检测 - **重复画面过滤**:计算帧间相似度,对话模式 similarity > 0.9 跳过,观察模式 similarity < 0.85 触发 - **敏感内容过滤**(待实现):NSFW 检测前置,避免无效 API 调用 ## 策略三:模型分级——用对模型做对事(待实现) 不是每个问题都需要最贵的模型: ``` 用户提问 → 问题复杂度判断 ├── 简单识别 → 轻量模型(如 qwen-turbo) ├── 深度分析 → qwen3-vl-plus(默认,按量计费) └── 代码/推理 → 更强模型(如 o1) ``` > 当前 MVP 阶段使用单一模型(默认 DashScope qwen3-vl-plus),模型分级路由为未来优化方向。LLM 通过 Eino ChatModel 接入,支持任何 OpenAI 兼容接口。 ## 策略四:缓存与复用(待实现) - **语义缓存**(待实现):相似问题直接返回缓存结果(如反复问"这是什么") - **上下文复用**:连续对话中,未变化的图像不必重复发送(已通过重复画面过滤实现) - **对话历史裁剪**:前端按 `MAX_HISTORY_ROUNDS = 10` 裁剪,后端按 `defaultHistorySize = 20` 裁剪,限制每轮的固定 token 开销