AI实践与学习8-AI Agent Workflow助力解题和验证答案置信度

news2024/9/23 19:25:21

背景

之前在试着提高解题正确率,目标100%,发现外部知识不足仅依靠大模型的话比较困难。而试题人工生产成本巨大。

本质因为大模型生成内容会有幻觉特点,也就是说解答的试题正确性不太好评判,直接解答试题生产场景不太可控。

后面考虑调用OpenAI解题的时候,像xxx那样通过输出置信度来帮助判断答案的正确性 or 其他形式只要能保证LLM生成答案是可靠(程序判断)的。

目录

  • RAG知识库现状
  • 测评1
    • 初次测评结果
    • 分析与优化
    • 优化后测评
  • 测评2
  • 测评3

RAG知识库现状

想要一定程度避免解题内容为幻觉,必须依靠外部知识(RAG知识库)。

可以考虑构建Agent Workflow用于幻觉检查,只输出依靠RAG之后有依据一定正确的 答案和解析,不确定的输出如 “当前AI Agent 没有十足把握生成正确答案…” 而判断的依据就是根据RAG、web search的知识。

  • 测试数据量:RAG知识库使用ES的 qbm_rag_ques_knowledge,高中英语单选题型数据量184532。

  • 知识格式:【题干】xxx,【答案】:xxx,【解析】:xxx。

测评1

随机选取100道高中英语单选测试集,使用GPT-4o-mini模型

构建Agent Workflow,优化流程,优化提示词。

AI解题包含幻觉检查的Agent.png

初次测评结果

test-ai-answer-result-gpt4o-mini-check-hallucination.json
幻觉检查、答案评估输出 “AI Agent暂时没有十足的把握确定答案…” 的试题有31个。
通过幻觉检查、答案确定通过的输出答案的题69个,其中错误的4个

  • 2267372320546816
  • 2267372320530432
  • 2265225605718017
  • 2238952535252993

分析与优化

经过分析BAD CASE优化点

  • 优化知识库质量:知识库剔除不包含没有解析的试题 or 文档评分的时候调整提示词将该文档判断为不相关,重建courseId=28的知识库,总数据量196235,去除低质量知识后184532。
  • 优化流程结点:web search的内容也需要grade_documents 和 hallucination_grade,发现网络召回的内容还是会干扰,比如只是语意相关,会干扰解题,因此取消web search节点。
  • 重排序:取消莱文斯坦算法第二次重拍,因为不一定要求是题干相似的题。
  • 优化RAG召回:增加另外的召回思路,之前使用的是单独MLT,现在加入选项内容关键字搜索,如果MLT召回内容经过评分后不相关,就进行第二次关键字召回。

优化后的流程节点

1、取消web search节点:web search搜索大概率是语意相关的,召回试题的概率不是很大,语意相关的知识意义不大。
2.png

取消了web search 并修改为更严格的提示词,通过幻觉检查的数量急剧减少。

2、加另外一种关键字召回
3.png

3、优化无用流程:后发现如果召回的知识被判断为不相关,直接结束就行,不在generate生成答案解析,节省token和时间。

4.png

优化后再次测评

[test-ai-answer-result-gpt4o-mini-check-hallucination-without-websearch(4).json]

幻觉检查通过的13道试题,均解答正确

测评2

随机选取200道高中英语单选测试集,使用GPT-4o-mini模型

Agent workflow使用下面的

[test-ai-answer-result-gpt4o-mini-check-hallucination-without-websearch(5).json]

幻觉检查通过的18道试题,均解答正确

测评3

随机选取100道高中英语单选测试集,使用GPT-4o-mini模型

Agent workflow使用下面的

[test-ai-answer-result-gpt4o-mini-check-hallucination-without-websearch(6).json]

幻觉检查通过3道题,均解答正确。

Agent幻觉检查流程

以2270753096671232为例子,说明整个解题流程

当前节点 :retrieve,节点数据:

{
	"maxRetrieveCount": 2,
	"kpointIds": [42242, 42250],
	"questionId": "2270753096671232",
	"question": "Busy_with his new machines, the engineer had no time to make the new information_to his colleagues. A. experimenting; known B. to experiment; known C. to experiment; to be known D. experimenting; to be known",
	"typeId": "2803",
	"maxTransformQueryCount": 0,
	"maxWebSearchCount": 0,
	"courseId": 28,
	"maxHallucinationGraderCount": 2
}

部分Agent输出日志

--- 召回的知识----
省略
 ---决策:文件相关:
【题干】He made up his mind to devote all he could _ his spoken English before going to college. A. to be practicing B. practicing C. practice D. to practicing---决策:存在文档与问题相关,准备生成,参考文档 documents : 
[【题干】He made up his mind to devote all he could _ his spoken English before going to college. A. to be practicing B. practicing C. practice D. to practicing;【答案】D;【解析】devote…to..to是介词,后面接动名词 ]
- 当前试题:
 Busy_with his new machines, the engineer had no time to make the new information_to his colleagues. 
A. experimenting; known 
B. to experiment; known 
C. to experiment; to be known 
D. experimenting; to be known,
生成依据的上下文:
[【题干】He made up his mind to devote all he could _ his spoken English before going to college. A. to be practicing B. practicing C. practice D. to practicing;【答案】D;【解析】devote…to..to是介词,后面接动名词]
- 生成一次答案:
【答案】:B;
【解析】:考查语法知识和词汇辨析。句意:忙于他的新机器,这位工程师没有时间将新信息告知他的同事们。
1. 选项AD中的"experimenting"是现在分词形式,表示正在进行的动作,但句子中需要的是不定式形式"to experiment"来表示目的,因此AD错误。
2. 选项C中的"to be known"是被动不定式形式,表示将来被动,但句子中需要的是已知的状态,因此C错误。
3. 选项B中的"to experiment"表示目的,"known"表示已知的状态,符合句意。
故选B。
【置信度】:95%

---检查幻觉---- 检查幻觉的结果,是否根据文档知识得出的结果 :---决策:答案不以文档为基础,准备重新生成答案,剩余次数:2---
 - 当前试题:
 Busy_with his new machines, the engineer had no time to make the new information_to his colleagues. A. experimenting; known B. to experiment; known C. to experiment; to be known D. experimenting; to be known,
生成依据的上下文:
[【题干】He made up his mind to devote all he could _ his spoken English before going to college. A. to be practicing B. practicing C. practice D. to practicing;【答案】D;【解析】devote…to..to是介词,后面接动名词]
- 生成一次答案:【答案】:A  
【解析】:考查语法知识和词汇辨析。句意:忙于他的新机器,这位工程师没有时间将新信息告知他的同事们。  
1. 选项A中的"experimenting"是现在分词,表示正在进行的动作,符合句意中的“忙于他的新机器”;"known"是过去分词,表示被动,符合句意中的“将新信息告知他的同事们”。  
2. 选项B中的"to experiment"是动词不定式,表示目的,不符合句意中的“忙于”;"known"是过去分词,符合句意。  
3. 选项C中的"to experiment"是动词不定式,表示目的,不符合句意中的“忙于”;"to be known"是动词不定式的被动形式,不符合句意中的“将新信息告知他的同事们”。  
4. 选项D中的"experimenting"是现在分词,符合句意中的“忙于”;"to be known"是动词不定式的被动形式,不符合句意中的“将新信息告知他的同事们”。  
故选A。  
【置信度】:95%

 ---检查幻觉---- 检查幻觉的结果,是否根据文档知识得出的结果 :---决策:答案不以文档为基础,准备重新生成答案,剩余次数:1---
---生成结果---
准备生成一次答案:
GenerationTool.Arguments(question=Busy_with his new machines, the engineer had no time to make the new information_to his colleagues. A. experimenting; known B. to experiment; known C. to experiment; to be known D. experimenting; to be known, context=[【题干】He made up his mind to devote all he could _ his spoken English before going to college. A. to be practicing B. practicing C. practice D. to practicing;【答案】D;【解析】devote…to..to是介词,后面接动名词], backQuestion=null)

 - 生成一次答案:【答案】:A  
【解析】:考查语法知识和词汇辨析。句意:忙于他的新机器,这位工程师没有时间将新信息告知他的同事们。  
1. 选项A中的"experimenting"是现在分词,表示正在进行的动作,符合句意"忙于他的新机器"2. "known"是过去分词,表示被动含义,符合句意"将新信息告知他的同事们"3. 选项B中的"to experiment"是动词不定式,不符合句意,因为句子需要表示正在进行的动作。  
4. 选项C中的"to be known"是动词不定式的被动形式,不符合句意,因为句子需要表示将新信息告知同事们的动作已经完成。  
5. 选项D中的"to be known"同样不符合句意,因为句子需要表示将新信息告知同事们的动作已经完成。  
故选A。  
【置信度】:95%

---检查幻觉---检查幻觉的结果,是否根据文档知识得出的结果 :---决策:答案不以文档为基础,达到最大检查幻觉次数,准备进行答案评估---
- 当前节点序号:【4,节点转移到:__END__

 - 当前第 75, costTime:31 s, answer:A , ai answer:AI Agent暂时没有十足的把握确定答案...
- 当前第 75,写入文件成功

结论与后续优化点

从目前来看,随机测试集400高中英语单选,通过幻觉检查的确定答案的是34道(大概10%)解答正确率100%,大量验证并进行下面优化之后,大概率可以直接将Agent投入解题生产。

测试使用的模型为GPT-4o-mini,本地测试单题解题时间区间大概[5-44]s

  • 提示词优化:目前初步调整提示词比较严格,后续可以大量测试下,调整优化提示词在提高答案通过幻觉检查的试题数量。
  • 召回率优化:目前拓展的第二个选择题选项关键词RAG召回仍需要优化,提高召回质量。
  • 幻觉检查优化:比如可以考虑使用 triger 给试题预测知识点(试题生产前的打标是否已经确定知识点?)然后提示词告诉大模型,用于检查生成的答案是否来自这些知识点。

[AI解题测评思路]

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

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

相关文章

市场纷乱中,沃尔沃坚守长期主义之道,用“P1+P4”解决用户痛点3A品质,插混王者——沃尔沃插混让性能成为插混必要条件

“造车就像西天取经,明确的方向、实现目标的能力,内心的坚持缺一不可”,本届成都国际车展上,来自沃尔沃汽车集团全球高级副总裁袁小林的一句话可谓是振聋发聩,向沉迷玩转“流量密码”的车企,向因各种噱头而迷茫的用户发…

RISC-V全志D1sCVBS套件

此开发板的任何问题都可以在我们的论坛交流讨论 https://forums.100ask.net/c/10-category/75-category/75 硬件简述 D1s主板 主板如下: D1s板载功能 板载功能有 XR829 WIFI蓝牙模组芯片,Bluetooth支持标准蓝牙与 低功耗蓝牙,Wifi 支持…

论被动元数据的弊端,以及主动元数据的技术优势

元数据是企业数据生态系统中不可或缺的组成部分,核心在于为数据本身提供完整的描述性信息,包括数据来源、数据结构、语义含义、物理位置、所有权归属、创建时间、流转路径等关键要素,是企业理解、开发、消费和应用数据的基石。 元数据管理&a…

毕设创新点之一:基于GD32/STM32的AI模型部署-github库

将AI模型成功部署到边缘MCU中,常常受限于MCU的计算峰值和内存峰值的限制,部署较为困难,目前有一个将AI算法MCU部署到GD32系列MCU中的宝藏的开源库。 项目网址:HomiKetalys/gd32ai-modelzoo: Provide deployable deep learning mo…

springweb获取请求数据、spring中拦截器

SpringWeb获取请求数据 springWeb支持多种类型的请求参数进行封装 1、使用HttpServletRequest对象接收 PostMapping(path "/login")//post请求//spring自动注入public String login(HttpServletRequest request){ System.out.println(request.getParameter("…

若依脚手架 创建一个系统 his医院信息管理系统

一、创建his-medicine模块 0) 在创建好的若依后端项目中创建一个maven模块his-medicine 1&#xff09;his模块的整合步骤 ①&#xff09;his的依赖 这个是若依项目所有系统模块都需要添加的依赖&#xff0c;domain和controller继承的类就在这里面。 <!-- 通用工具--><…

【位置编码】【Positional Encoding】直观理解位置编码!把位置编码想象成秒针!

【位置编码】【Positional Encoding】直观理解位置编码&#xff01;把位置编码想象成秒针&#xff01; 你们有没有好奇过为啥位置编码非得长成这样&#xff1a; P E ( p o s , 2 i ) s i n ( p o s 1000 0 2 i / d m o d e l ) P E ( p o s , 2 i 1 ) c o s ( p o s 1000 …

基于yolov8的手势识别0-9检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的手势识别0-9检测系统是一个利用深度学习技术&#xff0c;特别是YOLOv8算法&#xff0c;实现对手势&#xff08;0至9的数字手势&#xff09;进行快速、准确识别的系统。YOLOv8以其高效的性能和准确性&#xff0c;在实时性要求较高的手势识别领域表现出…

ant-design-vue v-decorator用法

笔者一直在做后端&#xff0c;最近公司要求&#xff0c;帮助前端同时写一下前端页面。这里也记录下一些新学的知识&#xff0c;帮助大家避坑 在ant-design中&#xff0c;v-decorator可以实现双向绑定与表单验证。即如果你使用v-decorator 你可以不用使用v-model。 <a-form…

[000-01-015].第03节:SpringBoot中数据源的自动配置

我的后端学习大纲 SpringBoot学习大纲 1.数据访问流程&#xff1a; 2.搭建数据库开发场景&#xff1a; 2.1.导入JDBC场景&#xff1a; 2.2.分析自动导入的内容&#xff1a; 2.3.分析为何没有导入数据库驱动&#xff1a; 1.因为人家也不知道我要用啥数据库&#xff0c;所以在自…

92. UE5 RPG 使用C++创建GE实现灼烧的负面效果

在正常游戏里&#xff0c;有些伤害技能会携带一些负面效果&#xff0c;比如火焰伤害的技能会携带燃烧效果&#xff0c;敌人在受到伤害后&#xff0c;会接受一个燃烧的效果&#xff0c;燃烧效果会在敌人身上持续一段时间&#xff0c;并且持续受到火焰灼烧。 我们将在这一篇文章里…

PTA L1-028 判断素数

L1-028 判断素数&#xff08;10分&#xff09; 本题的目标很简单&#xff0c;就是判断一个给定的正整数是否素数。 输入格式&#xff1a; 输入在第一行给出一个正整数N&#xff08;≤ 10&#xff09;&#xff0c;随后N行&#xff0c;每行给出一个小于的需要判断的正整数。 …

vscode里调试python3.6的配置

vscode里需要降级如下插件&#xff1a; ● Python v2022.8.1 ● Pylance v2022.6.30 ● Python Debugger v2023.1.XXX (pre-release version | debugpy v1.5.1)

vue-echarts :知识图谱可视化,动态更新 动态赋值series,更新options

<template><div style="display: flex;align-items: center;justify-content: space-between;"><

Java语言程序设计基础篇_编程练习题*17.10 (分割文件)

目录 题目&#xff1a;*17.10 (分割文件) 代码示例 输出结果 题目&#xff1a;*17.10 (分割文件) 假设希望在 CD-R 上备份一个大文件(例如&#xff0c;一个 10GB 的 AVI文件)。可以将该文件分割为几个小一些的片段&#xff0c;然后独立备份这些小片段。编写一个工具程序&am…

Taro 微信小程序 分页上拉加载

需求&#xff1a; 页面表头及上面部分都固定&#xff0c;表格数据部分可以滚动&#xff0c;支持分页&#xff0c;上拉加载下一页数据 如果是最后一页需判断一下&#xff0c;上拉不再继续加载数据 效果&#xff1a; template&#xff1a; <scroll-view class"db-det…

BodySlide and Outfit Studio 身形编辑器和模型编辑器v4.7.1汉化版以及使用和汉化方法

感谢小莫汉化&#xff01; 汉化版下载地址&#xff1a;https://pan.quark.cn/s/50987aa39805

《NLP自然语言处理》—— 关键字提取之TF-IDF算法

文章目录 一、TF-IDF算法介绍二、举例说明三、示例&#xff1a;代码实现四、总结 一、TF-IDF算法介绍 TF-IDF&#xff08;Term Frequency-Inverse Document Frequency&#xff09;是一种用于信息检索与文本挖掘的常用加权技术。TF-IDF是一种统计方法&#xff0c;用以评估一个词…

【HarmonyOS NEXT开发】鸿蒙界面开发起步,ArkUI(方舟开发框架)介绍,知识点详解

【HarmonyOS NEXT开发】鸿蒙界面开发起步&#xff0c;ArkUI(方舟开发框架)介绍&#xff0c;知识点详解 大纲 主题&#xff1a;鸿蒙界面开发起步&#xff0c;ArkUI(方舟开发框架)介绍&#xff0c;知识点详解。、 内容摘要&#xff1a;带领直播课的观众一步步熟悉ArkUI的基本框…

语言质量评价对应用翻译质量的影响——以美国市场为例

在竞争激烈的移动应用程序世界中&#xff0c;尤其是在美国这样一个庞大而多样化的市场中&#xff0c;翻译的质量可以决定应用程序的成功与否。语言质量评价对应用翻译的整体质量有着深远的影响&#xff0c;其重要性怎么强调都不为过。 语言质量评价的重要性 语言质量评估是评…