ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

新模型选型实战:能力评估、长上下文与成本工程

新模型选型实战:能力评估、长上下文与成本工程

每次有新模型代号放出来,最先在圈子里传开的永远是跑分截图,接着是"碾压""吊打"这类词,再往后两周,真正把它接进业务里的人才会冒出来说几句实话。Gemini 4 Argon 这个名字出现的时候也是同样的节奏。这篇模型综述我不打算复述参数表,也不想做能力排行榜的搬运工——公开材料里能确认的硬信息其实有限,把没验证过的数字写成结论,对读者没有任何用处。我更想聊的是:当你手上真的多了一个叫 Argon 的型号可选,你该怎么在两天之内判断它值不值得用、用在哪些环节、会遇到什么麻烦。这套方法对我而言比任何一个跑分都值钱,因为它可以平移到下一个、下下个新模型上。

这篇文章适合三类人:正在做模型选型的技术负责人、要把大模型能力接进产品的一线开发、以及单纯想搞清楚"新模型到底新在哪"的从业者。全文围绕技术定位、能力评估、实际使用三个层面展开,中间会给出可以直接抄的评测集搭建方法、成本拆解表和几个我反复踩过的坑。

1. 拿到一个新代号,先定位它在能力谱系里的位置

模型选型最忌讳的一件事,是把它当成一个孤立的对象去研究。任何一家做模型的一方,产品线基本都是分层的,你只要搞清楚"这一档是给谁用的",很多疑问会自动消解。所以第一步不是读评测,是读定位。

1.1 后缀与代号背后的分层逻辑

大模型家族的命名通常遵循"家族名 + 档位标识"的结构。家族名代表同一代基座,档位标识决定它在延迟、成本、能力三者之间偏向哪一边。常见的分层大致是三档:

档位典型定位延迟量级单价量级适合的任务
顶配档复杂推理、长文档分析、多步规划秒级到十秒级高合同审阅、代码重构、报告生成
均衡档通用对话、内容生产、信息抽取一秒到三秒中客服、摘要、分类、RAG 问答
轻量档高频短任务、路由、打标几百毫秒低意图识别、字段归一化、兜底

Argon 这类内部代号,往往对应某一代基座的一个特定切面——可能是针对长上下文优化的版本,也可能是针对工具调用稳定性调过的版本。判断它属于哪一档,不需要等官方白皮书,看四个指标就够了:支持的上下文长度、是否接受图像或音频输入、是否原生支持工具调用与结构化输出、定价处在家族里的哪个位置。这四个指标的组合基本能画出它的能力轮廓。如果它的上下文长度明显高于同代其他型号,那它多半是冲着文档处理场景去的;如果它的单价明显低于同代,那它的定位就是承接高并发流量。

我在做选型时会先画一张二维坐标,横轴是"单次调用成本",纵轴是"任务完成率",然后把候选型号全标上去。落在这张图右上角的,才是"贵但值得";落在左下角的,是"便宜够用"。最怕的是标在中间那一片——贵一档但完成率没拉开差距,这种型号最容易因为"看起来更先进"被误选,然后月底账单教你做人。

1.2 规格表里哪些数字需要打折看

官方规格表是好东西,但要懂得换算。几个我每次都会打折的地方:

上下文窗口。标称 100 万 token 和"能有效利用 100 万 token"是两件事。业界普遍的现象是,随着输入变长,模型对中段信息的召回率会下降,这就是常说的"中间遗失"。所以看到窗口数字,我第一反应是问:在我这个任务上,有效窗口大概是多少?验证方法很简单,把一份 200 页的文档拆成若干段,把关键信息分别塞在开头、中间、结尾,然后看它能不能都找出来。这个测试我做一次大概二十分钟,但能省掉后面两周的返工。

吞吐速度。标注的 token/s 通常是短提示下的峰值。实际业务里提示往往几千 token 起,输出还要流式展示,体感速度会明显低于标称值。真正该测的是"首 token 延迟"和"完整响应时间"两个指标,而不是吞吐。

定价。现在主流做法是输入、输出、缓存命中三档价格,输出通常比输入贵好几倍。如果你的场景是长输入短输出(比如分类、抽取),成本会比想象中低;如果是短输入长输出(比如写作、代码生成),成本会比你按平均单价算出来的高出一截。

提示:核算成本时,一定用"输入 token 数 × 输入单价 + 输出 token 数 × 输出单价"分开算,别用平均单价乘总 token,误差经常在三成以上。

1.3 两小时体检:用你自己的三十条任务先跑一轮

拿到访问权限之后,我不会立刻去跑公开评测,而是从自己的工单系统里翻出三十条真实的历史请求,覆盖成功案例和失败案例各一半。跑之前先定好评判口径,比如"字段抽取完全正确记 1 分,部分正确记 0.5,错记 0",然后逐条打分。

这个流程大概两小时,产出的东西比任何榜单都实在——因为它测的是你的数据分布。我印象很深的一次,某个新模型在通用榜单上比旧模型高出一大截,但在我们的客服摘要任务上,"遗漏用户诉求"的比例反而上升了,原因是它更倾向于压缩输出,把一些关键细节吃掉了。这种东西跑分永远看不出来,只有你自己的三十条样本能暴露。

体检时我会额外记录三个附属指标:格式合规率(输出能不能直接被 json 解析)、拒答率(遇到边界问题它是硬答还是承认不知道)、重复率(长输出里有没有车轱辘话)。这三项直接决定上线后你要写多少补丁代码。

2. 别让榜单替你做决策,攒一个四百条的小评测集

说完快速体检,得说说正儿八经的评测。这一步很多团队做得非常敷衍——看几个公开榜单,做几个 Demo,就拍板了。我见过太多这样的项目,上线三个月后开始返工,返工成本是选型阶段省下的时间的十倍。

2.1 通用榜单为什么对你的场景几乎没有决策价值

公开评测集的问题不在质量,在曝光度。一个评测集一旦被公开使用超过半年,它就会以各种形式进入模型的训练数据或调优流程。这不是哪一家的问题,是行业里所有做模型的一方都会面临的现实。结果就是,榜单分数越来越像"考试能力",而不是"工作能力"。

更实际的问题是分布不匹配。公开评测覆盖的是通用知识问答、数学题、代码题,而你的业务数据可能是保险理赔单、设备维修记录、方言语音转写。这两者之间的距离,比很多人想象中要大得多。我曾见过一个模型在代码评测上名列前茅,但在处理我们那些格式混乱的工单文本时,提取准确率还不如一个更老的型号——因为它对不规范文本的鲁棒性没被专门优化过。

所以我的立场很明确:公开榜单用来做初筛,把候选从十几个砍到三四个;最终决策必须靠自建评测集。

2.2 四百条样本怎么攒出来

数量上我不追求大,四百到六百条足够。关键是分层。我的分层维度通常是这样:

  • 核心场景 60%:日常量最大的那两三个任务,按真实流量比例采样
  • 边界场景 20%:输入超长、格式错乱、多语言混杂、含表格或图片的请求
  • 对抗场景 15%:故意诱导、含歧义、信息不足、前后矛盾的输入
  • 安全与合规 5%:需要拒答或转人工的类型

样本来源不用另起炉灶,直接从三个地方翻:历史工单里被人工纠正过的请求(这些是最有价值的负样本)、日志里耗时最长的请求(往往是最难的任务)、客服或运营群里被反复截图讨论的案例(这些通常是模型表现最不稳定的地方)。

标注这一步最容易被跳过,也最不该跳过。我的做法是给每条样本写一个简短的标准答案要点,不需要逐字,但必须包含"必须出现的要素"和"绝对不能出现的内容"。比如一条合同抽取任务,标准答案写的是"必须命中金额、付款周期、违约条款三项;不得出现编造的公司名"。

2.3 让评分可复现:同一提示跑三遍

模型输出有随机性,这个大家都知道,但做评测时经常忘。同一条样本跑一次得 0.8 分,跑三次可能分别是 1、0.5、0.5。所以我的规则是每条样本固定跑三次,取平均,同时记录最低分。最低分比平均分更能反映上线后的用户投诉率,因为用户遇到一次糟糕输出就会记住。

评分方式上,能用规则判断的坚决不用模型判断。字段抽取用字符串匹配,分类用标签比对,格式合规用解析器直接试。只有开放式生成(比如摘要、改写、报告)才需要模型辅助评分,而且必须配一个明确的分项 rubric:

  • 事实一致性(0-2 分):有没有编造
  • 覆盖度(0-2 分):关键信息有没有遗漏
  • 语言质量(0-1 分):通顺、无模板腔
  • 格式符合(0-1 分):是否符合约定结构

这套 rubric 写下来之后,换谁来评、隔多久评,结果都不会差太多。我还会定期从评测集里抽二十条人工复核模型评分,看偏差有多大,偏差超过阈值就调整 rubric。

3. 长上下文与多模态:卖点同时也是误用最集中的地方

新一代模型最常被宣传的两个能力,就是超长上下文和多模态输入。这两个能力确实解决了很多以前很难做的问题,但也是我用下来翻车最频繁的地方。

3.1 上下文窗口不等于有效注意力

有一次我做一个财报分析的原型,把一份三百多页的文档整份塞进去,问一个具体的财务指标。答案是错的,而且是那种"看着很像但数字不对"的错。换成只塞相关章节,正确率立刻上去了。这就是典型的长上下文误用。

我的经验法则是:能用检索解决的,不要靠长上下文硬塞。检索负责把范围从"三千页"缩到"十页",长上下文负责在这十页里做跨段落的推理整合。这个分工下,两个技术各自发挥长处,成本也低得多。

如果确实需要塞长文档,有几个实操技巧值得记一下:

  • 把问题放在输入末尾。多数模型的注意力分布对末尾更友好,把指令放在长文档后面,命中率会高一些。
  • 加显式的定位锚点。在文档分块时给每块加编号,然后要求模型输出"依据第 N 段",这样即使答错你也知道它读的是哪一段。
  • 先让模型做一轮结构化摘要,再做第二轮提问。两段式虽然多一次调用,但结论的可追溯性好太多。
  • 长下文任务一定要给"找不到"的出口。明确写"如果文档中未提及,请回答未提及",否则模型倾向于编一个合理数字。

3.2 多模态输入的预处理链路

多模态这块,坑基本都在预处理上。我踩过最典型的一个是图片分辨率。模型对输入图片通常有尺寸上限或内部缩放逻辑,一张四千像素宽的截图被缩到一千像素之后,上面的小字直接糊掉,模型自然读不出来。后来我们改成对截图先按区域裁剪、分区送入,识别率立刻正常。

另一类是表格。扫描件里的表格转成图片给模型,效果远不如先做一次 OCR 转成带结构的文本。我的建议是把多模态当作"OCR 兜底"和"版式理解"工具,而不是替代传统文档解析流程。复杂的票据、报表、合同,走"版式检测 → OCR → 结构化 → 模型理解"这条链路,稳定性比直接丢图高一个量级。

3.3 结构化输出的稳定性工程

结构化输出是实际使用中最刚需的能力,也是检验一个模型工程成熟度的试金石。我关注的指标是一次解析成功率,也就是不做任何重试,输出直接能被 json 解析的比例。

提升这个指标有几个经验:

  1. 给出完整的 schema,并且给一个短示例。只给 schema 不给示例,字段嵌套深的时候失败率明显更高。
  2. 不要在提示里要求模型"格式美观"。任何关于缩进、换行的要求都可能让它输出带注释的非法 json。
  3. 字段顺序固定。有些模型会按提示里的字段顺序生成,顺序乱了容易在长输出中途"跑偏"。
  4. 兜底层必须有。即使成功率 98%,一天十万次调用也有两千次失败,解析失败要有降级路径(重试一次、宽松解析、转人工)。

我们现在的标准做法是:解析失败先做一次宽松修复(去 markdown 标记、补引号、截断多余内容),修复失败再重试一次并把温度降到最低,两次都不行才走兜底分支。这套组合下来,实际进入兜底分支的比例能压到千分之二以内。

4. 接进线上系统时,真正决定成败的是工程账

Demo 到上线之间隔着的不是能力差距,是账单和延迟。很多选型讨论到最后都变成"哪个更强",但实际决定项目能不能跑下去的,是"哪个在这个预算和延迟要求下够用"。

4.1 一次请求的成本到底拆成哪几段

很多人算成本只算"输入 + 输出",漏掉的是隐藏项。我一般按四段拆:

成本项说明常见占比
系统提示每次请求都带的角色设定、规则、示例15%-30%
检索上下文RAG 召回的文档片段20%-40%
对话历史多轮场景下累积的历史10%-40%
模型输出生成的回答20%-50%

看到这个表就知道优化空间在哪了。系统提示是最容易优化的——我见过不少团队的系统提示写了两千多 token,里面一半是历史遗留的、已经没用的规则。做一次清理,成本直接砍掉一成。

对话历史则是增长最快的部分。多轮对话如果不做管理,十轮之后历史长度可能超过检索内容。我的处理是滑动窗口加摘要:保留最近三轮原文,更早的压缩成一段一两百字的摘要。

4.2 分级路由:不是所有请求都值得用最贵的型号

上线之后你会发现,请求的难度分布是极度长尾的。真正需要强模型的可能只占 15%,剩下 85% 都是简单任务。所以我的标准架构是三级路由:

  • 一级(约 60%):意图识别、字段归一化、固定话术。走轻量模型,延迟几十到几百毫秒。
  • 二级(约 25%):常规问答、摘要、分类。走均衡档。
  • 三级(约 15%):复杂推理、长文档、多步任务。走顶配档,即 Argon 这类定位的型号。

路由本身怎么判断?最简单的方式是用规则(关键词、长度、是否含附件),中等复杂度用一个小分类模型,最复杂的用轻量模型自己判断。我一般从规则起步,因为规则可控、可解释、出错好修。上线跑一个月收集数据之后,再考虑换成模型路由。

这套架构下来的成本,通常比全量走顶配低 60% 到 75%,而用户感知的质量下降非常有限——因为用户真正在意的那些难问题,还是被最强的那一档接住了。

4.3 缓存、超时和重试的设计细节

缓存这一块,两个地方最有效:一是系统提示和固定文档的前缀缓存,很多平台对重复前缀有折扣价,命中率高的话能省不少;二是语义缓存,相似问题直接返回上次的结果。语义缓存要谨慎,阈值设太松会出现"答非所问",我一般把相似度阈值设在 0.95 以上,且只对事实型问答开启。

超时设置要分层。首 token 超时和总超时是两回事,首 token 超时短一些(比如 5 秒),让用户尽快看到"正在生成",总超时按任务复杂度设(比如 60 秒)。流式输出对体感帮助很大,但要处理好断流——网络断了要能续,而不是从头再来。

重试策略上,我的原则是"只对可恢复错误重试"。超时、限流、5xx 可以重试,参数错误、内容被拒不要重试。重试次数控制在两次以内,且必须加随机退避,否则高峰期会形成重试风暴,把小问题放大成大故障。

5. 这几个坑我踩过,你可以绕开

前面讲的是方法,这一节讲的是具体翻车现场。有些是技术问题,有些是流程问题,但共同点是:文档里不会写,只有真跑起来才知道。

5.1 提示词在 Demo 里很灵,上线就崩

这个坑太常见了。原因通常有三个:一是 Demo 用的是你自己挑的好样本,上线面对的是真实长尾;二是 Demo 里你手动清理过输入格式,上线后输入带着各种奇怪字符;三是 Demo 时温度设得很低,上线为了多样性调高了。

我的解决办法是把提示词的测试和代码的测试一视同仁。提示词改动必须跑一遍那四百条评测集,输出对比报告,通过率下降超过 2 个百分点就打回。另外,输入预处理必须固化在代码里——去空白、截断超长、过滤控制字符,这些不能靠人。

还有一点:别在提示词里堆太多规则。规则超过十条之后,模型往往顾此失彼,反而把最关键的那条漏了。我现在的做法是把规则按优先级分组,核心的三到五条放系统提示,场景相关的放用户提示模板里,一次只给当前场景需要的那些。

5.2 版本漂移:昨天还好好的,今天就不对了

模型服务方会持续更新版本,有时候是显式发布新版本号,有时候是静默优化。结果是同一个提示词、同一个参数,隔一周结果就有细微差别。这种漂移在小任务上不明显,但在严格的抽取任务上会突然冒出一批格式错误。

应对方法有两层。第一层是锁版本,接口里能指定版本号的一定指定,别用"最新版"这种默认。第二层是回归哨兵,每天定时用固定的一百条样本跑一次,只要通过率波动超过阈值就告警。这个哨兵的成本很低(一天一百次调用),但能让你在用户投诉之前发现问题。

5.3 评测集被你自己污染了

这个问题比较隐蔽。你拿评测集反复调提示词,调到通过率 95% 很开心,然后上线发现实际只有 80%。这不是模型的问题,是你过拟合了评测集。

解决办法有两个:一是留一份"封存集",大概占总量的 20%,平时不碰,只在重大版本切换时用;二是定期补充新样本,每个月从线上日志里抽二十条真实请求(脱敏后)加进评测集,同时淘汰一些已经不再有代表性的老样本。评测集是活的,不是一次性资产。

5.4 流式输出和工具调用一起用会出问题

流式输出要求边生成边推送,工具调用要求模型先停下来等外部结果,这两件事放在一起会打架。我遇到过的情况是:模型在流式输出中途决定调用工具,前面的半截文本已经推给用户了,工具返回后它又开始重新组织语言,结果用户看到的是前后矛盾的两段话。

处理方式上,我的经验是按场景二选一。需要调用工具的任务关掉流式,先让模型完整规划再执行,执行完再统一输出;纯生成类任务开流式,但不允许中途调工具。如果业务上两个都要,那就在前端做缓冲——工具调用期间显示"正在查询",返回后整体替换,不要拼接。

5.5 数据边界要在第一天就画清楚

这一条不是技术问题,但比任何技术问题都重要。哪些数据可以送进模型、哪些必须脱敏、输出的内容要不要留存、留存多久、谁能看,这些必须在项目启动时就定下来,并且写进代码里而不是写在文档里。

我的做法是在调用层做一个统一的出口,所有请求必须经过它,它负责脱敏(手机号、证件号、地址等按规则替换)、负责记录审计日志、负责拦截不该出去的内容。这样做的好处是,后面无论谁写新功能,都不可能绕过这道关。等到业务做大了再回头补,成本会高到你不想做。

6. 最后说几句我在实操中的体会

关于 Gemini 4 Argon 这个具体型号,公开可核实的信息目前还不足以支撑任何确定性的能力结论,所以这篇综述我有意把重心放在方法上——面对任何一个新代号,你需要的不是别人告诉你它多强,而是一套能在两天内自己得出答案的流程。这套流程我用过很多次,换过好几个家族的模型,每次都能在选型阶段省下大量返工。

如果只让我留三条经验,我会留这三条:第一,用你自己的三十条真实样本做第一轮判断,比读十篇评测都管用;第二,把成本按输入输出分开算,并且一定要把系统提示和对话历史算进去,这两块是最容易被忽视的隐性开销;第三,上线第一天就把评测哨兵和调用出口建好,后面所有的稳定性问题都靠这两个东西兜底。

还有一个小技巧值得分享:每次切换模型或大改提示词,我都会在发布说明里记一笔"本次改动影响了哪几条评测样本",半年后回头看这份记录,你能清楚知道这个系统是怎么一步步变稳的,也能知道哪些改动是白折腾。这份记录比任何文档都有价值。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进