【Agent】信息提取场景

文章目录

  • 场景说明
  • 超参数调整
    • top_k
    • top_p
    • tempareture
    • response_format
  • 提示词优化
    • 提取任务通用提示词模板
    • 防止badcase的提示词
    • 特殊符合划分待提取内容
  • 提取的后处理
  • 评估提取性能
  • Experiment
    • 1、通过符号学定位原文信息
    • 1.1 首位字符在原文中的index
    • 1.2 首尾N个字符,中间字符使用...代替
    • 使用动态调整输出内容
  • 参考资料
    • 超参数

在这里插入图片描述

场景说明

需要让大模型从文本中提取出固定的字段,同时为了方便后续数据管理,要求大模型输出格式为json格式。会涉及的几个影响提取质量的流程:

  1. 待提取文本的质量。如果待提取文本是诸如图片、PDF等文件格式,那么就需要结合OCR技术,将图片文件转换为对应的字符串信息。
  2. 提示词模板的质量。能否正确描述该提取任务、格式说明是否正确、提示词的高级用法是否使用等均会影响大模型的输出质量
  3. 大模型的性能。即使有准备充分的待提取文本和任务表述清洗的提示词,大模型的提取质量也是会影响提取效果。大模型对提取任务的影响存在两个方面:一是大模型本身的性能,大模型推理能力、理解能力好,提取效果相对较好;二是在选定了基座大模型之后,对大模型接口参数的调整,比如top_p、top_k、temperature等超参数的调整
  4. 后处理的格式化输出。提取到了大模型的输出之后,还要进行必要的后处理,才能将提取到的结果进行流程化。比如对一些输出的json结果进行解析,由于大模型存在幻觉,可能会导致json格式的错误:比如大模型有时喜欢在jison中加入 注释 \\;或者缺少了}导致无法完全使用json.loads()来格式化

超参数调整

top_k

top_k 越小
思路:从 tokens 里选择 k 个作为候选,然后根据它们的 likelihood scores 来采样模型从最可能的"k"个选项中随机选择一个,如果k=3,模型将从最可能的3个单词中选择一个。在很多情况下,这种抽样带来的随机性有助于提高生成质量。

top_p

思路:候选词列表是动态的,从 tokens 里按百分比选择候选词,模型从累计概率大于或等于“p”的最小集合中随机选择一个,如果p=0.9,选择的单词集将是概率累计到0.9的那部分。
影响输出文本的多样性,取值越大,生成文本的多样性越强
个人经验:
top_p 越强,比如设置top_p = 0.9, 大模型的自我表达越强,在提取任务中,大模型会输出很多非必要的旁白, 或者过早的停止提取任务,这个参数不好调,

tempareture

建议调整幅度不要过于剧烈,在± 0.15之间进行调整即可

response_format

千帆大模型提供了一个 response_format的超参数,估计是将这个超参数输入到提示词模板中。
不加response_format="json_object"大模型输出的json是带有json...前缀的

个人经验是:

  1. 默认参数是通用场景的最佳参数,因为大模型训练的时候就是按照这个默认参数进行训练的。
  2. 调整接口超参数应该尽可能遵循:调整个数少,调整幅度小, 进行消融实验

提示词优化

提取任务通用提示词模板

一个基础的提取任务的提示词模板,应该包含的四个要素:角色说明任务说明输出格式待提取区域
进一步的,如果提取的字段较少,可以设置一些few shot提示词来提高模型对任务的服从性

# 任务简介
你是一个文本json转换器。从{category}报告文本内容中识别出信息元 {extract_target},并按照json格式进行提取。# 任务说明
尽可能从原文提取出信息,不要修改字段值的原文内容。
把文中出现的时间和日期用ISO 8601格式表示。
由于该报告通过OCR进行识别,因此存在小部分字词错误和格式混乱的问题,你需要进行合理推断,从而尽可能完整地提取出相关信息。
信息元提取地越完善越能够帮助到用户管理自身健康信息。
文本中的报告内容全部都需要提取到对应字段中,不要输出原文没有的内容。
只返回那些成功提取的字段及其信息。如果某个字段没有提取到信息,请不要在返回的json结果中包含该字段。
输出结果不能进行简略输出,不可使用 "//" 注释,要求全部提取。# 输出格式
请按以下json格式抽取文本中的内容:
{extract_json_demo}# 开始提取
报告内容如下:
"""
{original_report}
"""

防止badcase的提示词

按照输出格式输出内容,不要输出非格式内容的其他旁白 请按以下json格式抽取文本中的内容
文本中的报告内容全部都需要提取到对应字段中,不要输出原文没有的内容
对于能够提取到的字段,不能对其提取结果进行简略输出,要求全部提取 尽可能从原文提取出信息,不要修改字段值的原文内容
把文中出现的时间和日期用ISO 8601格式表示。
输出结果不能进行简略输出,不可使用 “//” 注释,要求全部提取。

这是我研究出的一个提示词优化:只返回那些成功提取的字段及其信息。如果某个字段没有提取到信息,请不要在返回的json结果中包含该字段
该提示词能够减少大模型的无效输出,因为缺失的值,直接不反回这个字段即可,不需要额外返回类似 {”字段1“:"未提取到该字段"}等啰嗦,因为完全可以不返回这个字段,即可表示相同含义。
该提示词优点:

  1. 精简输出,减少输出耗时,降低token费用。啰嗦的内容越少,耗时越少,费用也越低
  2. 降低格式错误的概率。输出的内容少了,出现格式错误的机会就相对越低

该提示词缺点:

  1. 有概率导致大模型偷工减料,给了大模型不完全提取的一种豁免,尤其是大模型性能不佳的时候
  2. 大模型性能不佳时,不能服从该提示词,也就是缺失的值照样返回,那么这个提示词就是无效提示词
  3. 设置了该提示词之后,后处理为了确保格式统一,需要增加字段完整度检查逻辑,对于缺失的字段需要代码补全

特殊符合划分待提取内容

报告内容如下:
“”" # 使用特殊符号来标识提示词和待提取内容
{original_report}
“”"

提取的后处理

  1. 一些简单的预处理
  2. 使用json.loads()
  3. 使用 json_repair()
  4. 定制 解析逻辑

如果使用json输出格式不能很好地约束大模型进行提取任务,那么可以参考使用其他格式,比如使用jsonl

评估提取性能

  1. 统计返回的键的长度: len(dict.keys())
  2. 统计提取到的数据长度: sum(len(i) for i in dict.values())
  3. 统计格式服从度: 比如有无额外的旁白

Experiment

让大模型从原文中提取,按照给定的字段提取对应的原文内容,然而由于有些字段提取到的内容较长,一方面会影响完整输出的时间,另一方面会影响提高提取成本。
因此需要对提取Agent进行优化,从而提高Agent的提取效率,降低成本

本文对几个优化方案进行试验记录,

1、通过符号学定位原文信息

1.1 首位字符在原文中的index

优化逻辑
由于我们已经有了原文信息,所以我们可以将提取任务理解原文中的哪些片段需要被提取出来。
同时结合字符串的位置信息,我们可以将原文中冗长的片段映射为原文也就是原字符串中的位置信息,从而精简输出内容。并通过返回的位置信息,回到原文中,定位抽取出字符片段。该方案逻辑上可行,并且对于字段提取结果为长文本的场景,具有加速效果,对于较短的信息提取,如简单实体提取,则加速效果不明显。

# 任务说明
你是一个法律文档处理助手,负责将法律报告文本内容抽取并转换成JSON格式。
你需要以 JSON格式提取字段:['当事人姓名', '报告日期', '案件类型',]# 提取模板
请按以下JSON格式抽取文本中的内容,只输出原文中存在的信息,其他信息不要输出。
字段的值是提取到的信息在原文中的位置信息,格式为[start_index,end_index]。
{"当事人姓名": [位置信息],"报告日期": [位置信息],"案件类型": [位置信息],
}例如,如果原文中包含以下信息:
> 民事案件报告,当事人姓名:张三,报告日期:2024-07-01,案件类型:合同纠纷,报告名称:案件分析报告,法律意见:建议和解,备注:无。那么,提取的JSON格式内容将如下:{"当事人姓名": [12, 14],"报告日期": [21, 31],"案件类型": [39, 49],
}原文:

1.2 首尾N个字符,中间字符使用…代替

# 任务说明# 格式说明原文:

使用动态调整输出内容

参考资料

超参数

https://blog.csdn.net/qq_43243579/article/details/136331123
https://blog.csdn.net/qq_40910191/article/details/134070085

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

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

相关文章

24/7/12总结

axios Axios 是一个基于 promise 网络请求库&#xff0c;作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。 get请求: <script>function…

TypeScript 函数类型 (二)

函数类型 函数有两种方式定义 function 关键字来定义函数 function a(){}表达式定义&#xff08;箭头函数的形式&#xff09; const a()>{}函数需要定义类型的有三个地方 入参 和 返回值 以及 函数本身 的类型, 函数本身的类型常用于表达式定义的函数 function sum(a:stri…

用AI生成Springboot单元测试代码太香了

你好&#xff0c;我是柳岸花开。 在当今软件开发过程中&#xff0c;单元测试已经成为保证代码质量的重要环节。然而&#xff0c;编写单元测试代码却常常让开发者头疼。幸运的是&#xff0c;随着AI技术的发展&#xff0c;我们可以利用AI工具来自动生成单元测试代码&#xff0c;极…

Java小白入门到实战应用教程-开发环境搭建-IDEA2024安装激huo详细教程

writer:eleven 安装IDEA2024 一、下载IDEA 推荐大家去官网下载 我这里也给大家直接准备了安装包&#xff0c;和激huo教程&#xff0c;大家可以自行下载使用。 注意&#xff1a;激huo教程只用于学习交流&#xff0c;不可商用。 IDEA2024安装包及激huo教程 说明&#xff1a…

php随机海量高清壁纸系统源码,数据采集于网络,使用很方便

2022 多个分类随机海量高清壁纸系统源码&#xff0c;核心文件就两个&#xff0c;php文件负责采集&#xff0c;html负责显示&#xff0c;很简单。做流量工具还是不错的。 非第三方接口&#xff0c;图片数据采集壁纸多多官方所有数据&#xff01; 大家拿去自行研究哈&#xff0…

LabVIEW机器学习实现外观检测

介绍如何利用LabVIEW平台结合机器学习技术实现对被测样品的外观检测。详细说明了硬件选择、算法使用、操作步骤以及注意事项。 硬件选择 工业相机&#xff1a;高分辨率工业相机&#xff08;如Basler、FLIR等&#xff09;用于采集样品的图像。 照明设备&#xff1a;均匀的LED照…

Missing script:‘dev‘

场景&#xff1a; npm run dev 原因&#xff1a;没有安装依赖&#xff0c;可用镜像安装&#xff08;详见下图ReadMe 蓝色字体&#xff09;&#xff0c;没安装依赖可从package-lock.json文件是否存在看出&#xff0c;存在则有依赖 解决&#xff1a;

封装网络请求 鸿蒙APP HarmonyOS ArkTS

一、效果展示 通过在页面直接调用 userLogin(params) 方法&#xff0c;获取登录令牌 二、申请网络权限 访问网络时候首先需要申请网络权限&#xff0c;需要修改 src/main 目录下的 module.json5 文件&#xff0c;加入 requestPermissions 属性&#xff0c;详见官方文档 【声明权…

【2024】VsCode + Latex + Linux(Ubuntu) + wsl环境下配置教程 | 包含 中文配置,和 格式化处理

前言 本篇教程是针对WSL下的Ubuntu操作系统的配置教程&#xff0c;它和一般的Linux环境下的配置有所不同&#xff0c;并且和Windows环境下的也有所不同。 本篇博客编写参考了 官方文档&#xff08;Tex&#xff09; 和 插件官方&#xff08;Texlive Workshop&#xff09; 文档…

沙袋装袋机的原理和特点_鼎跃安全

在现代工业和建筑领域&#xff0c;沙子等散状物料的包装是一个必不可少的环节。传统的手工包装方式效率低下且劳动强度大&#xff0c;而沙袋装袋机的出现则极大地提高了包装效率和质量。 一、沙袋装袋机的工作原理 沙子通过输送系统从储料仓输送到装袋机的料斗中。输送系统设计…

Win10+Docker环境使用YOLOv8 TensorRT推理加速

这一部分内容和WSL-Ubuntu20.04环境使用YOLOv8 TensorRT推理加速-CSDN博客 是基本相同的,有细微差别我也会在文中指出来。 1.TensorRTX下载 这里使用Wang-xinyu大佬维护的TensorRTX库来对YOLOv8进行推理加速的演示,顺便也验证一下前面环境配置的成果。 github地址:GitHub -…

C++初学者指南-5.标准库(第一部分)--容器遍历

C初学者指南-5.标准库(第一部分)–容器遍历 文章目录 C初学者指南-5.标准库(第一部分)--容器遍历前向遍历基于范围的循环for_each / for_each_n迭代器的显式使用基于索引的循环 逆向遍历反向范围循环(C20)反向 for_each / for_each_n反向迭代器的显式使用基于索引的反向循环…

本地部署,APISR: 动漫超分辨率技术

目录 引言 技术背景 APISR 的架构与原理 APISR 的主要特点 应用实例 本地部署 运行结果 结论 参考文献 GitHub - Kiteretsu77/APISR: APISR: Anime Production Inspired Real-World Anime Super-Resolution (CVPR 2024)APISR: Anime Production Inspired Real-World A…

Why can‘t I access GPT-4 models via API, although GPT-3.5 models work?

题意&#xff1a;为什么我无法通过API访问GPT-4模型&#xff0c;尽管GPT-3.5模型可以工作&#xff1f; 问题背景&#xff1a; Im able to use the gpt-3.5-turbo-0301 model to access the ChatGPT API, but not any of the gpt-4 models. Here is the code I am using to tes…

vue仿甘特图开发工程施工进度表

前言 本文是根据项目实际开发中一个需求开发的demo&#xff0c;仅用了elementUI&#xff0c;可当作独立组件使用&#xff0c;C V即用。 当然没考虑其他的扩展性和一些数据的校验&#xff0c;主要是提供一个处理思路&#xff0c;有需要的小伙伴可以直接复制&#xff1b;本demo的…

元服务体验-服务发现

服务发现&#xff0c;无论线上或线下的方式都可以发现元服务。 线上&#xff1a;基于用户意图。从精准意图的搜索、用户事件触发的推荐到主动探索等场景。用户可以在设备的负一屏、全局搜索、应用市场、桌面等场景发现元服务。 线下&#xff1a;用户在 HarmonyOS Connect标签…

C++ | Leetcode C++题解之第238题除自身以外数组的乘积

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> productExceptSelf(vector<int>& nums) {int length nums.size();// L 和 R 分别表示左右两侧的乘积列表vector<int> L(length, 0), R(length, 0);vector<int> answer(l…

Modbus转Ethernet/IP网关模块与汇川PLC通讯案例

Modbus转Ethernet/IP网关模块&#xff08;XD-MDEP100&#xff09;是一种用于将Modbus协议转换为Ethernet/IP协议的设备。它可以将Modbus RTU和Modbus TCP两种不同格式的Modbus数据包转换为Ethernet/IP协议的数据包&#xff0c;实现不同厂家的设备之间的数据交换和共享。在汇川P…

解决elementUI列表的疑难杂症,排序显示错乱的问题

大家好&#xff0c;在使用elementUI表格时&#xff0c;有时会出现一些意料之外的问题&#xff0c;比如数据排序正常但表格显示、排序错乱等。在网上搜索后一般有2种解决方法&#xff1a;1.给表格每一项的el-table-column添加唯一的id用于区分。2.给表格每一项的el-table-column…

案例 | 人大金仓助力山西政务服务核心业务系统实现全栈国产化升级改造

近日&#xff0c;人大金仓支撑山西涉企政策服务平台、政务服务热线联动平台、政务网、办件中心等近30个政务核心系统完成全栈国产化升级改造&#xff0c;推进全省通办、跨省通办、综合业务受理、智能审批、一件事一次办等业务的数字化办结进程&#xff0c;为我国数字政务服务提…