Files
CamTalk/docs/08-成本控制.md
hhs 10f676f3b4 docs: 扁平化目录结构,优化文档为 Coding Agent 可读格式
- 移除 Obsidian 特有语法(callout、wikilinks、YAML frontmatter)
- 目录结构从 3 层嵌套扁平化为编号文件(01~09)
- 新增 docs/README.md 文档索引与推荐阅读顺序
- 精简冗余解释,保留所有代码块和实现参考
- CLAUDE.md 全面中文化
2026-06-12 17:08:20 +08:00

78 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 成本控制
## 概述
实时视频流 + 多模态 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
// 混合策略:定时低频 + 事件高频
const NORMAL_INTERVAL = 5000; // 正常 5 秒一帧
const ACTIVE_INTERVAL = 1000; // 用户说话时 1 秒一帧
let isUserSpeaking = false;
setInterval(() => {
captureAndSend(isUserSpeaking ? "low" : "high");
}, isUserSpeaking ? ACTIVE_INTERVAL : NORMAL_INTERVAL);
```
## 策略二:端云协同——把计算推到边缘
不是所有计算都需要上云。可前置到客户端的计算:
- **VAD 语音检测**:浏览器端完成,减少无效音频上传(节省 ~70% 带宽)
- **人脸/物体检测**:用 ONNX Runtime 跑轻量模型(如 YOLOv8-nano ~6MB推理 ~30ms只在检测到新物体时触发 LLM
- **重复画面过滤**:计算帧间相似度,相似度 > 90% 直接跳过
- **敏感内容过滤**NSFW 检测前置,避免无效 API 调用
## 策略三:模型分级——用对模型做对事
不是每个问题都需要最贵的模型:
```
用户提问 → 问题复杂度判断
├── 简单识别 → GPT-4o-mini ($0.15/1M tokens)
├── 深度分析 → GPT-4o ($2.5/1M tokens)
└── 代码/推理 → o1 ($15/1M tokens)
```
```typescript
async function routeQuery(image: string, question: string) {
const complexity = await classifyComplexity(question);
const modelMap = {
simple: "gpt-4o-mini", // "这是什么?"
moderate: "gpt-4o", // "分析这张图"
complex: "o1" // "推理/规划"
};
return callLLM(modelMap[complexity], image, question);
}
```
## 策略四:缓存与复用
- **语义缓存**:相似问题直接返回缓存结果(如反复问"这是什么"
- **上下文复用**:连续对话中,未变化的图像不必重复发送
- **Prompt 压缩**:精简 system prompt减少每轮的固定 token 开销