大多数面向文档的人工智能产品把模型放在文件的路径上:它读取、决定,然后交回一份新文档。语言模型擅长解释,却不擅长保证。SazAI Corpus 把两者分开,本站其余内容都由此而来。

两层

一层理解你想要什么;另一层按格式的规则打开文件

对话层是一个语言模型:它理解请求、选择操作并解释结果。触碰文件的一层是一个确定性引擎:它按文档格式的规则打开文档,改动获得授权的元素,记录改动了哪些,然后写回。它不解释意图。

你的请求用你自己的话,按你说话的方式
一个选定的操作有名称、有日志、附带凭证
写好的文件由引擎写入,绝不由模型写入
模型选择操作;打开并写入文件的是引擎。

因此,被误解的请求仍然只是对话错误:如果模型误解了你,错误的操作会出现在凭证中,有名称、有版本。文件的结构不会被悄悄损坏后交回。

文档来自一份规范

执行的是对已知结构的一次操作

进入时,文档被完整读取并分解为它的元素:文本、形状、表格、单元格、页面、关系、属性。这张地图会被记录下来。一次修改就是针对它执行的一份规范:获得授权的元素被改动,其余保持不变,结果会对照源结构进行检查。更多内容在你的文档中。

模型的文本从哪里进入

在翻译中,边界会被检查,不一致则该步骤失败

当模型自己的文本进入文件时,比如在翻译中,边界是被检查的,而不是被假定的。每段文本都夹在标记之间发出,返回的标记会与发出的标记对照计数。如果模型丢掉了一个、编造了一个,或写出了看起来像标记的东西,该步骤就会失败。

633进去 633,出来 633在一次 45 张幻灯片的翻译测试中:输入 633 个元素,输出 633 个;输入 971 个形状,输出 971 个。引擎触碰了有文本的那 11 张幻灯片,没有触碰其他任何一张。
说明这一点的诚实方式是计数,而不是形容词。

遗漏或编造段落的模型产生的是一个未完成的操作,而不是一份被悄悄损坏的文档。计数核对的是每个段落都已返回,而不是它说了什么:译文是否正确,仍由人来阅读。这一点在各格式中成立到什么程度,见翻译。

语言模型是一种选择,而不是一种依赖

模型改变时,确定性层保持不变

负责对话的模型和负责翻译的模型分别选择,并可通过配置替换;已安装的客户端指向它签约的模型。模型改变时,确定性层不会变动,而主权正建立在它之上。

这种分离带来了什么:接口中的通道,以及能力中的操作。