技术方案从 Demo 进入生产环境后,真正拉开差距的往往不是某个单点能力,而是稳定性、成本、可观测和治理边界。本文围绕近期开发者关注度较高的技术问题,整理一套可以直接落到工程实践里的分析框架,重点讨论如何把能力做成可持续运行的系统。
一、问题不是能不能调用,而是能不能长期运行
- AI 应用工程化:把模型路由、上下文裁剪、工具调用、失败降级和效果评测拆成独立模块。
- 安全治理:把鉴权、参数校验、最小权限、审计和敏感数据脱敏放进同一条调用链。
- 性能与成本优化:同时观察 P95 延迟、token 消耗、缓存命中率和重试放大倍数。
- 部署落地:明确运行环境、网络边界、健康检查、扩缩容阈值和回滚路径。
技术实现参考:重试、路由和降级要在同一层完成
下面是一段接近生产逻辑的 Python 伪代码。重点不是具体 SDK,而是把超时、可重试状态码、退避时间和备用模型放进一个明确的状态机:
import random
import time
RETRYABLE_STATUS = (408, 429, 500, 502, 503, 504)
def invoke_with_fallback(client, request, primary, fallback):
request_id = request["request_id"]
models = (primary, fallback)
for model in models:
for attempt in range(3):
try:
result = client.responses.create(
model=model,
input=request["messages"],
timeout=20,
)
record_usage(request_id, model, result.usage)
return normalize_result(result)
except ApiError as exc:
if exc.status_code not in RETRYABLE_STATUS:
raise
delay = min(0.5 * 2 ** attempt, 4.0)
time.sleep(delay + random.random() * 0.2)
raise ServiceUnavailable("primary and fallback models failed")
实现时还要补上两个约束:同一个业务请求只能由一层负责重试,避免 SDK、网关和队列叠加重试;工具调用必须携带幂等键,防止超时后重复创建工单、重复发短信或重复写数据。
这些线索放在一起看,会发现 AI Agent 的难点正在快速后移。早期大家关心模型能不能理解问题、工具能不能被调用、流程能不能闭环;现在更现实的问题是:当用户量上来、上游接口波动、模型效果变化、调用费用持续增长时,系统还能不能保持可控。
二、Agent 真正难上线的五个位置
第一是工具调用边界。Agent 一旦能调用搜索、数据库、工单、短信或支付接口,就不能只把它当成聊天机器人。每个工具都需要权限边界、参数校验、幂等策略和失败回滚。
第二是上下文管理。很多 Demo 会把历史消息直接塞给模型,但生产环境里要考虑 token 成本、隐私字段、长会话摘要和用户隔离。上下文越长,越需要明确哪些信息必须保留,哪些信息应该被压缩或丢弃。
第三是模型路由。不同任务对模型的要求并不一样。分类、摘要、客服问答、代码生成和复杂推理不应该全部走同一个模型,否则要么浪费成本,要么牺牲质量。
第四是失败重试。大模型接口失败时,不能无脑重试。可重试错误、不可重试错误、限流错误和内容安全错误要分开处理,否则重试会放大故障,也会放大账单。
第五是可观测。只记录“调用失败”没有意义。真正有用的日志应该包含请求 ID、用户场景、模型名称、耗时、token、工具调用链路、重试次数和最终降级路径。
三、我的建议:先把调用治理抽出来
如果团队还处在原型阶段,可以先把 Prompt 和流程跑顺;但只要准备接入真实业务,就应该尽早把调用治理从业务代码里抽出来。比较稳的结构是:
业务应用
-> 统一 API 入口
-> 鉴权、限流、日志、路由
-> 模型服务或云服务
-> 结果归一化和降级
我自己在做多模型接入和接口中转时,会把这类入口收敛到 www.haerapi.com 这样的统一域名下。它的价值不是“多加一层转发”,而是把密钥、路由、限流、重试和日志放到一个能治理的位置。后面无论接百炼、通义、OpenAI 兼容接口,还是临时切换某个备用模型,业务侧都不需要到处改代码。
这类中转层最好保持克制:不要承载太多业务逻辑,只负责调用链路的稳定性和可观测。业务系统继续关心订单、客服、内容生产或数据分析;中转层只关心请求如何安全、稳定、可追踪地到达正确的服务。
四、一张上线前检查清单
| 检查项 | 最低要求 | 推荐做法 |
|---|---|---|
| 密钥管理 | Key 不进入前端 | 按环境、应用、模型拆分 |
| 限流 | 有全局限流 | 按用户、接口、模型分别限流 |
| 路由 | 模型名称不写死 | 按任务类型配置模型 |
| 重试 | 只对临时错误重试 | 指数退避并设置最大次数 |
| 降级 | 有默认失败提示 | 准备备用模型或缓存答案 |
| 日志 | 记录状态码和耗时 | 串联请求 ID、token 和工具链路 |
| 成本 | 能看到总调用量 | 能按场景、用户、模型拆账 |
五、结论
AI Agent 的竞争不会停留在谁的 Demo 更炫。真正能长期留下来的系统,一定要能解释每一次调用、控制每一类成本、隔离每一个风险点。Agent 已经从能力验证进入工程治理阶段。越早把统一入口、日志、限流和降级设计好,后面越不容易被上线后的细节拖住。