文章目录
P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 传送门http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。
一个商品想上架,第一关不是质检,是材料。产品说明书、检测报告、品牌授权书、平台发布规则、商品参数表、待发布文案,六样东西,少一样平台都不搭理你,比甲方还挑剔。
更绝的是,这六样东西来自六拨人。说明书是研发写的,检测报告是第三方机构出的,授权书是品牌方签的,发布规则是平台下发的,文案是运营编的。五拨人各写各的,最后要能互相咬合,这难度不亚于让甲方和乙方在同一句话上达成共识。
关键字段必须对得上:型号、净含量、品牌名、生产企业、授权渠道、授权有效期。任何一个对不上,轻则被驳回重提,重则被扣上一顶「虚假宣传」的帽子。对不上不可怕,可怕的是你不知道哪里对不上,只能一页一页翻。
1. 人肉核验:一款纯体力劳动
1.1 六份文件,十一页,二十分钟
我手头这套资料加起来十一页,逐项比对完大概二十分钟。这二十分钟不是脑力劳动,是纯体力活,本质上是人肉 OCR 加人肉数据库——把每一页翻过去,把字段抄出来,再对着看。
人一累就漏。漏了也没人骂你,但平台会。审核驳回的理由永远是同一句:「请核对后重新提交。」那一刻我深刻理解了什么叫无效加班。
这份活干久了,我怀疑自己上辈子是个条形码扫描枪。
1.2 这活能不能让机器干
能,但有一个前提:得先想清楚机器怎么分工。这就是这篇文章要聊的事——把二十分钟压成一次点击,顺便把我的眼睛还给我。
2. 一个模型干不了两种活
2.1 数学老师教体育的悲剧
最开始我图省事,一个模型全包。文档丢进去让它读,图片转 base64 也丢进去让它看,一次请求解决所有问题。
跑是能跑,但结果像开盲盒。同一个模型在长文档上抠细节抠得跟侦探似的,到了图片上就开始含糊,包装上的品牌名和净含量经常读错,或者干脆回我一句「图片未显示相关信息」。
这句话我看了十几次,一度怀疑模型在装死。后来发现不是,它是真的没看见。
让一个模型同时干文本和图像,等于让数学老师去教体育、体育老师去教数学,俩人还都觉得自己教得挺好。
2.2 两个活,性质根本不一样
文本审查吃的是上下文长度和逻辑推理。在一万多字的材料里找字段冲突,判断一句宣传语有没有踩广告法的线,这是长跑。
图片识别吃的是视觉解析,要把包装图上的品牌、品名、型号、净含量一个字符不差读出来,这是短跑冲刺。
硬塞给一个模型,等于让它一边长跑一边冲刺,最后两个成绩都不及格。
所以方案拆开:文本交给 qwen3.8-max,图片交给 qwen3.5-omni-plus,各管一段,结果在本地合并。
选这俩不是拍脑袋。qwen3.8-max 给了 1000k 上下文,文档级判断就靠它;qwen3.5-omni-plus 是 256k 的全模态模型,看图归它。至于为什么这么分,后面有实测数据,先往下看。
3. 建一个 Key:只有一次露脸的机会
蓝耘 MaaS 的入口在 maas.lanyun.net,注册登录之后到「API Key 管理」新建一个。
这里有两件事要记牢。
第一,Key 只在创建那一刻完整显示,关掉页面就没了。这个设计让我想起初恋,都是只有一面之缘,错过就再也找不回。
第二,账户得有余额,否则新建的 Key 调不通,返回一个让你怀疑人生的鉴权错误。
好消息是,整个项目从头到尾只用这一个 Key。蓝耘是统一网关,文本模型和视觉模型共用同一个凭证,不用给每个模型单独办一张「身份证」。
4. 改配置:一个 Key,两个模型名
4.1 模型名拆成两项
工程原来的配置只有一组三元组:API_KEY、BASE_URL、MODEL,一个模型名走天下。要支持双模型,得把模型名拆成 text_model 和 vision_model。
我把模型相关的配置收进一个 PROVIDERS 结构,接入地址、凭证变量、文本模型、视觉模型排在一起,换模型只改这一个文件:
PROVIDERS = {
"lanyun": {
"label": "蓝耘元生代 MaaS",
"short": "蓝耘",
"base_url": "https://maas-api.lanyun.net/v1",
"base_url_env": "LANYUN_BASE_URL",
"key_env": "LANYUN_API_KEY",
"text_model": "qwen3.8-max",
"vision_model": "qwen3.5-omni-plus",
},
}
4.2 Key 只从环境变量读
有个小设计要说明:代码里不出现明文密钥。key_env 指向 LANYUN_API_KEY 这个变量名,真正的值放在 .env 里,仓库里只留一份 .env.example。这样配置结构可以随手贴,凭证不会跟着代码一起裸奔。
旧的单模型字段我保留成了 property,指向上面的 text_model,上层代码里原来那些 settings.qwen_model 的调用一行都不用动。改动面收在一个文件里,这大概是我这周做过最优雅的活。
5. 跑一遍,86.2 秒里发生了什么
5.1 六份文件加一张图,一次体检
资料准备齐,六份文档加一张商品包装图一起传进去,点「开始体检」。前端把执行过程流式推出来,每一步都带着耗时,跟外卖配送一样透明,就差一个「骑手正在赶来」。
六份文件依次读取,本地解析层先跑完,图片送去做多模态识别,最后一步才是大模型语义复核。页头那行「当前引擎:蓝耘元生代 MaaS · qwen3.8-max」是从后端配置读出来渲染的,不是写死的文案,改配置它跟着变。
5.2 12 次调用,只有 2 次花钱
完整跑一轮,工具调用明细和模型调用统计都记在过程面板里:
| 项目 | 数值 |
|---|---|
| 模型调用次数 | 2 次 |
| Prompt Tokens | 1654 |
| Completion Tokens | 3747 |
| Total Tokens | 5401 |
| 总耗时 | 86.2 s |
两次调用的分布差异非常明显:
| 调用 | 模型 | 耗时 | Total Tokens |
|---|---|---|---|
| vision_llm | 蓝耘 · qwen3.5-omni-plus | 3.1 s | 1336 |
| text_llm | 蓝耘 · qwen3.8-max | 83.0 s | 4065 |
视觉识别 3.1 秒就回来了,提取出四个可见字段。文本复核花了 83 秒,占总耗时的 96%。
这 83 秒是整条流程里最需要提前知道的事:它不是卡,是 qwen3.8-max 要把六份材料的关键字段全过一遍,再逐条判断合规风险,输出 token 有 3676 个。前端有进度事件推着,不会让人觉得程序死了,但第一次跑的人十有八九会以为它挂住了——我第一反应是去查网线。
这一轮总共触发了 12 次工具调用,其中只有 2 次真的消耗了 token:
pdf_parser 解析 01_产品说明书.pdf:2页、857字符 16 ms
pdf_parser 解析 02_产品检测报告.pdf:3页、975字符 17 ms
pdf_parser 解析 03_品牌授权书.pdf:1页、543字符 7 ms
pdf_parser 解析 04_平台商品发布规则.pdf:3页、1041字符 17 ms
markdown_parser 解析 06_商品信息表结构.md:1个表格、685字符 0 ms
markdown_parser 解析 05_待发布商品草稿.md:1个表格、443字符 0 ms
field_extractor 抽取品牌/型号/规格/功效/授权等关键字段 0 ms
vision_llm 蓝耘 · qwen3.5-omni-plus 3.1 s
consistency_checker 比对名称/品牌/型号/规格/生产企业,发现 4 处 0 ms
compliance_checker 扫描绝对化用语与功效证据,发现 11 处 0 ms
authorization_checker 核对授权渠道与有效期,发现 2 处 0 ms
text_llm 蓝耘 · qwen3.8-max 83.0 s
格式解析、字段抽取、一致性比对、合规扫描、授权核对,全部跑在本地,耗时都在 20 毫秒以内,一分钱 token 不花。真正必须交给大模型的只有两件事:看图,和判断语义。
把能本地做的先做掉,模型只处理它独有的那部分——这是成本最低的分工方式,也是我唯一一次体会到「少用模型」居然比「用好模型」更重要。
模型调用失败也有兜底。两个客户端遇到网络异常、限流或者返回格式不对时都返回 None,编排层收到 None 不会抛异常,而是沿用本地规则引擎的结论继续走,报告里会如实标出引擎来源。一次 API 抖动不至于让整个体检失败,代价是那一轮语义判断精度下降。相当于临时工请假了,值班经理顶上,结论会写清楚是谁给的。
6. 三个模型跑同一张图
6.1 5.2 倍的差距
上面说视觉那步选了 qwen3.5-omni-plus,理由是快。这个判断是测出来的,不是信仰。我用同一张商品包装图,让蓝耘上的三个模型各做一遍同样的识别任务:
| 模型 | 耗时 | Total Tokens |
|---|---|---|
| qwen3.5-omni-plus | 3.4 s | 1336 |
| deepseek-v4.1-flash | 6.0 s | 1403 |
| qwen3.8-max | 17.8 s | 1561 |
最快和最慢差了 5.2 倍,token 也省了 225 个。三个模型的识别结果倒是一致,都读出了包装上的品牌、品名、型号和净含量。在这个任务上,能力和速度并不同步:qwen3.5-omni-plus 用三分之一的 token 和五分之一的时间,做到了同样的准确度。
如果当时偷懒让 qwen3.8-max 一肩挑,光图片这一步就要多等 14 秒,而这 14 秒换不来任何额外的识别质量。多花的 14 秒,够我刷三条短视频,换回来的是零条有效信息。
6.2 换模型,一行代码的事
这三个模型是同一次对比里换着跑的,中间没动过接入配置。蓝耘是一个网关,文本模型和视觉模型共用同一个接口地址和同一个 Key,模型名只是请求里的一个参数:
for m in models:
settings.vision_model = m # 只换模型名,地址和 Key 全程没变
res = analyze_images(payload) # 复用的是生产用的那段调用逻辑
整个循环跑完三个模型,base_url 一直是 https://maas-api.lanyun.net/v1,凭证一直是 LANYUN_API_KEY 这一个变量。换模型不做任何凭证和地址上的动作——这是选型阶段最直接省下来的一笔成本。
7. 机器替我抓到了什么
7.1 25 个问题,23 个高危
体检结论直接给在最前面:高风险,不建议发布。共发现 25 个问题,高风险 23 个、中风险 2 个、低风险 0 个。
问题按性质分两类。一类是资料之间对不上:型号不一致,待发布文案写 CX-SR-50,说明书基准值是 CX-SR-30;净含量不一致,文案写 50 mL,基准值 30 mL。
另一类来自图片识别:商品名称识别出「屏障修护精华」,基准值是「澄序屏障修护精华」;品牌识别出「星pure星纯」,基准值是「澄序 CALMORA」。
7.2 人眼扫不出来的那一行
后两条是这个工具最核心的价值。品牌名和商品名肉眼看着差不多,只有把包装图里的字抠出来和文档逐字比对,才能发现它们根本不是同一个品牌。
这一步纯靠人工看,很容易划过去。我自己的眼睛就是最好的反例——人工核验的时候我扫了三遍,愣是没发现包装上印的是另一个牌子。所以说,人眼的容错率高得离谱,高到能把自己的饭碗漏掉。
每条问题下面都跟着一句处理建议。型号那条会写明「请将待发布型号修改为基准材料中的 CX-SR-30,或确认基准材料已更新」。给建议而不是只报错,是因为这类冲突有两种可能:要么文案写错了,要么基准材料该更新了。工具没法替人判断是哪种,只能把两条路都列出来,把决策权还给人——这一点,它比某些产品经理有分寸。
7.3 合规风险那一组
合规风险是 qwen3.8-max 判出来的:「3天彻底祛痘」属于绝对化疗效承诺,「医美级修复」涉嫌暗示医疗效果,「孕妇绝对安全」是高风险安全承诺,「8小时长效保湿」和「敏感期也可放心使用」缺对应的证据材料。
这一组是整轮体检里最花时间的一步:要在六份材料里逐句找绝对化用语和缺证据的功效宣称。83 秒花在这里,我觉得值。
工具还有一个设计:把「机器判定的结论」和「需要人工确认的事项」分成两块呈现。授权渠道和目标渠道对不上、授权已过期这类问题,工具只能指出来,最终要不要发布由人决定。比给一个笼统的风险分数有用,也比直接替人拍板有边界感。
8. 一分钱的账
跑完一轮想对账,蓝耘控制台里有现成的:调用统计能看到每次请求的时间和成功次数,Token 响应时间曲线里那两个波峰,对应的是几轮测试里耗时较长的文本复核。某次调用失败,可以直接对着时间点查。
这块记录不需要自己在代码里埋点,比自建一套调用日志省事。我换模型的时候主要就看它:配置改完之后有没有真的生效,看一眼调用记录就知道了。
这轮体检花掉 5401 个 token,按 qwen3.8-max 的输入 0.012 元、输出 0.036 元每百万 token 算,成本在一分钱左右。六份材料加一张图,从解析到出结论 86.2 秒。我一度以为计价器坏了。
真正省下来的不是这点时间和这点钱,是它替我守住了那条最容易失守的线:包装图上印着「星pure星纯」,文档里写着「澄序 CALMORA」,这两个名字放在一起,人眼扫一遍是发现不了的。
我的眼睛扫了三遍,都没发现。
P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 传送门http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。
385

被折叠的 条评论
为什么被折叠?



