- 修复心跳 Bug:应用层 ping 不更新 lastPong,60 秒后连接会被错误断开 - 03-接口文档:audio/mpeg→audio/mp3、STTConfig/TTSConfig 补充 Model 字段、 APP_ENV 环境变量名修正、配置搜索路径补充、.env 加载说明、Vite proxy 说明修正 - 02-系统架构:补充 ConfigPanel/Toast 组件、Model Router/Rate Limiter 标注规划中、 补充 Gin 框架、MVP 存储改为 Memory、AI 服务 provider 更新、Orchestrator 伪代码对齐 - 04-技术选型:新增 AI 服务栈选型章节(STT/LLM/TTS)、PostgreSQL 标注规划中 - 06-语音交互:VAD 参数名修正、STT 改为一次性识别描述、音频编码格式补充 - 07-视觉理解:关键帧检测代码改为 TypeScript、分辨率修正、阈值逻辑统一 - 08-成本控制:变量名修正、未实现功能标注规划中、对话历史裁剪策略补充 - CLAUDE.md:同步更新技术栈、模块结构、存储策略描述
65 lines
3.0 KiB
Markdown
65 lines
3.0 KiB
Markdown
# 成本控制
|
||
|
||
## 概述
|
||
|
||
实时视频流 + 多模态 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" |
|
||
|
||
```typescript
|
||
// 混合策略:定时低频 + 事件高频(sampling.ts)
|
||
const IDLE_INTERVAL = 5000; // 空闲 5 秒一帧
|
||
const ACTIVE_INTERVAL = 1000; // 用户说话时 1 秒一帧
|
||
|
||
// SamplingController 根据 VAD 状态切换采样间隔
|
||
// detail_level 通过 session config 静态配置,不随说话状态动态变化
|
||
```
|
||
|
||
## 策略二:端云协同——把计算推到边缘
|
||
|
||
不是所有计算都需要上云。可前置到客户端的计算:
|
||
|
||
- **VAD 语音检测**:浏览器端完成,减少无效音频上传(节省 ~70% 带宽)
|
||
- **人脸/物体检测**(规划中):用 ONNX Runtime 跑轻量模型(如 YOLOv8-nano ~6MB,推理 ~30ms),只在检测到新物体时触发 LLM。当前 MVP 使用 Canvas 像素比较做关键帧检测
|
||
- **重复画面过滤**:计算帧间相似度,对话模式 similarity > 0.9 跳过,观察模式 similarity < 0.85 触发
|
||
- **敏感内容过滤**(规划中):NSFW 检测前置,避免无效 API 调用
|
||
|
||
## 策略三:模型分级——用对模型做对事(规划中)
|
||
|
||
不是每个问题都需要最贵的模型:
|
||
|
||
```
|
||
用户提问 → 问题复杂度判断
|
||
├── 简单识别 → GPT-4o-mini ($0.15/1M tokens)
|
||
├── 深度分析 → GPT-4o ($2.5/1M tokens)
|
||
└── 代码/推理 → o1 ($15/1M tokens)
|
||
```
|
||
|
||
> 当前 MVP 阶段使用单一模型(默认 GPT-4o),模型分级路由为未来优化方向。通过配置 `ai.llm.model` 可手动切换模型。
|
||
|
||
## 策略四:缓存与复用(规划中)
|
||
|
||
- **语义缓存**(规划中):相似问题直接返回缓存结果(如反复问"这是什么")
|
||
- **上下文复用**:连续对话中,未变化的图像不必重复发送(已通过重复画面过滤实现)
|
||
- **对话历史裁剪**:前端按 `MAX_HISTORY_ROUNDS = 10` 裁剪,后端按 `defaultHistorySize = 20` 裁剪,限制每轮的固定 token 开销
|