软件需要负什么责任 最近看到一个问题很有趣,提问者说自己问了 AI 一个问题,但是 AI 给出了错误的答案(类似1+1 算成了 3),还照样收费,这样是否不合理?这个问题会引起一个有意思的话题:软件出现 bug(有问题) 是否需要赔偿客户?想要回答这个问题,我们先要了解一个软件行业的概念叫SLA。SLA(Service Level Agreement,服务等级协议),是服务提供商与客户之间的一份正式承诺,明确规定了服务应该达到的可用性、性能、质量标准和违约后果(通常是赔偿)。它把模糊的"系统别挂就行"变成了一份可量化、可追责的合同。我们来拆解下这里提到的标准,可用性指的是软件服务一年/一个月能跑多久?通常是一个百分比指标如99.9%,表示每年百分之 99.9的时间是可用的,算换成时间单位就是每年不可用的时间要小于 8 个小时。业内一般用几个 9 来称呼可用性,99.9%叫 3 个 9,99.99%叫 4 个 9,99.999%叫 5 个 9, 但其实很少有 6 个 9 的(99.9999%),不是没有而是很难做到,6 个 9 我们换成时间单位每年不可用时间要小于31.5 秒(半分钟),说实话程序员打开电脑的时间都不够。性能指的是响应多快(一个问题多久响应)、吞吐量多少(同时能服务多少个用户)等,类比餐馆点菜就是每桌上菜需要多久,总共能装下多少桌同时用餐,这两个指标当然是要追求极致,但成本也必然会有所增加。质量标准指软件交付时必须符合给定的验收标准,不能出现影响主流程的明显问题,这里就涉及到软件的 bug 是否会写入质量标准?SLA主要围着服务能不能稳定交付,而不是"代码里有没有错"。原因简单bug不可直接度量、不可客观计数、发现与否取决于测试覆盖,写进SLA等于给自己埋雷。我之前的文章也分析过软件的 bug 是不可能避免的,也是不可知的,没人可以承诺bug 已经被全部找出来。那既然软件 bug 不会被写入 SLA,那是不是就不用给用户赔偿了呢?其实虽然 bug 本身不会写入 SLA,但是修改bug 是可以写入 SLA 的,换句话说可以允许软件有 bug,但软件服务商必须有能力快速修复 bug。SLA的最后一项赔付标准指没达标怎么办?退多少钱?这是软件服务商对于客户的兜底,一个没有责任的合同是不会有任何效用。 我们再回到文章开头的例子,如果AI给出了错误的答案是否还需要付费?这个问题定义的困难点在于这个错误到底算不算是软件 bug,严格来说并不算 bug,因为目前大模型为基础的 AI 本来就有概率出现答非所问的情况,就像你不可能让一个精神病每次都正常交流。我觉得 AI 软件的 SLA 是不能把这类问题写入的,并且需要明确的告知客户。