为不可靠的大语言模型注入可靠性:企业级GenAI工作流确定性实践

本文探讨如何通过输入输出过滤、可观测性增强和持久化执行等技术手段,在保持大语言模型创造性的同时提升企业级生成式AI工作流的确定性与可靠性,降低幻觉和错误传播风险。

为不可靠的大语言模型注入可靠性

大语言模型(LLM)在设计上具有非确定性特征。本文将介绍如何向GenAI工作流中注入一定程度的确定性。

图片来源:Alexandra Francis

随着生成式AI技术日益融入软件产品和工作流,这些产品和工作流开始越来越像LLM本身:可靠性降低、确定性减弱,偶尔会出现错误。LLM本质上是非确定性的,这意味着相同的输入会产生不同的响应。如果使用推理模型和AI智能体,早期错误在后续步骤中被使用时,这些错误可能会叠加放大。

LinearB首席运营官Dan Lines指出:“最终,任何概率模型都难免出错。由于缺乏结构化的世界模型,这种不一致性将始终存在于我们使用和推理的众多系统核心中。”

这些系统的非确定性是LLM的特性而非缺陷。我们希望它们成为"造梦机器",创造新颖令人惊奇的内容。本质上它们就是不一致的——如果你重复输入相同提示十次,会得到十个不同的响应,每个都带着统计学赋予的确定性和自信。当这些新内容在事实上错误时,就产生了缺陷。由于大多数LLM的工作方式,很难理解为什么LLM会出错并解决问题。

在企业级软件领域,这是绝对不能接受的。您(以及付费客户)需要可靠的结果。需要优雅地处理故障,避免重复扣款或提供矛盾结果。需要提供可审计的执行轨迹,理解失败原因以防止在更高成本环境中重蹈覆辙。

Jetify首席执行官Daniel Loreto表示:“预测行为变得非常困难。需要特定工具和流程来确保系统按预期方式运行。“本文将探讨一些可能为GenAI工作流注入确定性的流程和技术。文中的引述来自Stack Overflow播客的对话;查看完整剧集以获取更多相关信息。

输入输出净化

企业应用的成功与失败建立在信任基础上。对于大多数流程,这种信任依赖于授权访问、高可用性和幂等性。对于GenAI流程,还有一个额外问题:准确性。

Sonar首席执行官Tariq Shaukat表示:“我听到的很多成功案例都是那些停机几分钟或发生小安全漏洞时负面影响相对较小的应用。摩根大通AI团队刚刚发布了关于幻觉在银行代码中重要性的研究,显然这在银行代码中比在我孩子的网络应用中重要得多。”

应对幻觉的典型方法是通过检索增强生成(RAG)将响应基于事实信息。但即使RAG系统也容易产生幻觉。GenAI平台Vectara首席执行官Amr Awadallah指出:“即使对LLM进行 grounding,每20个输出token中可能就有1个完全错误、完全离题或不真实。谷歌的Gemini 2.0打破了新基准,幻觉率约为0.8%、0.9%,这很惊人。但我认为我们将饱和在0.5%左右,无法突破这个界限。在很多很多领域,0.5%是不可接受的。”

需要在提示和响应上设置额外的防护措施。由于这些LLM可以接受任何文本提示,它们可能用训练数据中的任何内容回应。当训练数据包含大量开放互联网内容时,这些模型可能会说出一些疯狂的内容。可以尝试通过微调消除有害响应或在响应中去除个人身份信息(PII),但最终总会有人抛出曲线球。

IBM watsonx.ai产品负责人Maryam Ashoori表示:“需要保护模型免受越狱等行为影响。在数据传递给LLM之前,确保在输入方面设置防护措施。我们在输出端也做同样的事情:过滤仇恨、辱骂性和亵渎性语言,过滤所有PII,过滤越狱尝试。但不能过滤所有内容,否则模型就没什么可输出的了。”

提示端的过滤是防御;输出端的过滤是预防事故。提示可能不是恶意的,但数据可能仍然有害。Solo.io产品负责人Keith Babo表示:“从LLM返回时,需要进行数据过滤、数据丢失防护和数据掩码控制。如果我对LLM说’关于Ben的三个有趣事实是什么’,它可能会用你的社会保险号作为其中一个事实回应,因为它试图提供帮助。所以我并不是故意试图钓鱼获取你的社会保险号,但这可能就这样发生了。”

随着智能体的引入,情况变得更糟。智能体可以使用工具,因此如果智能体产生幻觉并使用工具,可能会采取影响您的实际行动。Salesforce开发者关系高级副总裁Christophe Coenraets表示:“我们都听说过智能体失控并开始做不该做的事情的故事。防护措施确保智能体保持在正轨上,并定义智能体可以做什么的参数。最初可以很基本,比如’回答这类问题,但不回答那些’。这很基本,但可以在提供这些防护措施方面做得很深入。”

在某种程度上,智能体展示了如何让LLM减少非确定性:不要让它们做所有事情。给它们访问工具的权限——例如API或SMTP服务器——让它们使用它。Orkes首席执行官Jeu George问道:“如何让智能体极其可靠?有些部分是非常确定性的。发送电子邮件、发送通知,对吧?有些事情LLM非常擅长。它让您能够挑选想要使用的内容。”

但最终总会有东西绕过您。希望这发生在测试中。无论哪种情况,都需要查看出了什么问题。如果可以的话,需要观察能力。

新机器的可观测性

在播客中,我们讨论了很多关于可观测性和监控的内容,但这涉及传统计算的东西:日志、指标、堆栈跟踪等。您设置断点或println语句,通过聚合和采样,可以了解系统的工作方式(或不工作方式)。在LLM中,这有点更晦涩。

Alembic首席技术官Abby Kearns表示:“我在研究这个时想,‘给我解释一下’。我已经习惯了拥有所有工具来做CI/CD和自动化之类的事情。令人困惑的是,我们必须实时为机器工作负载重新发明很多这些工具。”

除了标准软件指标外,很难获得显示实时等效性能的指标。可以获得幻觉率、事实一致性、偏见和毒性/不当内容等聚合值。可以在Hugging Face上找到许多这些指标的排行榜。大多数这些都在多个整体基准上进行评估,但也有一些专门的排行榜用于您不希望排名高的内容:幻觉和毒性。

这些指标在实时情况下对您没什么帮助。仍然依赖概率来防止GenAI应用说些令人尴尬或可能引发法律行动的内容。这就是LLM版本日志记录发挥作用的地方。Loreto说:“需要一个记录系统,可以查看任何会话中最终用户输入的确切内容、系统内部创建的确切提示、LLM对该提示的确切响应等等,对于系统或工作流的每个步骤都如此,以便养成真正查看流动数据和所采取步骤的习惯。”

还可以使用其他LLM评估输出来生成上述指标——一种"LLM作为裁判"的方法。这是最受欢迎的排行榜之一的工作方式。可能感觉有点像学生批改自己的试卷,但通过使用多个不同模型,可以确保更可靠的输出。Alexi首席执行官Mark Doble表示:“如果把一个聪明人单独锁在房间里和一些书在一起,他们不会通过思考达到更高智力水平。把五个人放在一个房间里,他们辩论、讨论想法、互相纠正。现在把这个数字增加到一千——一万。无论他们可以访问的数据量有多少固定限制,他们很可能达到更高智力水平。我认为这正是多个智能体交互时正在发生的事情。”

智能体和思维链模型可以使LLM的内部工作更加可见,但来自幻觉和其他错误的错误可能会叠加。虽然LLM读心术有一些进展——Anthropic发表了相关研究——但这个过程仍然不透明。虽然并非每个GenAI过程都能窥探LLM的思想,但有一些方法可以使思维过程在输出中更加可见。Ashoori说:“我们讨论的一种方法是推理链。将提示分解为更小的部分并解决它们。当我们逐步分解时,您可以将每个步骤视为一个节点,因此可以使用LLM作为裁判来评估每个节点的效率。”

但从根本上说,LLM可观测性远不如其 umbrella 领域成熟。思维链方法本质上做的是改进LLM日志记录。但有许多因素以不太理解的方式影响输出响应。Holistic AI人工智能转型负责人Raj Patel表示:“仍然存在关于标记化如何影响输出的问题。需要正确理解注意力机制。结果的可解释性存在很大问号。目前,很多资源被投入到输出测试中。只要对输出满意,就可以投入生产吗?”

非确定性API的确定性执行

GenAI最有趣的部分之一是您可以获得无限的小惊喜;按下一个按钮,一首关于开发速度的T.S.艾略特风格的新诗就出现了。当这是您想要的时,它会带来喜悦。当不是时,就会有很多咬牙切齿和与领导团队的紧急会议。大多数企业软件依赖于可靠地完成任务,因此向AI工作流中添加的确定性越多越好。

GenAI工作流越来越依赖API和外部服务,这些本身可能不可靠。当工作流中途失败时,可能意味着重新运行提示并为该工作流获得完全不同的响应。DBOS首席执行官Jeremy Edberg表示:“我们一直都有停机的成本,对吧?但现在,这变得更加重要,因为AI是非确定性的。它本质上是不可靠的,因为您无法两次获得相同的答案。有时您得不到答案,或者在中途中断——AI本身可能出很多问题。对于AI管道,我们需要清理大量数据并将其输入。”

这些工作流中的故障可能比标准面向服务架构中的故障成本更高。GenAI API调用可能按发送和接收的token收费,因此故障会浪费金钱。智能体和思维链过程可以将网络数据用于推理时处理。这里的故障会支付费用但失去产品。DBOS联合创始人Qian Li表示:“最大的痛点之一是这些LLM可能不稳定。它们可能返回失败,但也会对您进行速率限制。LLM很昂贵,大多数API会说,每分钟不要调用超过五次左右。”

可以使用持久化执行技术在任何工作流中保存进度。正如Qian Li所说:“这是对应用程序的检查点设置。“当您的Gen AI应用程序或智能体处理提示、推理数据或调用工具时,持久化执行工具存储结果。Temporal联合创始人兼首席技术官Maxim Fateev表示:“如果调用完成并被记录,它将永远不会重复该调用。无论是AI还是其他什么,都不重要。”

其工作方式类似于视频游戏中的自动保存。Li说:“我们使用数据库存储您的执行状态,这样它也结合了幂等性。每次启动工作流时,我们存储一条数据库记录,说明该工作流已启动。然后在执行每个步骤之前,我们从数据库检查该步骤是否之前执行过。如果之前执行过,我们将跳过该步骤,然后只使用记录的输出。通过查询数据库并将状态检查点到数据库,我们将能够保证任何调用恰好一次,或者至少一次加上幂等性就是恰好一次。”

使GenAI工作流更加确定性的另一种方法是不在所有地方使用LLM。随着LLM成为新热点,有些人可能在不需要的地方使用它们。每个人都加入智能体潮流的原因之一是它明确允许非确定性工具使用作为GenAI驱动功能的一部分。George说:“当人们构建智能体时,有些部分是非常确定性的,对吧?发送电子邮件、发送通知,这是整个智能流的一部分。如果您已经有API,就不需要要求智能体做这个。”

可靠的梦想

在每个人都将GenAI构建到软件中的世界里,您可以调整一些标准流程,使LLM的非确定性更加可靠:净化输入和输出,尽可能多地观察过程,并确保流程运行一次且仅一次。GenAI系统可能非常强大,但它们引入了很多复杂性和风险。

对于个人程序,这种非确定性可以被忽略。对于组织支付大量资金的企业软件,则不然。最终,您的软件在声称的功能上表现如何是您声誉的关键。当潜在买家比较具有类似功能的产品时,声誉是决胜因素。Patel说:“信任是关键。我认为信任需要多年建立,几秒钟打破,然后需要相当长时间恢复。”

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计