驾驭AI系统的无限影响范围

驾驭AI系统的无限影响范围

系统架构与功能

我们的系统专注于一项核心任务,且执行得非常出色:将自然语言问题转换为API调用。

用户群体主要包括分析师、客户经理和运营主管。他们清楚自己需要哪些数据,但手动收集意味着需要从四个仪表盘、两个商业智能工具以及一个Salesforce报表构建器中整合信息。借助我们的系统,用户只需用日常英语输入请求。例如,”编制2026年1月至3月东北地区按城市划分的销售量报告”这样的请求,会被系统翻译为可执行的API调用:

json

{

“description”: “用户请求指定日期范围内的销售量,以下是获取响应的API调用”,

“api_call”: “/api/sales_volume”,

“post_body”: {

“start_date”: “2026-01-01”,

“end_date”: “2026-03-31”,

“region”: “northeast”

}

}

管道的其余部分采用传统工程方法实现。系统将调用分发至合适的后端——我们已与内部报表门户、Salesforce以及多个自研服务完成集成——应用大语言模型(LLM)生成的JSON查询来过滤和格式化响应,并通过电子邮件、Google Drive文档或在浏览器中渲染为图表的方式交付结果。

到2025年年中,系统每月生成数百份报告。这些报告被管理层和分析师使用,并分发给外部利益相关者。它已成为大多数团队获取临时数据的默认方式。

模型升级与系统崩溃

智能体与系统之间的协议是一种结构化的JSON对象,如上例所述。我们于2025年初基于Claude Sonnet 3.5构建了该系统,随后无 incident地升级至3.7和4.0版本。当Sonnet 4.5发布时,我们已对大语言模型在解决我们认定的简单问题上的稳定性和可预测性产生了自满情绪。模型升级已成为常规操作,就像更新一个行为良好的库的次版本号一样。

随后我们部署了4.5版本。对于相当一部分请求,模型开始将post_body的内容折叠到描述字段中,导致两种故障模式。

  • 过滤器参数丢失:系统读取post_body作为请求负载的真相来源,但该字段返回为空。API调用没有包含日期范围或区域过滤器。根据调用的特定API,后端要么返回所有时间或所有区域的销售量,要么返回500错误。
  • 智能体开始提问:这是新出现的问题。早期版本总是对模糊请求采取尽力而为的方法并返回结构化对象。而更加谨慎的Sonnet 4.5有时会在响应中提出问题。我们的系统没有处理这种情况的路径。它建立在每次模型调用都会生成API调用的假设上,没有人工干预组件,也没有保存部分完成请求的状态。这导致下游系统以多种方式出现故障。

我们回滚到4.0版本,这比预期的要困难:在4.0和4.5版本部署之间,我们的团队添加了新的API集成,所有这些集成都是针对4.5版本验证的。恢复模型意味着在时间压力下重新验证每一个与4.0版本的兼容性。

传统工程方法的局限性

软件工程依赖于限制变更影响范围的能力。当升级驱动程序或库时,你会阅读发布说明以确定是否存在破坏性变更。单元测试限制了可能发生的变化。你可以利用以下特性:被变更的系统足够确定,其行为可以被预测,或者至少足够密集采样以给你信心。影响范围在构建时就被限定。

基于大语言模型的系统破坏了这一假设。产生输出的组件不受你的控制。你无法比较从4.0到4.5的模型版本升级。这是对你系统所依赖功能的全面替换。

这就是我们所说的无限影响范围:一个变更的下游效应无法预先枚举,因为输入空间(自然语言)和故障模式(模型可能做的任何不同的事情)都是无限的。

故障解剖

事后分析显示,我们的提示词一直存在规格不明确的问题。我们告诉模型返回一个包含三个字段的JSON对象,我们描述了每个字段的用途,但没有明确说明描述必须是自然语言字符串,且不能包含其他序列化表示的字段。

模型的早期版本从上下文中推断出这一约束。Sonnet 4.5显然在格式化选择上更”乐于助人”,决定在描述中询问澄清或提供请求体会使响应更有用。从模型的角度来看,这是对模糊指令的合理解释。然而,这违反了我们系统构建的假设。

bug不在模型中,而在于我们的假设——模型会像以前一样继续填补我们的规格空白。三次成功的升级让我们相信这些空白是安全的。

结构化输出模式和工具使用API本可以在架构层面捕获这个特定故障。由于本文范围之外的工程原因,我们没有使用它们。但架构仅约束语法,而非语义。架构无法指定澄清问题不应该出现在没有澄清路径的系统中,或者日期范围不应静默默认为所有时间。架构只解决了问题中较容易的部分。

评估优先架构

弥合这一差距的学科是将评估套件——而非提示词——视为系统的正式规格。提示词是规格的实现,模型是解释器,而评估才是规格本身,任何模型或提示词变更只有在通过评估时才有效。

在实践中,评估是一个三元组:输入、输出必须满足的属性以及评分函数。对于我们的系统,本可以捕获4.5版本回归的评估大致如下:

python

def test_description_contains_no_serialized_payload(response):

desc = response[“description”].lower()

forbidden = [“curl”, “post_body”, “{“, “http://”, “https://”]

assert not any(token in desc for token in forbidden),

“描述字段不应包含序列化负载”

 


关注微信号:智享开源 ,及时了解更新信息。

原文链接:https://venturebeat.com/orchestration/when-claude-changed-everything-changed-managing-ai-blast-radius-in-production

评论列表
 
 
发表评论
😀 😂 😃 😄 😅 😆 😉 😊 😋 😎 😍 😘 🥰 😜 😝 🤗 🤔 😭 😤 👍

为你推荐
Ta的个人站点

Mark Do发布文章1306篇


关注微信

分类