17 - AI 能力直接调云端 API
我们这套项目里有”AI 应用”这一环。现代做法是:不自己部署大模型,直接调用云端 AI API。这一章讲清为什么,以及调用时要注意什么。
为什么不自己部署大模型
你当然可以把一个开源大模型下载下来自己跑,但对绝大多数应用来说,这是个糟糕的主意:
- 贵:大模型要跑在昂贵的 GPU 上,一张卡一个月就得几千上万,还得一直开着
- 难:模型部署、显存优化、推理加速,都是专门的技术活
- 不划算:你的流量没那么大时,一张 GPU 大部分时间在空转烧钱
- 更新累:模型迭代飞快,自己维护永远追不上
这和”自己买服务器 vs 用 Serverless”是同一个道理:通用的重活,交给专业的云服务,你只管调用。
现代做法:调云端 AI API
云厂商/大模型厂商把模型能力做成了 API,你像调用一个普通 HTTP 接口一样调它,按调用量付费:
- 阿里云:通义千问(DashScope)
- 字节:豆包(火山方舟)
- 其他:智谱、月之暗面、DeepSeek 等,大多兼容 OpenAI 的调用格式
你的后端(跑在 Serverless 上)在需要 AI 能力时,就去调这个 API,拿到结果返回给前端。
# 后端里调用 AI API 的示意(伪代码)
import os, requests
def ask_ai(question: str) -> str:
resp = requests.post(
"https://ai-provider.com/v1/chat/completions",
headers={"Authorization": f"Bearer {os.environ['AI_API_KEY']}"}, # 密钥走环境变量
json={"model": "qwen-plus", "messages": [{"role": "user", "content": question}]},
)
return resp.json()["choices"][0]["message"]["content"]
[配图:Serverless 后端把用户问题转发给”AI 云 API”(画成一朵带大脑图标的云),拿到回答再返回给前端]
调用时要注意的几件事
1. 密钥管理(最重要)
AI API 的密钥(API Key)等于钱包,泄露了别人能拿你的钱刷调用。
- 绝不写进前端代码(前端代码用户能看到源码,等于把钥匙贴门上)
- 一定由后端持有并调用,密钥放环境变量 / Secrets
- 前端只和你自己的后端说话,后端再去调 AI
2. 成本控制
AI API 按 token(字数) 计费,可能是项目里最大的开销。
- 控制 prompt 长度、限制返回长度
- 给用户做用量限制 / 限流,防止被恶意刷爆
- 配用量告警,别等账单来了才发现
3. 限流与重试
API 有调用频率上限(QPS 限制)。高并发时要做好排队、重试、降级(比如繁忙时提示用户稍后再试)。
4. 超时与长任务
AI 生成可能较慢。结合第 14 章:如果生成很久,别让一个请求死等(Serverless 有时长限制),可以用流式返回(一边生成一边吐字)或异步任务。
这一切怎么串起来
回到全景图:用户提问 → 前端发给你的后端 → 后端带着密钥去调 AI 云 API → 拿到回答 → 存进云数据库 → 返回前端。
AI 能力是”借来的”(云 API),数据是”自己存的”(云数据库),后端只是中间的”调度员”。
小结
- 别自己部署大模型(贵、难、不划算),直接调云端 AI API(通义、豆包等)。
- 后端持有密钥去调,密钥绝不进前端、放环境变量。
- 注意:成本(按 token 计费)、限流重试、超时/长任务用流式或异步。
- AI 能力借云 API,数据存云数据库,后端做调度。
数据库和 AI 都用云服务了。这背后其实有一个统一的原则在支撑——无状态思维。下一章把它讲透。
下一章 → 18 - 无状态思维:现代后端的核心原则