Created
Aug 10, 2024 08:59 AM
Favorite
Favorite
Priority
备注
推荐
类型
企业应用增长营销混合云网络
换了工作后,熟悉业务、熟悉人、熟悉环境,每天都是新东西的输入,脑袋都装不下了 😭😭😭,还是蛮累的
给自己打打鸡血,时间都是挤出来的,人嘛,都是逼出来的。
最近看到一些大模型 JSON 格式输出的方法,这里简单说说,说不定有你需要的。
很多人说,为什么非要纠结 JSON 格式的输出,我用的挺好的,啥 JSON 格式都没弄过
上面这种说法的,要不就是用的不深,浅尝辄止
要不就是不是做 AI 开发的,要知道!开发最后的结构化结果是很重要的
比如你想要一些抽取好的关键信息,这时候怎么给你?
肯定是结构化的字段信息,简洁明了
当然,结构化的输出不止 JSON 一种,还有很多。
最简单的方式当然就是在 prompt 上面做功夫,让大模型遵循你的命令,成为你的听话的小猫咪 🐱
不要觉得这种很容易,这种结构化大模型输出格式的目前已经成为了很多人的研究课题。
下面的几个方法也不一定面面有效,但是是一种有效的思路,可以试试
输入即输出
比如一个信息抽取的任务,按照下面JSON格式的 prompt 喂给大模型,task 定义目标,restriction 给出 JSON 的限制,text 是文本输入,format 是定义好的输出 JSON 字段
输出的结果是这样的。
notion image
再比如一个query改写(根据对话历史上下文改写当前对话信息)的任务, 也是JSON格式的prompt
输出也是遵循JSON格式的
notion image
这种方式就是输入的prompt就直接是结构化的JSON,定义好输出格式的format,给出明确的字段定义。
prompt中明确要求
还是上面的信息抽取任务,给定的prompt如下
输出的结果
notion image
这种方式就是在提示词的基础之上,别写简单的那种按照JSON的格式给我返回结果,鬼知道能返回什么样的JSON,你要按照你的需求,给定对应返回的JSON案例,信息抽取任务就定义好要抽取那些信息,最好给定字段的解释或者案例。
还有一个,如果你用的是openAI的API,他们提供了这个参数 response_format ,可以设置为 { "type": "json_object" }
但是这种方式也不一定,最好还是在prompt中按照上面说的加一些输出的格式案例
那问题来了,像上面的写法能100%解决格式输出的问题嘛?
那你真的太小看大模型了
像大规模参数量的大模型还好一些,小规模参数量的大模型不遵循指令的问题相对明显。
有哪些case?
输出的JSON格式多一个少一个括号{},增加了一些\n空格等特殊字符,回复的内容比如 改写后的内容 + JSON格式结果
还是要做些后处理的
1、正则表达式 处理一些特殊的字符,或者提取返回结果中的JSON片段信息。
2、利用一些第三方库修复JSON badcase , 比如json_repair。
3、调整temperature的参数 ,调低点,甚至0。
4、重试机制 ,对无法解决的case进行重新提问,大模型偶尔一时的抽风不代表全部都有问题。
好了,困了,今天就写到这里了。
<-End->
notion image
我是大林,持续关注 AI 发展,和大家一起交流。微信(dalinvip2023),备注【公众号 AIGC】,进 AIGC 交流群一起交流。
如果文章对你有一点点 🤏🏻 帮助,关注公众号 并【星标】,可以及时收到最新 AI 信息,点赞、在看、帮忙转发给更多的朋友,谢谢。
往期推荐
0
0
0
Loading...