自微处理器和汇编语言诞生以来,我们所构建和使用的 99% 的应用程序都属于确定性应用程序。
确定性应用程序是指对于给定输入,输出总是相同的程序。
然而,随着生成式 AI 的黎明,我们将构建和消费的大多数应用程序将属于概率性应用程序,这将带来根本性的转变。
概率性应用程序是指对于给定输入,我们可能获得大致相似的输出,但不一定是给定输入的精确输出。
从确定性到预测性应用转变时的范式转变
| 确定性应用 | 概率性应用 |
|---|---|
| 精度聚焦: 系统的每个部分都按预期精确工作。 | 拥抱变异性: 接受并为一系列可能的结果做计划。 |
| 错误处理: 考虑所有可能的错误并以可预测的方式处理它们。 | 统计推理: 使用概率和统计来理解和引导系统的行为。 |
| 用户期望: 用户期望 100% 的准确性和可靠性。 | 用户期望: 用户应对变异性有所准备,并理解应用程序会随时间学习和改进。 |
拥抱概率性应用的不确定性
概率性应用结合随机性和概率论来预测结果。它们在相同条件下可能产生不同的结果,本质上具有不确定性。这些应用在复杂系统中已经相当普遍,如天气预报模型、推荐引擎、数据科学、预测应用以及现在的生成式 AI 应用。然而,直到现在(即生成式 AI 应用的时代),我们大多数人并没有实际构建或使用它们。
我们在使用 GenAI 构建概率性应用时遇到的一些 immediate 挑战:
重新思考我们对 UI/UX 的方法
- UI/UX 设计师将需要重新思考生成式 AI 应用的界面和导航流程。 仅仅在现有应用的右侧或左侧贴一个聊天界面是不够的。 用户将被巧妙地提示提供正确类型的输入提示,需要实施输入护栏以确保用户不会尝试提出无关或有害的问题。
设计师需要想出创造性的方法将基于人类反馈的强化学习 (RLHF) 融入用户交互,以便优化 LLM 的输出。
随着我们进入多模态应用,看看如何确保我们的 GenAI 应用符合无障碍指南将会很有趣。
重新思考我们的测试方法
到目前为止,我们的整个测试方法是提供系统一组给定的输入,并确保我们有一致的输出。我们编写测试用例并使用 Selenium 等自动化工具来运行针对确定性输出的自动化测试。
这种方法不适用于测试 GenAI 应用程序。我们需要一套新的工具或新的方法来验证涉及一定量方差的输出。
一种常见的方法是检查输出的不同模式和元数据,以确认输出具有更高的概率或准确度分数。
另一种方法是构建一组 QE 代理或机器人来执行测试步骤,然后使用推理来验证输出是否感觉准确。我们可能需要确保这些代理使用不同的方法和视角,类似于多方面的审查系统。这可能涉及引入不同的测试范式并在测试程序中引入随机元素,以模拟现实世界的不可预测性。
此外,集成一个反馈循环,其中输出被持续重新评估,测试标准根据先前结果动态调整,可能至关重要。这种自适应测试策略可以帮助应对 GenAI 输出的不断演变的特性,确保我们的测试机制保持健壮和相关性。
此外,与领域专家合作以了解输出细微差别,并利用他们的洞察来 informing 我们的测试指标,可以提供额外的验证层。这种人在回路的方法确保 AI 的输出不仅在技术上正确,而且在语境上适当且有意义。
总之,测试 GenAI 应用程序需要从传统方法进行范式转变。我们必须拥抱复杂性、适应性以及自动化和人为驱动过程的结合,以确保 GenAI 输出在真实世界场景中的可靠性和相关性。