绝区捌--将GPT幻觉的发生率从20%以上降低到2%以下

总结:我们没有使用微调,而是结合使用提示链和预处理/后处理来将幻觉发生率降低一个数量级,但这确实需要对 OpenAI 进行 3-4 倍的调用。还有很大的改进空间!

使用 GPT 等大型语言模型面临的最大挑战之一是它们倾向于捏造信息。

这对于生成用于创意写作或头脑风暴会议的文本等用例来说可能没什么问题,但当输出用于客户支持等商业应用时,这可能是灾难性的。幻觉或虚假信息的产生在这些情况下尤其有害,并可能导致严重后果。

即使一次虚假信息的产生也可能损害公司的声誉、导致法律责任并损害客户的利益。

有几种方法可以解决这一挑战。

一种常用方法是使用微调来提高模型在特定领域数据集上的准确性。微调的问题在于,当你拥有多租户 SaaS 产品时,收集特定领域的数据集很困难,因为每个客户的用例和用户角色都略有不同。所以我们必须找到其他方法来解决这个问题。

以下是我们目前所做的工作

提示词链接(Prompt Chaining)

我们尝试的第一件事是使用提示链技术将复杂的提示分解成几个部分,并让 GPT 在每一步“检查其答案”。

例如,我们不是使用用户输入和注入的内容单独调用 GPT,而是首先要求 GPT 评估它是否可以回答问题并证明其响应的合理性。我们目前有 3 个步骤——预处理步骤、评估步骤和响应步骤。

以下是我们在评估步骤中使用的提示示例。它只是要求 GPT 回答它是否可以根据提供的内容回答问题。"""<|im_start|>system You found the following content by searching through documentation. Use only this content to construct your response. {content}<|im_end|>
<|im_start|>user First, determine if the content found is sufficient to resolve the issue. Second, respond with a JSON in the format:
{
"content_contains_answer": boolean, // true or false. Whether the information in the content is sufficient to resolve the issue.
"justification": string // Why you believe the content you found is or is not sufficient to resolve the issue.
}
The inquiry: {inquiry}<|im_end|><|im_start|>assistant {
"content_contains_answer":<|im_end|>"""

请注意,我们要求 GPT 以 JSON 格式返回答案,并使用预期结构为助手的答案提供种子。这确保我们能够解析响应,并且几乎 100% 的时间都有效。

我们还注意到,content_contains_answer即使我们不使用它做任何事情,只需要求模型提供理由就可以提高其预测的准确性。你只需要叫出 GPT 的胡说八道!

这种方法将幻觉的发生率从20%降低到了5%。


后期处理

接下来帮助我们将效率从 5% 降至 2% 的是对 GPT 的输出进行后处理。这有几个步骤:

  1. 检查 token 的 e^(logprob) 是否true低于 90%。如果是,我们重新运行评估提示并强制content_contains_answer为假。我们发现这可以减少误报,而不会对误报产生太大影响。
  2. 如果content_contains_answer为假,我们将使用返回的理由并再次调用 GPT API 来重新措辞理由以将其定位到用户。这减少了我们最终输出出现奇怪措辞(如“用户应该……”)的可能性。这不完全是幻觉,也不是最佳体验。

预处理

这是我们最近添加的步骤,使我们的幻觉率低于 2%。我们做的第一件事是让 GPT 对用户查询的意图进行分类。根据意图,我们将在评估和响应步骤中使用不同的提示。

我们还在尝试对用户输入进行额外的预处理,使其更有可能在搜索步骤中找到相关结果。这可以通过从用户的查询中提取实体并在稀疏嵌入上以更高的权重运行向量搜索来实现。这有助于解决技术性问题并涉及特定标记组合(如) ,因为对于这些情况,关键字搜索比语义搜索更有用。这一切都是通过 Pinecone 的新混合搜索功能keras.save_model实现的。

最后的想法

最后一条可能有用的提示是将内容包装在 <Content></Content> 标签中。这有助于 GPT 理解不同来源之间的差异,甚至返回稍后可以str.replace()使用链接的占位符(例如 Content1)。您还可以对注入提示的任何其他数据执行此操作。

总体而言,我们发现,结合使用提示链、预处理和后处理可以很好地降低幻觉风险并提高 GPT 的准确性。缺点是它需要更多的 API 调用,但随着最近价格下降 90%,这现在非常可行。


欢迎你分享你的作品到我们的平台上:www.shxcj.com 或者 www.2img.ai 让更多的人看到你的才华。

创作不易,觉得不错的话,点个赞吧!!!



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/43599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

from functools import partial有什么用

functools.partial 是 Python 的 functools 模块中的一个非常有用的函数&#xff0c;它用于部分应用一个函数。这意味着你可以创建一个新的函数&#xff0c;这个新函数是原函数的一个子集&#xff0c;即预先填充了原函数的一些参数&#xff0c;并返回这个新函数。这样&#xff…

使用Python绘制QQ图并分析数据

使用Python绘制QQ图并分析数据 在这篇博客中&#xff0c;我们将探讨如何使用Python中的pandas库和matplotlib库来绘制QQ图&#xff08;Quantile-Quantile Plot&#xff09;&#xff0c;并分析数据文件中的内容。QQ图是一种常用的统计图表&#xff0c;用于检查一组数据是否服从…

VUE+Spring Flux实现SSE长连接

VUE代码 // 初始化EventSourceinitEventSource(url) {const token getAccessToken();const eventSource new EventSourcePolyfill(url, {headers: {Authorization: Bearer ${token},tenant-id: getTenantId(),}});eventSource.onerror (e) > {console.log("SSE连接错…

C# 下sendmessage和postmessage的区别详解与示例

文章目录 1、SendMessage2、PostMessage3、两者的区别&#xff1a; 总结 在C#中&#xff0c;SendMessage和PostMessage是两个用于Windows编程的API&#xff0c;它们用于向窗口发送消息。这两个方法都位于System.Windows.Forms命名空间中&#xff0c;通常用于自动化Windows应用程…

GitHub:现代软件开发的协作平台

引言 在现代软件开发中&#xff0c;协作工具的选择至关重要。GitHub作为全球最大的代码托管平台&#xff0c;已经成为开发者们不可或缺的工具。自2008年成立以来&#xff0c;GitHub不仅改变了代码托管和协作的方式&#xff0c;还在开源软件的发展中扮演了重要角色。本文将详细…

科普文:分布式系统的架构设计模式

一、分布式架构基本概念 分布式架构是一种计算机系统设计方法&#xff0c;它将一个复杂的系统划分为多个自治的组件或节点&#xff0c;并通过网络进行通信和协作。每个组件或节点在功能上可以相互独立&#xff0c;但又能够通过消息传递或共享数据来实现协同工作。分布式架构主要…

值传递与引用传递:深入理解Java中的变量赋值和参数传递机制

在Java中&#xff0c;理解值传递&#xff08;值拷贝&#xff09;与引用传递&#xff08;地址拷贝&#xff09;之间的区别对于正确处理数据结构和对象至关重要。本文将通过示例代码深入探讨这两种机制&#xff0c;并解释它们如何影响程序的行为。 值传递&#xff08;值拷贝&…

获取脚本执行时间

在运行一些脚本时&#xff0c;时间会过期&#xff0c;这时就需要重新更新token&#xff0c;下面做了一个demo判断时间是否过期 import datetime import time starttimedatetime.datetime.now() # 时间进行格式化 starttimestarttime.strftime("%Y-%m-%d %H:%M:%S") …

高效利用iCloud指南

高效利用 iCloud 需要了解其各种功能和最佳实践&#xff0c;以充分发挥其云存储和同步能力。以下是详细的指南&#xff1a; ### 1. 设置和管理 iCloud 存储 **初始设置** - 确保在所有设备&#xff08;iPhone、iPad、Mac&#xff09;上使用同一 Apple ID 登录 iCloud。 - 在设…

iPaaS丨企业应用及数据集成的重要性和挑战

在激烈的市场竞争中&#xff0c;企业服务总线和数据总线扮演着企业神经网络的角色&#xff0c;它们将不同的业务部门、系统以及数据紧密相连&#xff0c;保障信息流通无阻&#xff0c;实现资源的高效分配。这样的集成不仅提高了企业的运营效率&#xff0c;还增强了企业的适应性…

虚拟机因断电进入./#状态解决办法

现象&#xff1a; 解决&#xff1a;先查看错误日志&#xff1a;journalctl -p err -b查看自己虚拟机中标黄部分的名字 之后运行&#xff1a;xfs_repair -v -L /dev/sda #这里sda用你自己标黄的 最后重启 reboot 即可。

使用Dockerfile和ENTRYPOINT运行Python 3脚本

在Docker中运行Python 3脚本是一种常见的部署应用程序的方式。通过使用Dockerfile&#xff0c;我们可以定义一个包含Python环境和应用程序的Docker镜像。在Dockerfile中&#xff0c;我们可以使用ENTRYPOINT指令来指定当容器启动时应该运行的命令。 **一、创建Dockerfile** 首先…

在Linux上运行macOS:深度解析OSX-KVM项目

在Linux上运行macOS&#xff1a;深度解析OSX-KVM项目 在现代开发和测试环境中&#xff0c;能够在不同操作系统之间无缝切换是至关重要的。对于开发者而言&#xff0c;如何在Linux系统上运行macOS一直是一个挑战。然而&#xff0c;OSX-KVM项目为我们提供了一种高效的解决方案&a…

R包:ggsci期刊配色

介绍 不同期刊配色大多数时候不一样&#xff0c;为了更好符合期刊图片颜色的配色&#xff0c;有人开发了ggsci这个R包。它提供以下函数&#xff1a; scale_color_palname() scale_fill_palname() 对应不同期刊的color和fill函数。 导入数据R包 library("ggsci")…

如何一起解压缩多个小压缩包unzip multiprt zip file

这个问题有两种解读&#xff0c;一种是需要解压这个文件夹里面的所有zip文件。另一个是压缩文件时候存成了多个part&#xff0c;需要一起解压缩。 环境 Ubuntu22.04 解决方法 解压当前文件夹所有zip文件 unzip your/folder/*.zip解压同一压缩文件的多个part sudo apt ins…

SpringBoot使用@RestController处理GET和POST请求

在Spring MVC中&#xff0c;RestController注解的控制器类可以处理多种HTTP请求方法&#xff0c;包括GET和POST。这些请求方法通过特定的注解来映射&#xff0c;比如GetMapping用于GET请求&#xff0c;PostMapping用于POST请求。这些注解是RequestMapping的特定化版本&#xff…

2024年全面导入APS系统:提升工厂生产效率的策略

在快速变化的市场环境中&#xff0c;急单、插单、订单设计变更、订单交期变更、订单取消、供应链移动等问题已经是制造业时时刻刻都在面对的问题&#xff0c;在订单量下降的市场环境下&#xff0c;企业本身的业务工作反而越来越忙碌。在此背景下&#xff0c;当今制造业企业亟需…

JavaScript高级程序设计(第四版)--学习记录之函数(下)

函数内部 ES5中,函数内部存在两个特殊的对象:arguments和this。ES6新增了new.target属性。 arguments arguments对象其实还有一个callee属性,是一个指向arguments对象所在函数的指针。 function fb(num){ if(num<=1){ return 1; }else{ return num * fb(num-1); } }/*这个…

【pytorch24】Visdom可视化

TensorboardX pytorch有一个工具借鉴了tensorboard pip install tensorboardX 有查看变量的数值、监听曲线等功能 如何使用 新建SummaryWriter()实例 要把监听的数据&#xff0c;比如说要监听dummy_s1[0]&#xff08;y 坐标&#xff09;存放到data/scalar1中&#xff0c;…

ASPICE是汽车软件开发中的质量保证流程

复杂的汽车系统对软件的质量和可靠性提出了极高的要求。为了确保汽车软件的高质量和可靠性&#xff0c;ASPICE&#xff08;Automotive SPICE&#xff0c;汽车软件过程改进和能力确定&#xff09;流程应运而生。本文将对ASPICE流程进行详细介绍。 一、ASPICE概述 ASPICE是汽车行…