我目前的部分产品使用GPT-4提示从纯文本中提取信息。由于大型语言模型的行为本质上是不透明的,失败案例无法预测,我想知道标准的软件工程实践如何转化为生成语言模型(如GPT-4 )?
发布于 2023-04-16 12:05:01
您的主要目标肯定不是测试GPT-4,这是它的供应商OpenAI的工作。你的目标是测试你编写的软件。因此,对于您的自动化测试,在GPT-4周围有一个稳定的接口,并在测试期间使用一个简单的模拟实现,该实现具有确定性。
到目前为止,这是相当标准的:当处理不可靠或不确定的第三方组件时,应该在自动测试期间替换它们。从这个角度来看,像GPT-4这样的模型语言与搜索引擎API、天气预报API或股票市场API这样的组件并没有什么不同。
但是,我可以想象您的系统以一种专门的方式使用GPT-4的场景,您可以期望从某些输入中获得非常具体的、可能是确定性的输出。因此,您希望有测试,以确保这一工作,即使是在GPT-4模型得到更新。
你写的你想
“从纯文本中提取信息”
这是非常模糊的,可能意味着许多不同的事情,对不同的人。以下是几个例子,这可能意味着
对于前四种类型的问题,应该可以建议语言模型以某种规范化的形式生成它的输出(例如,告诉模型省略所有介绍性句子,告诉它使用哪个分隔符,以及您希望输出按字母顺序排列,或者告诉它只回答是/否)。还应该清楚的是,总是以干净的会话开始,没有预先确定的上下文。标准化输出可以相对于预期的输出进行更容易的测试,可能具有一定的耐受性。只有一个正确答案的问题要比有多个正确答案的问题更容易通过测试来解决,或者对于一个人来说,如果答案是正确的就很难决定的问题。
但是,根据某些要求自动测试第五类问题的输出,比如“内容仍然应该是正确的”,可能是不可能的,因为内容正确性不是GPT-4这样的模型所保证的。因此,这种方法是否可行在很大程度上取决于您所想到的特定类型的用例。
我还可以想象像GPT-4这样的组件可以提供一些测试模式或“确定性模式”,如果不是现在,也许在即将发布的版本中。我不知道GPT-4是否提供类似的东西,但它可能值得问供应商或GPT用户的社区。这将使人们能够编写自动化的集成测试或验收测试,而无需进行模拟。
发布于 2023-04-15 20:51:11
正如您所说,因为GPT和类似的技术是不透明的,所以不可能通过分析逻辑来确定应该如何以常规的方式进行测试。
通常,在编写自动测试时,程序员使用对目标逻辑、不同代码路径、任何感知的边缘行为以及类似逻辑和典型故障模式的知识和经验的洞察,来设计执行这些不同路径的测试,检查隐式约束,并检查边缘的行为。
由于GPT没有涉及到程序员指定任何约束,也没有可以有效检查的内部元素,因此实际上不可能进行测试(除了一个包含需要处理的所有可能输入的数据集的穷举测试,并指定其正确的输出,这就违背了使用GPT的目标)。
这就是为什么所有真正的程序员都坐在一旁嘲笑“人工智能”的炒作。甚至像费金一样搓着我们的手,刺激我们对服务的需求,解决别人造成的麻烦!
发布于 2023-05-03 13:39:44
在测试第三方依赖项时,OpenAI驱动的应用程序的测试需求相对相同。
以下是技术总结:
gpt-3.5-turbo-0301验证您的测试。如果将模型的使用升级到较新的版本,则需要更新所有测试数据。pure-functions。意思是,相同的输入总是产生相同的输出。当您使用提示符调用API时,该字符串总是提供相同的完成。通过使用不同的提示来增加覆盖率。您维护上述所有内容,就像通常维护测试一样。这些技术适用于单元测试和集成测试。
这里没有捷径。针对供应商API进行测试需要设置时间,在进行维护和验证对API的模拟是准确的。
这里的要点是:
https://softwareengineering.stackexchange.com/questions/445059
复制相似问题