为不可靠的LLM注入可靠性
大语言模型(LLM)在设计上具有非确定性特征。本文将探讨如何向GenAI工作流中注入一定程度的确定性。
随着生成式AI技术日益融入软件产品和工作流,这些产品和工作流开始越来越像LLM本身:可靠性降低、非确定性增强,偶尔会出现错误。LLM本质上是非确定性的,这意味着相同输入会得到不同响应。如果使用推理模型和AI智能体,早期错误会在后续步骤中不断累积。
LinearB首席运营官Dan Lines指出:“最终,任何概率模型都难免出错。由于缺乏结构化的世界模型,这种不一致性将始终存在于我们正在使用和推理的系统核心中。”
这种非确定性是LLM的特性而非缺陷。我们希望它们成为"梦想机器",创造新颖令人惊喜的内容。但本质上它们是不一致的——相同提示输入十次会得到十个不同响应,每个都带着统计带来的确信度。当这些新内容在事实上错误时,就产生了缺陷。
在企业级软件领域,这是绝对不可接受的。您(以及付费客户)需要可靠的结果,需要优雅处理失败而不重复扣款或提供冲突结果,需要提供可审计的执行轨迹并理解失败原因以避免在更高成本环境中重蹈覆辙。
Jetify首席执行官Daniel Loreto表示:“预测行为变得非常困难。您需要特定工具和流程来确保系统按预期运行。“本文将深入探讨可能为GenAI工作流注入确定性的流程和技术。
净化输入和输出
企业应用的成功与失败建立在信任基础上。对大多数流程而言,这种信任依赖于授权访问、高可用性和幂等性。对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可以接受任何文本提示,它们可能用训练数据中的任何内容回应。当训练数据包含大量开放互联网内容时,这些模型可能说出一些疯狂的内容。
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 AI转型负责人Raj Patel表示:“关于标记化如何影响输出仍然存在疑问。需要正确理解注意力机制。结果的可解释性有一个大问号。目前,大量资源投入到输出测试中。只要您对输出满意,就可以投入生产吗?”
非确定性API的确定性执行
GenAI最有趣的部分之一是您可以获得无限的小惊喜;按下一个按钮,一首关于开发速度的T.S. Eliot风格的新诗就出现了。当这是您想要的时,它会激发喜悦。当不是时,就会有很多咬牙切齿和与领导团队的开会。
大多数企业软件依赖于可靠地完成任务,因此您向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表示:“信任是关键。我认为信任需要多年建立,几秒钟打破,然后需要相当多时间恢复。”