黑客GPT思维:我们将幻觉从20%减少到2%的震撼数字

ChatGPT中文站

简介

巧妙的技术大幅减少了我们的GPT幻觉率

在像GPT这样的大型语言模型中导航可能是一段令人兴奋而又危险的旅程。虽然这些模型非常灵活多样,但它们经常会在生成虚构信息时犯错,也就是所谓的“幻觉”。虽然这在创意写作中可能是一种迷人的奇怪现象,但在商业环境中却是一场灾难,尤其是在像客户支持这样的领域。信息输出中一次错误的失误可能会损害品牌声誉,引发法律问题,并危及客户信任。

传统的智慧:微调

在提高模型准确性方面,常用的解决方案往往是微调,即在与您业务相关的特定数据集上训练模型。然而,当您正在运行一个多租户SaaS平台时,这种方法也带来了一系列困难。每个客户都带来了自己独特的使用案例和用户角色,几乎不可能收集到适用于所有领域的通用数据集。所以,我们不得不跳出传统思维,并且做出了一些惊人的发现!

我们的创新方法:快速链接和更多

不再走一条洋溢着传统、细致调整的老路,我们采用了创新策略的混合物——快速链接结合预处理和后处理方法。这种独特的融合不仅大幅降低了幻觉率,而且无需专门的数据集。

分解它:提示链接的艺术

我们的第一个突破是当我们意识到我们可以把复杂的提示分解成小块,并在每个关节都让GPT双重检查其输出时。

例如,我们不再将所有赌注都放在一个带有用户输入和额外数据的单个GPT呼叫上,而是将其分解为三个步骤:预处理、评估和响应。

在评估阶段,我们会向GPT提出一个元问题,基本上是询问它在手头数据的基础上评估自己回答主要问题的能力。这个自我评估步骤在过滤出不可靠的回答中证明了无价的作用。

最关键的一步:精心的预处理以实现低于2%的产生幻觉率。

我们在降低幻觉率方面取得成功的关键是增加了预处理步骤。我们不是立即开始评估和回应,而是首先使用GPT对用户的查询进行了本质或意图的分类。这种意图驱动的方法使我们能够更有效地定制后续的评估和回应提示。

意图分类和更多内容

为了更好地了解用户的需求,我们在预处理策略中采用了意图分类。通过确定用户的目标,我们能够选择最合适的提示来进行后续阶段的处理,从而提高最终输出的准确性。

实体提取和向量数据库搜索的强大功能

我们并未就此止步。我们通过使用实体提取技术进一步优化了用户输入。通过识别查询中的关键词,我们可以进行更有针对性的向量数据库搜索。无论你选择像Milvus、Pinecone这样的众所周知的平台,还是更喜欢像Chroba DB这样的本地选项,目标都是更加注重稀疏嵌入。这在涉及特定令牌组合的技术查询中特别有用,例如`keras.save_model`,在这种情况下,关键字搜索通常比语义搜索更有效。

当向量数据库不是必须的时候

值得注意的是,使用向量数据库并不是一种适用于所有情况的解决方案。有时候内容可以直接通过提示进行提供,或者从外部来源获取。因此,根据您具体的使用情况,向量数据库可能并不总是必需的,但在必要时它可以增加另一层精准度。

这是我在评估步骤中使用的提示示例。它简单地要求GPT根据提供的内容回答是否能够回答一个问题。

prompt = f"""System: You found the following content by searching through documentation. Use only this content to construct your response: {content}

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.
"content_answer": "string" // Your answer here if the content found is sufficient to answer the inquiry.

}}

The inquiry: {inquiry}

Assistant:
{{
"content_contains_answer": "Your answer here (true or false)",
"justification": "Your justification here"
"content_answer": "Your answer here "

}}

快速工程的精细艺术:确保准确性和责任。

我们采用的一个细微差别是指示GPT以JSON格式传递其回复。这看起来可能微不足道,但它在确保回复可以高效解析方面起到了关键作用。让我告诉你,这种方法是可靠的,几乎100%的时间都能正常工作。

另一个有趣的观察是要求解释的力量。仅仅要求模型解释其推理过程似乎能够提高其准确性,以确定内容是否包含正确答案。就像是当你要求解释时,模型变得更加负责任了 —— 实际上,有时你只需指出GPT的不准确之处!

这种多层次的方法成功地将幻觉发生率从令人担忧的20%降低到更加可接受的5%。

掌握提示工程的指南

如果你觉得通过降低GPT幻觉率的这段旅程很有趣,那你肯定想深入了解。下面是我关于提示工程的书籍的链接,这是一本全面指南,通过它你可以了解如何与GPT的交互进行细化调整以获得最佳结果。

实践演示:通过LLMs将理论付诸实践

现在,让我们通过一个具体的例子将这些抽象的概念带入现实世界。下面是一个样例互动,我们利用提供的内容、提示和询问从一个大型语言模型(LLM)中获取回应。这将使您对所有这些复杂的部分如何在实际情境中相互关联有一个生动的感觉。

content = """The Cricket World Cup is the premier international 
championship in men's One Day International (ODI) cricket.
Organized by the International Cricket Council (ICC), the tournament
was first held in 1975 and has gained immense popularity over the years.
The event typically occurs every four years and is one of the
most-watched sporting events globally. Featuring teams from around
the world, the competition aims to crown the best cricketing nation.
The matches are played in a 50-over per side format, with teams competing
in a round-robin stage followed by semi-finals and a grand finale.
Australia currently holds the record for the most wins, with a total
of five titles. The Cricket World Cup not only serves as a platform for
countries to showcase their talent but also plays a significant role in
promoting the sport worldwide."""

inquiry = "what is python?"

prompt = f"""System: You found the following content by searching through
documentation. Use only this content to construct your response: {content}

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.
"content_answer": "string" // Your answer here if the content found is sufficient to answer the inquiry.

}}

The inquiry: {inquiry}

Assistant:
{{
"content_contains_answer": "Your answer here (true or false)",
"justification": "Your justification here"
"content_answer": "Your answer here "

}}

"""
system_content="you are a helpful assistant"

在使用我们精心设计的提示和预处理技术运行样本代码后,以下是输出的结果:

ChatGPT中文站

如果我们修改询问为“什么是板球世界杯?”,模型不仅会生成答案,还会提供其理由。这展示了该模型既能提供准确回答,又能提供可靠论证的能力。

inquiry = "What is the Cricket World Cup?"

输出如下: 输出是下面的:

ChatGPT中文站

这个输出是我们方法有效性的一个闪亮范例。请注意高置信度得分和有合理解释字段的存在。这些要素至关重要,可以确保答案既准确又可靠,从而减少产生幻觉的可能性。

接近终点线:高级后处理策略

当我们接近我们的目标时,通过对GPT的输出进行精明的后处理,将幻觉率从5%降低到2%是可以实现的。以下是我们的策略分解: 当我们接近我们的目标时,通过对GPT的输出进行精明的后处理,将幻觉率从5%降低到2%是可以实现的。以下是我们的策略分解:

1. 基于概率的评估:我们评估了真实标记的\( e^{\text{logprob}} \)。如果它低于90%的阈值,我们将重新运行评估提示,将 `content_contains_answer` 设置为 false。这一步在最小化误报的同时,对误拒没有显著影响,被证明非常宝贵。

2. 用户定制的沟通方式:当`content_contains_answer`被标记为假时,我们采用GPT提供的理由,并进行第二次GPT API调用,以更加以用户为中心的方式重新表达。通过这种改进,我们消除了最终输出中的尴尬措辞,例如“用户应该……”,从而提升了整体用户体验,即使这不是确切的幻觉。

通过融入这些先进的后处理技术,我们距离将幻象最小化的目标更近了一步,同时还提高了输出的质量和用户友好性。

总结一切:关键要点和未来展望

在我们总结之前,这是一个被证明非常有价值的专业提示:考虑将您的内容置于``标签之间。这个简单的做法使得GPT能够更好地区分各种数据来源,甚至可以让模型返回占位符(如`Content1`),您可以随后方便地用链接替换它们。这种技巧不仅适用于内容,您还可以将其应用于集成到提示中的任何数据。

总的来说,我们的研究表明,一个良好协调的及时串连、预处理和后处理的结合可以极大地减少幻觉的风险,并提高GPT输出的可靠性。是的,这种方法确实需要更多的API调用,但最近90%的成本降低使其成为实现一流准确性的可行策略。

这次对GPT进行优化以提高准确性和可靠性的深入探索到此结束。我们希望您在这次探索中有所收获,并能够将其中一些策略应用到您自己的项目中。感谢您加入我们一同进行这个迷人的旅程,敬请期待未来更多的见解。

继续学习,使用我新书上的即时工程技术。

想要更深入地了解聊天机器人和语言模型的世界吗?不妨看看我的最新著作《精通LLMs:详尽的提示工程指南》。这本全面的指南将帮助你提升自己的技能水平。

📚 在这里获取您的副本

用一杯咖啡激发我的创造力!

如果您觉得本指南对您有帮助,请考虑为我买杯咖啡来支持我。您的支持将帮助我提供更多类似这篇的深入文章。

👉 请给我买杯咖啡

深入了解人工智能和聊天机器人

想要了解更多关于人工智能、聊天机器人和其他令人兴奋的技术吗?不要忘记访问我的博客《人工智能今日》,我定期发布关于这些话题的深入文章和指南。

这就是现在的全部内容。下次再见,持续编码和探索吧!

2023-10-20 17:22:24 AI中文站翻译自原文