Files
note/AI 视觉对话助手/成本控制.md
2026-06-12 11:26:26 +08:00

129 lines
4.3 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.
---
tags: [AI, 成本优化, 端云协同, 多模态, 运营策略]
create time: 2026-06-12 11:13
---
# 成本控制
## 概述
实时视频流 + 多模态 LLM 推理的成本极易失控。本节从**视觉链路**、**语音链路**、**推理链路**三个维度梳理成本控制策略,并引入**端云协同**的架构思维——将适合的计算前置到客户端,降低对云端 API 的依赖。
## 正文
### 成本构成分析
> [!question] 思考
> 假设一个用户每天使用 10 分钟,每秒处理 1 帧图像 + 持续语音交互。粗算一下10 分钟 × 60 秒 = 600 次图像 API 调用。如果每次调用消耗 1000 tokens一天就是 60 万 tokens。1000 个用户呢?
```mermaid
graph TD
A["总成本"] --> B["视觉链路"]
A --> C["语音链路"]
A --> D["推理链路"]
B --> B1["图像编码与传输"]
B --> B2["视觉 token 消耗"]
C --> C1["STT 按分钟计费"]
C --> C2["TTS 按字符计费"]
D --> D1["LLM 输入 tokens"]
D --> D2["LLM 输出 tokens"]
```
### 策略一:智能采样——少发图,发好图
最直接的降本手段:**减少发送给 LLM 的图片数量**。
| 策略 | 降本幅度 | 实现复杂度 | 说明 |
|------|---------|-----------|------|
| 提高采样间隔 | 高 | 低 | 从 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);
```
### 策略二:端云协同——把计算推到边缘
核心思想:**不是所有计算都需要上云**。
```mermaid
graph LR
subgraph Client["客户端"]
A["摄像头帧"] --> B["轻量视觉模型"]
B --> C{"场景变化?"}
C -->|"否"| D["丢弃"]
C -->|"是"| E["压缩 + 上传"]
end
subgraph Cloud["云端"]
E --> F["多模态 LLM"]
F --> G["返回结果"]
end
```
可前置到客户端的计算:
- **VAD 语音检测**:浏览器端完成,减少无效音频上传(节省 ~70% 带宽)
- **人脸/物体检测**:用 ONNX Runtime 跑轻量模型,只在检测到新物体时触发 LLM
- **重复画面过滤**:计算帧间相似度,相似度 > 90% 直接跳过
- **敏感内容过滤**NSFW 检测前置,避免无效 API 调用
> [!tip] 端云协同的"甜点"
> 浏览器端的 ONNX Runtime Web 可以跑 YOLOv8-nano 这样的轻量模型(~6MB推理耗时约 30ms完全不影响用户体验但能显著减少云端调用次数。
### 策略三:模型分级——用对模型做对事
不是每个问题都需要最贵的模型:
```mermaid
graph TD
A["用户提问"] --> B{"问题复杂度"}
B -->|"简单识别"| C["GPT-4o-mini / Haiku"]
B -->|"深度分析"| D["GPT-4o / Sonnet"]
B -->|"代码/推理"| E["o1 / Opus"]
C --> F["成本: $0.15/1M tokens"]
D --> G["成本: $2.5/1M tokens"]
E --> H["成本: $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 开销
> [!info] 成本对比
> 优化前1fps 全量发送vs 优化后0.2fps + 端侧筛选 + 模型分级):月成本可从 **$5000 降至 $300~500**,降幅约 90%。
## 关联笔记
- [[AI 视觉对话助手/视觉理解]]
- [[AI 视觉对话助手/语音交互]]
- [[AI 视觉对话助手/用户故事]]