给一个教育科技公司的销售通话助手配图,图片只是附属产物:一张课程路线图缩略图,或者账户摘要配图。真正进入系统记录的是CRM动作。所以选型的第一顺位不是画面好不好看,而是结构化输出对不对,其次才是图像质量,延迟排在两者都有明确服务水平之后。
最省事的设计,是把图像生成做成一个带队列的任务:请求与具体供应商无关,发布前先过校验器。DALL-E 3、SDXL、Flux 都可以当作可替换的图像后端,它们之间真正有用的差异取决于服务路径、提示词行为、策略控制以及外围硬件。单看一个模型名字,判断不了Web应用里的快慢。
告警页该描述用户可见的契约
值班告警应该描述用户可见的契约,而不是含糊的“模型故障”。设想一下:通话结束后的后台任务已经提取出下一步动作,但CRM页面在等一张生成的图,图像任务已经超出延迟预算。告警里显示的是队列在变长、超期任务比例在上升、已完成的CRM动作与缺失缩略图之间对不上。
这才是可处理的症状。更早的信号是工作流少了一道拆分:结构化的动作和装饰性的图片被绑在同一条请求路径上。一次重试把队列撑得更大,而转头去比较第二个模型,又把团队从真正的依赖关系上引开了。
拆开它们。把事务拆成两条持久记录:一条是校验过的CRM动作,一条是异步图像请求,后者携带内容哈希、尺寸、安全状态和截止时间。图片缺失可以对用户可见,但不能抹掉一条正确的后续任务;反过来,一个错误的动作也不能被一张成功的图掩盖。
图片是可选的,就让它保持可选。阈值仍然要小心:按滚动窗口对“图像任务超期占比”告警,并配上队列年龄;如果对每一次生成错误都告警,团队整晚都在排查正常的突发波动。MDN 把 HTTP 429 定义为“请求过多”,并说明 Retry-After 是服务器可能发出的信号,所以退避应该写进工作进程的契约里,而不是在浏览器里临时重试。
该问的是哪种错误产物可以被安全看到
有用的问题不是“哪个模型画得最漂亮”,而是“哪种错误的产物可以被销售代表安全地看到,哪一种必须被拒绝”。
对一张课程路线图来说,要评估的是文字渲染、宽高比合规、品牌安全内容,以及图片是否与已批准的呼叫摘要一致。这些检查要和CRM提取分开。一张好看但编造了课程名的图,是正确性失败;一张朴素但准确的占位图,是可以接受的降级。
用一小份带版本号的评估集,内容取自脱敏后的呼叫摘要。要覆盖短通话、含糊的课程名、很长的动作清单、空的转写片段、重复请求。记录提示词模板、输出尺寸、耗时、超时类别、校验结果和复核决定。不要把某一个聚合分数直接变成生产环境的服务水平目标。
DALL-E 3、SDXL、Flux 作为实验里的对比标签是合理的,但它们并不描述同一种运行时。托管路径和自托管路径暴露的队列、限额、模型版本和运维归属都不一样。公平的比较对象是完整请求路径:到可用图像的时间、拒绝率、可重复性、容量余量,以及服务不可用时需要投入的工作量。
取舍很具体。托管模型路径通常把服务工作推给外部边界,自托管路径则把这份工作推进GPU容量、发布和事故响应里。需要严格数据驻留的Web应用可能排除前者;没有推理值班能力的小团队可能排除后者。两种选择本身都证明不了质量或速度。
一个陷阱是把30秒截止时间当成模型属性。它是贯穿排队、生成、校验、存储和展示的产品截止时间,所以原始响应更快,照样可能错过面向用户的服务水平目标。
在Go工作进程里,边界可以这样写:应用契约保持稳定,后端相关的请求细节留在CRM路径之外。
- ImageRequest 结构体携带任务ID、提示词、宽、高、截止毫秒数;
- ImageResult 结构体携带URI、宽、高、是否审核、耗时毫秒数;
- ImageBackend 接口只暴露一个 Generate 方法;
- generateForCRM 先校验提示词非空、宽高为正,再交给后端。
校验器应该拒绝意外尺寸、缺失审核结论、无法持久存储的输出。它不应该悄悄改写CRM动作。这就是契约。
买还是建,改变的是值班面
这个决定是容量和归属问题。托管端点能减少平台团队自己拥有的推理基础设施,自托管路径能对权重、部署位置和数据流有更紧的控制。两者都不能省掉并发预算、降级测试和队列观测。
容量规划从截止时间开始,而不是从模型开始。如果一次活动能产生20个并发图像任务,工作进程的截止时间是30秒,突发测试就该展示2倍负载下会发生什么、多少任务还在排队、CRM动作是否仍然可用。这个数字是测试输入,不是通用基准。
要跟踪的指标包括:到可用产物的p50和p95、队列年龄、重试次数、429率、超时率、校验拒绝率,以及在没有图片的情况下完成CRM动作的比例。像“99%的已校验动作在产品截止时间内可用”这样的目标,比“图像模型很快”有更清晰的负责人。可选媒体要单独定目标。
这个区分在故障时尤其重要:销售代表仍然需要下一步动作、负责人和截止日期,缩略图可以等。如果产品反过来让动作卡在媒体上,平台团队就把一个审美依赖意外塞进了业务关键路径,此后每一份容量估算、重试策略和告警阈值都更难自圆其说。
把一条追踪或关联标识贯穿转写提取、动作校验、图像入队、后端执行、对象存储和CRM展示。提示词文本可能包含敏感通话内容,普通日志里不要留,改记模板版本和内容哈希。OWASP 大语言模型应用十大风险提醒的是:提示词注入、敏感信息泄露、不安全的输出处理,都是应用层风险,不只是模型质量问题。
告警应该在可选产物威胁到自己的服务水平目标时触发,或者在正确性守卫拒绝输出时触发。运行手册要写明当前后端模式、队列深度、截止时间分布、最近一次配置变更,以及降级是占位图还是重试。会改动有效动作的降级不叫降级,叫数据损坏。
误报也有代价。阈值按一次短促的促销突发来调,团队就学会静音告警;调得太松,用户整个销售周期都看到过期图片。在把告警升级为呼叫之前,用正常流量、故意的429响应、存储失败和畸形输出做抽样验证。
最后一条规则刻意不花哨:选那个通过实测质量门槛、并且对你实际拥有的流量留有足够容量余量的后端,让CRM动作与可选像素保持独立。真正沉淀下来的资产,是决策记录和它的校验轨迹。
热门跟贴