部署与成本控制:放上公网,然后算清一笔账
流式会被 Serverless 和 CDN 咬一口;以及一张按性价比排序的降本清单
到这一步你的东西已经能跑、能扛、能观测了。剩下两件事:放到公网上,和算清楚它每个月花多少钱。
这一节有两个容易踩的坑:
① 流式会被基础设施咬一口。ap7.3 你做好了 TTFT 0.67 秒的流式体验,结果上了某些 Serverless 平台或者过了一层没配好的 CDN,用户等到最后一次性收到全部内容——你的流式白做了。
② 成本账不是"调用次数 × 单价"。真实的账单里,缓存命中率、重试次数、评测跑分、失败重来,每一项都在里面。
装修完的房子还要通水电煤。通不通得上,取决于房子在哪、管道多粗、物业让不让你动墙——和你装修得多漂亮没关系。
部署就是通水电煤。流式是那根最细最容易被掐住的管子。
一、部署形态怎么选(AI 应用视角)
| 形态 | 优点 | 对 AI 应用的坑 |
|---|---|---|
| 自己的云服务器(ECS/VPS) | 完全可控、流式没限制、成本可预测 | 要自己做进程管理、扩容、证书 |
| 容器(Docker + K8s / 容器服务) | 弹性伸缩、部署一致 | 健康检查要为长请求调宽,否则慢请求被当成挂了杀掉 |
| Serverless / 函数计算 | 不用管服务器、按量计费 | 执行时长上限、响应缓冲(可能吃掉流式)、冷启动 |
| PaaS(各类应用托管) | 最省事 | 长连接和流式支持要逐个确认,别假设 |
选型的三个决定性问题(不是"哪个更先进",而是"哪个不会咬到你"):
- 它支持流式响应吗?有没有响应缓冲?最大响应时长是多少?
- 单个请求能跑多久?大模型调用 10-60 秒很常见,很多平台默认超时 30 秒甚至更短。
- 并发模型是什么?单实例能同时处理几个请求?(ap7.1 实测过:这一条直接决定用户的中位等待。)
给大多数人的建议:第一版就用一台普通云服务器 + 反向代理。它没有任何隐藏约束,流式、长请求、并发全都随你调。等你真的有了流量,再谈弹性。
二、流式的三个杀手
ap7.3 辛苦做出来的流式体验,会在这三处被静悄悄地干掉:
① 反向代理的缓冲。Nginx 默认会缓冲上游响应,攒够一块才发给用户——流式直接变成非流式。
location /api/ {
proxy_pass http://127.0.0.1:8000;
proxy_buffering off; # ← 关掉缓冲,流式的命根子
proxy_read_timeout 300s; # ← 长请求别被中途掐断
proxy_set_header Connection '';
proxy_http_version 1.1;
}
② CDN / 安全网关。很多 CDN 对 text/event-stream 的处理并不透明,可能缓冲、可能压缩、可能超时。做法:让 API 路径绕过 CDN(或明确配置为不缓存、不缓冲),只让静态资源走 CDN。
③ 响应压缩。gzip 会为了压缩效率而攒数据。SSE 路径关掉压缩,或者确保按 chunk flush。
上线后的验证方法(一条命令,别靠猜):
curl -N -X POST https://你的域名/api/ask -d '{"question":"讲个长一点的故事"}' \
-H 'Content-Type: application/json'
-N 关闭 curl 自己的缓冲。如果内容是一点一点出来的,流式是通的;如果卡半天然后一次性全出来,上面三处至少有一处在缓冲。
三、还有四件上线时才会遇到的事
| 事 | 说明 |
|---|---|
| 域名与备案 | 国内服务器绑域名需要 ICP 备案(ap6.6);备案要时间,提前办 |
| HTTPS 证书 | 免费证书 + 自动续期。证书过期是最常见的低级事故,配到期告警 |
| 密钥注入 | key 走环境变量 / 密钥服务,不进代码、不进镜像、不进日志(ap1.5) |
| 健康检查 | 检查项要包含上游模型可达性,不能只检查进程活着 |
最后一条容易被忽略:进程活着但模型调不通,你的健康检查还是绿的,负载均衡会继续把流量打进来。健康检查应该跑一次真实(但极小)的模型调用,并且带缓存,别把健康检查本身变成一笔开销。
四、把成本算清楚
先建一个能算的模型,用本课实测的数字:
单次调用成本 = 输入未命中 tok × 单价A
+ 输入命中缓存 tok × 单价A/10 ← ap1.4:缓存价约十分之一
+ 输出 tok × 单价B
+ 重试次数 × 上面这些 ← ap1.1:失败重试是真金白银
一个具体例子(以本课量级估算,单价随服务商变化):
| 项 | 数值 | 说明 |
|---|---|---|
| 日活用户 | 1000 | |
| 人均每天调用 | 5 次 | |
| 日调用量 | 5000 次 | |
| 单次成本(无缓存) | 0.003 元 | ap1.4/ap6.4 用的量级 |
| 月成本(无优化) | 450 元 | 5000 × 0.003 × 30 |
| 缓存命中 70% 后 | 约 166 元 | ap7.2 实测多轮对话可到 82% |
| 再加 20% 的短问答走小模型 | 约 140 元 |
这个表最大的价值不是那几个数字,是它让你能回答两个问题:"再来 10 倍用户我付得起吗?"和"我该收多少钱?"(AP8 展开)。
降本清单:按性价比排序
| 顺位 | 手段 | 收益 | 出处 |
|---|---|---|---|
| 1 | 前缀缓存(固定系统提示、只在尾部追加) | 省一半以上,且不损质量 | ap1.4 / ap7.2 |
| 2 | 别做无效的历史裁剪 | 实测裁剪反而贵 54% | ap7.2 |
| 3 | 配额 + 成本熔断 | 实测省 88%,防的是极端情况 | ap6.4 |
| 4 | 按任务分模型(简单任务用小模型) | 大头任务省 50-80% | ap1.1 |
| 5 | 压缩输出(限制 max_tokens、要求简洁) | 输出单价通常是输入的 2 倍 | ap1.6 |
| 6 | 去掉没用的提示词 | 实测加长 127 字换来 +43% 成本、0 提升 | ap2.4 |
| 7 | 结果缓存(相同问题直接返回) | 看重复率,问答类产品收益大 | — |
注意第 5 条和第 6 条的顺序:很多人第一反应是"精简提示词",但实测里那是收益最小的一档——而且改提示词有质量风险(要过 ap5.5 的门禁),改缓存策略没有。
先做不损质量的(1、2、3),再做要评测保护的(4、5、6)。
🔧 动手做:上线并算账(25 分钟)
- 把服务放到一台云服务器上,配好反向代理(
proxy_buffering off)、HTTPS、进程守护。 - 用
curl -N验证流式真的通了——这一步别跳过,它是最容易静默失败的一环。 - 改健康检查:加上一次带缓存的上游可达性检查。
- 建你的成本模型:把上面那张表换成你自己的数字,算出月成本和每用户成本。
- 按降本清单从上往下过一遍,标出你还没做的,估算每一项能省多少。
- 设一个成本告警(ap7.4):日成本超过预算 1.5 倍就通知你。
✅ 做到这里你应该有:公网可访问的服务 + 验证过的流式 + 带上游检查的健康检查 + 一份自己的成本模型 + 一张按性价比排序的降本待办。
为什么:部署这一步最容易发生的事故不是"跑不起来"(那你立刻就知道了),而是“跑起来了,但某个东西被静悄悄地降级了”——流式变成非流式、长请求被超时掐断、健康检查在骗你。这些都不会报错,只会让体验慢慢变差。
而成本模型的意义在于:它把"这个产品能不能做下去"从感觉变成算式。下一章 AP8 会直接接着这个算式往下算。
函数计算/Serverless 对 AI 应用有天然吸引力(按量计费、免运维),但上车前必须确认:
① 最大执行时长。大模型调用 10-60 秒很常见,有些平台默认 30 秒甚至更短——超时会变成一个你在监控里看不出原因的 5xx。
② 响应是否被缓冲。部分平台会等函数返回完整响应才发给客户端,流式直接失效;有的支持流式但需要特定的返回方式。必须实测,别看文档写"支持"。
③ 冷启动。低频产品的第一个用户可能要多等几秒,而这个用户往往正是你最想留住的新访客。
建议:把 Serverless 用在"短、无状态、可并行"的部分(比如批量评测、异步任务、定时回流),把带流式的主链路放在常驻服务上。混合部署比一刀切更实际。
我的 AI 产品是【描述】,预计日活【X】、人均调用【X】次,主链路【有/没有】流式,团队运维能力【描述】。请帮我:1) 推荐部署形态并说明理由,重点分析流式和长请求的约束;2) 给出反向代理配置(关缓冲、超时、SSE 相关 header);3) 设计健康检查(含上游可达性,注意别把检查本身变成开销);4) 用我的数字建一个成本模型表(含缓存命中率的影响),算出月成本和每用户成本;5) 按性价比给我排一张降本清单,标出每项的预期收益和质量风险。
部署三件事:选型只问三个问题(支不支持流式、单请求能跑多久、并发模型是什么)、流式的三个杀手是代理缓冲/CDN/压缩(用 curl -N 验)、健康检查要包含上游可达性。
成本两件事:建一个能算的模型(单次成本 × 量 × 缓存命中率),按性价比降本——先做不损质量的缓存和配额,再动提示词。
下一节是 AP7 的收口:上线检查清单——把前面七章的所有要求,收成一页你能逐条打勾的东西。
🔎 来源与核验· 1 条,点开核对
