我自己一直这么做,也想听听别人踩过的坑,设计先摊开:
准入和执行拆开。 生图那次调用只执行已经被放行的请求;能不能过安全边界,交给前面一次结构化判定——让对话模型吐一个封闭 schema 的 JSON,只有放行标志、命中分类、策略版本三样。多一个字段、少一个字段、校验不过,一律不放行,不让程序去猜自然语言。
留证比判定更容易做砸。 落库的是审计 ID、策略版本、prompt 摘要和调用主体,原文不往通用日志里抄。策略拒绝、限流、鉴权失败、超时后不确定,这四种状态别压成一个布尔值,不然事后对账根本没法查。重试带同一个幂等键,服务端给了等待时间就按它来,别自己拍脑袋退避。
我最拿不准的是代价:多一次往返就多一份延迟和成本,首屏卡这一下的产品我觉得不适合硬上。你们怎么权衡的?