从 AI Studio 到生产,真正让项目翻车的往往不是模型:Google 昨天列的三个“原型悬崖”很现实
Google Cloud 昨天发了一篇很接地气的文章,题目大意是:
AI 原型准备上生产前,
创业团队应该回答哪 10 个问题?
我觉得里面最有价值的不是那 10 个问题,而是开头列的三个“默认失败模式”:
1. API Key 泄漏,48 小时内跑出一大笔账单
2. 从 AI Studio 迁到企业平台时,因为没人负责 IAM,路线图卡住几周
3. 上线后开始 429,因为默认项目配额根本扛不住真实流量
这三个问题非常典型。
它们共同说明了一件事:
AI 原型到生产的最大断层,经常不是“模型效果”,而是身份、容量和治理。
很多团队原型阶段已经能做到:
Prompt 很好
模型效果不错
Demo 很惊艳
真正上线时却死在完全不同的地方。
AI Studio 的最大优点,也恰好是生产阶段的最大风险来源
原型工具的目标就是降低摩擦。
比如:
拿一把 API Key
几分钟开始调用
这非常好。
如果一开始就强迫团队先配置:
Cloud Project
IAM
Service Account
VPC
Quota
Billing
Logging
很多想法根本不会被验证。
问题是:
原型路径太顺
很容易让团队误以为:
这套身份方式也适合生产
于是 API Key 被继续放在:
- 前端代码;
.env;- CI;
- 开发机;
- Notebook;
- Slack;
- Agent 沙箱。
直到有一天泄漏。
API Key 最难治理的地方不是“字符串会被偷”
真正的问题是它通常缺少:
明确主体
用途
细粒度权限
短生命周期
一个 Key 被五个服务共用以后,日志里只知道:
key-123 调用了模型
却不知道:
哪个服务
哪个用户
哪个任务
为了什么
所以生产阶段应该尽量从:
Secret possession
升级到:
Identity based access
原型和生产不要强行统一身份方案
我反而赞成 Google 给出的思路:
原型先快
生产再迁
关键是:
迁移必须被明确计划
不要变成:
“先用 Key,后面有空再改。”
“后面”通常永远不会来。
可以在项目第一天就写:
prototype:
auth: api-key
allowed_environment: local-dev
production:
auth: service-identity
api-key: forbidden
这样技术债至少是显式的。
第二个“原型悬崖”:IAM 没 Owner
Google 提到,有团队从 AI Studio 迁移到企业 Agent 平台时,因为没人负责 IAM,项目会直接卡几周。
这个问题我非常熟悉它的组织形态。
研发说:
安全团队给权限。
安全团队说:
业务先说需要什么权限。
业务说:
我们也不知道 Agent 到底要什么。
最后所有人等。
所以 Agent 项目开始时,IAM 不能被当成上线前 Checklist。
它应该一开始就有 Owner。
我会给 Agent 项目明确三个身份负责人
Human Identity Owner
负责:
用户登录
角色
租户
人员变更
Agent Identity Owner
负责:
Agent Service Identity
Workload Identity
凭证签发
Capability Authorization Owner
负责:
哪些 Agent
能调用哪些 Tool
这三件事经常被一个“权限”概念混在一起。
实际上它们是三个系统。
第三个悬崖:429
Demo 阶段最容易产生一个错觉:
请求都很快
因为:
只有 1—3 个开发者
上线以后可能突然是:
5000 用户
定时任务
Agent Fan-out
Retry
然后第一天开始:
HTTP 429
这不是模型能力问题。
是容量模型没做。
AI 配额不能只按用户数估
传统 SaaS:
1000 用户
可能只有 50 并发
Agent 场景:
一个用户请求
→ 8 次模型调用
再加:
Sub-Agent
Judge
Embedding
Tool
所以容量应该从:
用户数
换成:
Workload Envelope
一个 Workload Envelope
workload:
peak_user_rps: 50
avg_model_calls_per_run: 6.8
p95_model_calls_per_run: 14
avg_input_tokens: 18000
avg_output_tokens: 3200
retry_ratio: 0.04
然后算:
Peak Model RPS
Peak Token/min
Concurrent Runs
而不是上线以后才看 429。
Google 还强调了一个差别:AI Studio 和企业平台不是“同一个东西换个入口”
Google 的说法很清楚:
AI Studio 更适合:
快速验证想法
API Key
低配置门槛
企业平台会多出:
IAM
Service Account
VPC Service Controls
Cloud Logging
Monitoring
Reserved Capacity
Regional Endpoint
Compliance
很多创业团队看到后会觉得:
太重了
但这些“重”的东西,正是第一个企业客户安全评审会问的。
原型架构最大的错误是“为了快,把未来完全写死”
例如:
client = GeminiClient(
api_key=os.getenv("GEMINI_KEY")
)
散落在 80 个文件。
以后迁身份就很痛苦。
更好的第一天就包一层:
public interface ModelGateway {
ModelResponse call(
ModelRequest request);
}
开发环境:
ApiKeyModelGateway
生产环境:
WorkloadIdentityModelGateway
这样原型仍然很快,但不会把身份实现写进业务逻辑。
配额也应该通过 Gateway 集中治理
不要每个服务自己打模型。
统一经过:
Model Gateway
可以做:
Quota
Rate Limit
Budget
Retry
Fallback
Telemetry
当 429 出现时,不需要修改几十个业务服务。
一个非常实用的限流层
public record ModelQuotaPolicy(
String tenantId,
String modelProfile,
int requestsPerMinute,
long tokensPerMinute,
int concurrentRuns) {
}
至少同时限:
Request
Token
Concurrency
只限请求次数对大上下文任务不够。
429 以后不要盲目重试
很多 SDK 会自动 Retry。
如果是:
quota exhausted
重试只会继续失败。
应该识别:
Retry-After
Quota Type
Reset Window
并决定:
等待
切模型
排队
拒绝低优先级任务
我会给任务加 Priority
public enum TaskPriority {
INTERACTIVE_HIGH,
USER_NORMAL,
BACKGROUND,
BATCH
}
配额紧张时:
先暂停 Batch
再减 Background
保证交互任务
而不是所有请求一起 429。
成本也是一个“配额”
很多项目技术上还能跑。
但:
账单已经超预算
所以除了 Provider Quota,还要有:
Internal Budget Quota
例如:
tenant:
daily_budget_usd: 500
warning: 0.7
throttle: 0.9
hard_stop: 1.0
到 90%:
强制路由便宜模型
而不是等财务月底看到发票。
原型到生产还需要把“谁拥有这些东西”写清楚
我会做一张表:
| 项目 | Owner |
|---|---|
| Model Gateway | AI Platform |
| IAM | Cloud Platform |
| Agent Policy | AI Platform + Security |
| Quota | Platform |
| Budget | Product Owner |
| Logging | SRE |
| Data Retention | Security/Legal |
| Incident Response | SRE |
如果一行写:
TBD
它就是上线风险。
生产 Readiness Review 不需要很官僚
可以只有 15 个问题:
身份怎么做?
Key 是否存在生产?
权限最小吗?
配额够吗?
429 怎么处理?
预算上限?
日志?
敏感数据?
模型故障?
Tool 故障?
Retry Budget?
人能暂停 Agent 吗?
版本能回滚吗?
谁 On-call?
删除数据怎么做?
真正答清楚,比做 60 页 PPT 有价值。
原型代码可以脏一点,但“边界”必须干净
这是我的核心判断。
你可以先:
不做最漂亮的架构
不做所有自动化
但这些边界最好第一天就抽象:
Model
Identity
Tool
Storage
Telemetry
因为它们后面几乎一定会变。
如果直接散进业务代码,迁移成本会很高。
Google 昨天列的三个默认失败模式:
Key 泄漏
IAM 卡住
429 爆掉
看起来都是云平台问题。
其实背后是同一个问题:
原型阶段优化的是“最快跑起来”,生产阶段优化的是“谁能用、能跑多少、出了问题能不能管住”。
两者不是同一个系统目标。
所以我现在做 AI PoC 时,会在第一天就加一句:
这个实现只允许活到 PoC 结束。
然后明确写出生产替代方案。
最危险的从来不是临时代码。
而是:
临时代码因为 Demo 成功,
被默认变成了生产架构。
更多企业级 AI 应用、Agent、RAG 与模型工程化内容,我会继续整理在 智元界:
https://www.zyentor.com/