上个月给一个合同审阅 Agent 报价,我在表格里拉了三列:按任务、按步数、按结果。三列算出来的毛利率差不多,发出去之后的反应却完全不同——按任务那版被追问「任务包能不能拆开买」,按步数那版被采购直接打回,理由是「没法做预算」,按结果那版最受欢迎,客户 CTO 说「这个好,我们共担风险」,然后卡在法务那里三个星期,卡在一句话上:怎么算「这个条款是被你查出来的」。
那次之后我的判断变了。定价单位看着是个计价问题,其实是方差分配问题。Agent 每次运行的成本都不是常数,你选哪个单位,本质是在选把这个波动塞给谁。
步数是最诚实的成本,也是最差的报价单
我们内部有个面板统计每次运行的步数。一次典型的合同审阅大概跑 7 到 12 步,中位数在 9 步上下;但长尾很长,遇到扫描件或者格式混乱的附件,重试会把它推到 30 步以上,p95 大致是中位数的四五倍。按步计费在成本侧几乎完美对齐,我一度很兴奋,觉得终于找到一个「不多收也不少收」的单位。
客户不买账,而且理由很正当:步数是我们的内部概念。客户能看见的是「一份合同进去,一份批注出来」,他没法预判手上这份合同会让 Agent 走 8 步还是 40 步。采购要的是一个能写进 PO 的数字,财务要的是「这个月最多花多少」的上界。按步计费把预算的不确定性推给了付款方,而付款方恰恰是最没有能力控制这个变量的人。
更隐蔽的是激励问题。收入随步数增长,我就没有动力去优化步数。哪怕我主观上想优化,组织里总有人会问:你把中位数从 9 步压到 6 步,这个季度收入掉三成怎么解释?这种激励一旦种下去,靠自觉是拔不掉的。
所以我现在只把步数用在内部:成本核算和容量规划,不对外报价。但它不能完全丢掉,它是我唯一能防「跑飞」的闸门。合同里通常写「单次任务最多 30 步,超出即中止并退还配额」——不进价格,进限额。
「一次任务」的定义比单价难写十倍
按任务计费的麻烦全在定义上。我第一版合同写的是「一次合同审阅为一次任务」,客户法务反问了三句:
- 同一份合同改了三处重新跑,算新任务吗?
- Agent 中途要人补一个字段,补完继续跑,算一次还是两次?
- 跑失败了算不算?
我们最后的答案分别是:48 小时内同一文档不重复计费;人工介入不超过 10 分钟的那次仍算同一次任务,但该次不计入响应时间承诺;失败退配额,不收费,但连续失败三次要一起看日志。
这三条谈下来花的时间比价格本身还长。我后来干脆把它做成一张表放进合同附件:计费事件、不计费事件、边界情况,各列几行。写到第六条的时候我意识到,这张表其实不是我写出来的,是产品边界逼出来的——凡是写不进这张表的地方,都是产品还没想清楚的地方。
还有个副作用:任务包的粒度会决定客户怎么用你。按一千个任务打包卖,客户会攒着用,把小活合并成一次提交;按单次卖,客户会把你当查询接口,随手就调。这两种用法对上下文管理的要求完全不同,我因为改定价粒度,回头把 prompt 的输入结构也改了一版。
按结果分成只在能归因的地方成立
按结果付费听起来最像价值定价,也确实最容易签下第一单。但它的成立条件比想象中苛刻:结果要可归因、可延迟确认,而且双方得先对「这事本来就会发生」有共识。
合同审阅里有一类风险条款,法务本来就会抓出来。客户会说这单不算你的功劳。这种扯皮没有技术解,只有流程解。我现在只在两类场景开放结果计费:一类有明确的下游动作,比如「识别出的缺失条款被补进最终版本」;另一类能对照历史基线,客户愿意提供过去几个月的抽检数据。既没有下游动作也没有基线,我就不谈分成,只谈任务包。
顺便说,结果分成对采购流程很不友好。预算科目里没有「未来可能省下的钱」这一栏,很多大客户不是不认这个逻辑,是入不了账。
我现在用的结构
三层:计费用任务,可预算;限额用步数,防跑飞;返点用结果,只在对赌场景开放。说直白一点,卖预算给财务,卖上限给工程,卖对赌给老板。
客户还会拿人头价来锚定。有人问过一个任务包折下来相当于几个初级法务的月成本,我给不出干净答案,只能说大致是「不到一个人的五分之一」,然后立刻补一句这是按当前调用量算的,量翻三倍会变。这种模糊的回答通常比精确的小数点更容易被接受。
下周要把那份合同附件的六条重写一遍,把「人工介入」的判定从分钟数改成明确的动作清单。改之前我想先问自己一句:如果现在就要给手上的 Agent 报个价,我能不能一句话说清「一次任务」是什么?说不清的地方,多半不是定价没想好,是产品边界还没定。
评论