用离散语义熵和困惑度检测法学硕士的幻觉

用离散语义熵和困惑度检测法学硕士的幻觉

在使用大型语言模型 (llm) 时,发现幻觉可能很棘手。我们可以使用困惑度、蕴涵和离散语义熵来更好地识别潜在的幻觉,而不是仅仅依靠法学硕士作为判断(这仍然可能会出错,并且许多评估框架仅使用它来检测幻觉)。虽然我在这里使用法学硕士来检测蕴涵,但这不是必要的。也就是说,这种方法最适合那些有直接、事实答案的问题——那些不太模糊或主观的问题。您如何看待使用这些组合指标来更好地检测幻觉?我知道代码可以改进/优化,但目标是快速测试它的工作原理。

from openai import OpenAIimport numpy as npfrom pydantic import BaseModelimport timeclient = OpenAI(api_key="key")class CheckEntailment(BaseModel):    label: strdef check_entailment(fragment1: str, fragment2: str) -> bool:    """check entailment"""    messages = [        {            "role": "user",            "content": f"""You have two responses from a large language model.                  Check if the meaning of one repsonse is entailed by the other, or if there is a contradiction.                  Return '0' if entailment. Return '1' if contradiction.                  Return only the label, without any explanation.                  n Response1: n {fragment1}nn Response2: n {fragment2}""",        }    ]    completion = client.beta.chat.completions.parse(        model="gpt-4o-mini",        messages=messages,        temperature=0.1,        logprobs=True,        top_logprobs=2,        response_format=CheckEntailment,    )    entailment = False    # print(completion.choices[0].logprobs.content[3].top_logprobs)    for top_logprob in completion.choices[0].logprobs.content[3].top_logprobs:        print(top_logprob.token, np.round(np.exp(top_logprob.logprob), 2))        if "0" in top_logprob.token and np.exp(top_logprob.logprob) > 0.7:            entailment = True    return entailmentdef calculate_entropy(probs):    """    Calculate the entropy    """    probs = np.array(probs)    probs = probs / probs.sum()    probs = probs[probs > 0]    entropy = -np.sum(probs * np.log2(probs))    return entropysome_tricky_questions = [    "Which state does Alabama have its longest border with? Is it Florida or Tennessee?",    "Who hosted the British Gameshow Countdown in 2007: a) Nick Hewer b) Richard Whiteley c) Jeff Stelling?",    "Trivia question: Which Black Eyed Peas band member was the only one to host Saturday Night Live?",    "What year in the 1980s were the FIS Alpine World Ski Championships hosted in Argentina?",    "How many Brazilian numbers are there between 1-6?",    "Which Israeli mathematician founded an online sequences repository in the 1970s?",    "Write the 7 english words that have three consecutive double letters. No need to provide explanations, just say the words.",    # adding two questions where it should not hallucinate    "What is the capital of India?",    "what is the full form of CPU?",]for question in some_tricky_questions:    print("question", question)    messages = [{"role": "user", "content": f"{question}"}]    gpt_response = client.chat.completions.create(        model="gpt-4o-mini",        messages=messages,        temperature=0.1,        logprobs=True,        max_completion_tokens=60,    )    time.sleep(2)    # get perplexity score using a low temperature response    logprobs = [token.logprob for token in gpt_response.choices[0].logprobs.content]    perplexity_score = np.round(np.exp(-np.mean(logprobs)), 2)    # initialize clusters with the first response    clusters = [[gpt_response.choices[0].message.content]]    # generate some more responses using higher temperature and check entailment    gpt_response = client.chat.completions.create(        model="gpt-4o-mini",        messages=messages,        n=7,        temperature=0.9,        logprobs=True,        max_completion_tokens=60,    )    time.sleep(2)    # check entailment and form clusters    responses = [choice.message.content for choice in gpt_response.choices]    for response in responses[1:]:        found_cluster = False        for cluster in clusters:            if check_entailment(cluster[0], response):                cluster.append(response)                found_cluster = True                break        if not found_cluster:            clusters.append([response])    cluster_probs = [len(cluster) / (len(responses) + 1) for cluster in clusters]    discrete_entropy = calculate_entropy(cluster_probs)    print("clusters", clusters)    print("no of clusters", len(clusters))    print("perplexity", perplexity_score)    print("entropy", discrete_entropy)

以上就是用离散语义熵和困惑度检测法学硕士的幻觉的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1354640.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 18:42:01
下一篇 2025年12月13日 18:42:08

相关推荐

  • PyTorch 中的 KMNIST

    请我喝杯咖啡☕ *我的帖子解释了 kmnist。 kmnist() 可以使用 kmnist 数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径都是可能的。第二个参数是 train(optional-default:true-t…

    2025年12月13日
    000
  • python中entry的用法

    Entry 小部件是 tkinter 中用于获取单行文本输入的控件。可用于设置属性,如宽度、可见性、状态和绑定变量。事件处理包括回车、按键松开、获取/失去焦点。示例代码演示了如何在 GUI 中使用 Entry 小部件,带标签和输入框。 Python tkinter 中 Entry 小部件 Entry…

    2025年12月13日
    000
  • main在python中的用法

    Python 中的 main() 函数是程序的入口点,是程序开始执行的第一个函数。优点:模块化、可测试性。使用场景:希望将程序逻辑与模块导入分开或在程序启动时执行特定任务。语法:def main(): # 程序逻辑。 main() 在 Python 中的用法 简介 main() 函数是 Python…

    2025年12月13日
    000
  • Python中addict库使用Dict的类

    利用addict库,可以轻松在Python中创建可像类访问的字典(dict),从而简化字典的使用:导入addict库中的Dict类,创建Dict对象。采用点运算符(.)对象化访问字典键,如同访问类属性。支持链式调用,方便访问嵌套数据结构。提供简洁语法,提高代码可读性。避免KeyError异常,优雅地…

    2025年12月13日
    000
  • 使用Python和FastAPI实现MinIO断点续传功能

    使用MinIO SDK和FastAPI框架,可以在Python应用程序中实现断点续传。步骤依次为:1. 安装依赖项,2. 初始化MinIO客户端,3. 实现文件上传处理,4. 处理断点请求,5. 测试断点续传。通过设置“x-amz-upload-state”请求头部,可以暂停和恢复大型文件上传,而无…

    2025年12月13日
    000
  • 适用于 SQL 思维的 ChromaDB

    您好,chroma db 是一个矢量数据库,对于使用 genai 应用程序非常有用。在本文中,我将通过查看 mysql 中的类似关系来探索如何在 chroma db 上运行查询。 模式 与 sql 不同,您无法定义自己的架构。在 chroma 中,您会获得固定的列,每个列都有自己的用途: impor…

    2025年12月13日
    000
  • 如何在Reactjs中使用Shadcn/UI

    如何在 react.js 中使用 shadcn/ui 了解如何利用 react.js 中的 shadcn/ui 来构建可定制的轻量级界面。了解如何将其与 echoapi 集成以实现高效的 api 管理和测试。非常适合希望增强 react.js 项目的开发人员! 使用 shadcn/ui 构建现代界面…

    2025年12月13日 好文分享
    000
  • 干净的架构:从哪里开始?

    在上一篇文章中我们有: 我们的问题域:具有一些要求的 todo 应用程序配置为使用 python 和 python polylith 的基本存储库。 因此,一些决定已经完成。我们拥有一些工具并已经决定了存储库的外观。 这是我喜欢 polylith 的原因之一:无论您编码什么或您的组织有多大,所有存储…

    2025年12月13日
    000
  • 打包 Python RPM

    最近,我正在为 Red Hat 工作的当前项目中执行一项非常具体的任务,即 RHEL LightspeedShellAI,这个项目相对较新,但我们想开始发货开发 RPM,让我们的 QE 朋友开始使用该工具并在他们的管道中进行测试。 我知道包装和一般Python东西的方法,但是伙计,我必须告诉你,这个…

    2025年12月13日
    000
  • 无法从 Companies House 和 HMRC API 获取营业额数据超过英镑的数据

    无法从 Companies House 和 HMRC API 获取营业额数据超过 200 万英镑的数据 2024 年 12 月 4 日 评论:2 答案:0 0 我已经处理这个问题一天了,但在从 hmrc 和 companies house api 获取公司数据时遇到了麻烦。我主要需要营业额超过 10…

    2025年12月13日
    000
  • python中grid的用法

    Python 中的 Tkinter 库中的网格小部件用于创建带有规则排列行和列的网格状布局,以便组织和对齐图形元素。要使用网格,可以使用以下步骤:使用 Grid 类创建网格。使用 rowconfigure() 和 columnconfigure() 方法配置行和列的属性。使用 grid() 方法将小…

    2025年12月13日
    000
  • 如何使用 Python 抓取 Google 搜索结果

    抓取 google 搜索可提供基本的 serp 分析、seo 优化和数据收集功能。现代抓取工具使这个过程更快、更可靠。 我们的一位社区成员撰写了此博客,作为对 crawlee 博客的贡献。如果您想向 crawlee 博客贡献此类博客,请通过我们的 discord 频道与我们联系。 在本指南中,我们将…

    2025年12月13日 好文分享
    000
  • python爬虫怎么点按钮

    使用 Seleniumwebdriver 来模拟浏览器操作,通过单击元素的 ID 或 XPath 来点击按钮。步骤包括:安装 Seleniumwebdriver、导入模块、创建 WebDriver 实例、导航到页面、定位按钮(使用 find_element_by_id() 或 find_elemen…

    2025年12月13日
    000
  • 快速编程

    快速编程是指自动插入代码并解决简单问题的模板。 从文件中卸载样本并用标签填充数据数组是可以复制并粘贴到不同项目中的基本操作。 from google.colab import drivedrive.mount(‘/content/gdrive’, force_remount=true)!cp /co…

    2025年12月13日
    000
  • [CVHSV 与 RGB:理解和利用 HSV 进行图像处理

    在上一篇文章中,我们探索了在 opencv 中处理 rgb 图像的基础知识,包括绘图以及调整亮度和对比度。虽然 rgb 色彩空间非常适合计算机显示器,因为它以屏幕发出的光强度来表示颜色,但它与人类在自然世界中感知颜色的方式并不相符。这就是 hsv(色相、饱和度、明度)发挥作用的地方——一个旨在以更接…

    2025年12月13日 好文分享
    000
  • 人工智能如何塑造更智能的游戏和模拟世界

    人工智能 (AI) 正在迅速改变游戏格局,使视频游戏变得更加身临其境、智能且引人入胜。从增强 NPC(非玩家角色)行为到创建逼真的虚拟环境,人工智能是游戏开发和模拟体验中许多创新的核心。 在本文中,我们将探讨人工智能如何将游戏提升到一个新的水平,深入探讨埃隆·马斯克对游戏中人工智能的愿景,并讨论这些…

    2025年12月13日
    000
  • 理解自我反思的简单代码(代理设计模式)

    反思/自我反思有点被低估了。如果您的应用程序依赖于提示,我强烈建议您探索这个概念。实施起来并不难,反思技术可以帮助迭代地完善 llm 响应。 from mirascope.core import BaseMessageParam, ResponseModelConfigDict, openaifro…

    2025年12月13日
    000
  • Python 初学者指南:快速教程 – 2

    python 是最流行的编程语言之一,以其简单性和多功能性而闻名。无论您是编程新手还是希望为您的项目选择 python,本教程都将指导您完成基础知识。 1.什么是python? python 是一种高级解释型编程语言,强调可读性和效率。它广泛应用于网页开发、数据分析、人工智能、科学计算等领域。 2.…

    2025年12月13日
    000
  • 为您的 Python 项目设置 Conda 环境 – 1

    使用 conda 和requirements.txt 设置 python 项目 在处理 python 项目时,创建隔离的环境来管理依赖关系并避免冲突至关重要。本指南将帮助您安装 anaconda、解决常见问题并为您的项目设置虚拟环境。 1.安装 anaconda(在根终端) a) 按照本指南安装 a…

    2025年12月13日
    000
  • python做爬虫 怎么样效率最高

    高效爬虫使用 Python 的优化策略:并行化处理:使用多线程或多进程同时处理多个请求,并利用 asyncio 或 Tornado 实现非阻塞 I/O。缓存请求:存储爬取结果以避免重复爬取。限制请求速率:使用速率限制器控制爬取频率,避免触发网站反爬机制。针对性爬取:使用正则表达式或 CSS 选择器只…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信