虚心使人进步

虚心学习,天天向上......
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

作者:AI学习记录
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

总而言之:1.要清晰告诉大模型按照什么格式回复,可以借助引号,尖括号,破折号等标点符号以示着重2.为保万无一失,要举例如果你是自己在做大模型的应用开发或者你需要大模型返回json等类型的数据格式,你可以使用langchain框架的ResponseSchema类和StructureOutputparser类进行输出格式定义和输出格式转换(langchain本身也是按照大模型提示词在做)可以定义输出字符串列表,输出json等格式本质上是在告诉大模型输出格式按照——```json{{{format}}}注意:``` 是非常重要的一个标记符号,如果要求大模型返回程序数据格式,通常是用这个符号标注。{format}就是你需要大模型返回的具体json格式,在这个json中,把每一个属性定义好,比如——Desc:string //你总结归纳的结果Image:list //你认为可以生成图片的场景描述集合//后面的文字就是你要告诉大模型这个字段是什么含义//前面是表示这个字段是什么类型的字段:前面是表示这个字段的名称当然你也可以使用这种构造json的方式直接用到ChatGPT里面,也是一样的<img src="https://pica.zhimg.com/50/v2-b220a6125a53372af1db89d1d694c012_720w.jpg?source=2c26e567" data-rawwidth="682" data-rawheight="718" data-size="normal" data-original-token="v2-5575e6758571c7bce0c9444bec4ed546" data-default-watermark-src="https://picx.zhimg.com/50/v2-6fcae0c0a7c41a3f684f0a3cd10286e8_720w.jpg?source=2c26e567" class="origin_image zh-lightbox-thumb" width="682" data-original="https://pica.zhimg.com/v2-b220a6125a53372af1db89d1d694c012_r.jpg?source=2c26e567"/>




大模型输出json格式读取方法小记 | 1.背景:
让大模型对文章进行多标签多分类的打标,为了方便交互,采用json格式读取。
笔者工作中使用3.5-turbo的接口,为了使gpt能够更好的工作,这里使用了CoT的方法:让gpt先输出线索步骤再输出判断结论。
json格式如下:
{
cat1: 0,
cat2: 1,
….
can: 0
}
2.问题:
不过,我发现gpt3.5的输出的json总是有问题,json经常会出现三种错误:
- 缺少逗号,写成了中文逗号或者句号等其他标点,或者其他少数字符错误、缺失导致json解析失败。
- value不是0、1,而是自然语言,语言中包含了判断。
- key和我们期望的不一样,有可能多字也有可能少字。
3.简单并且有效的解决方案:
- 简化prompt中json的格式,并显示
式的写出json中的key,最好可以显式的写出json的全貌。
- 做一些简单的修正和清洗,有一条指令很好用!unicodedata.normalize('NFKC', s).replace("。", ""),直接自动将中文标点转为英文标点。
- value自然语言可以用黑名单词汇筛选,观察case,将诸如“没有”,“不包含”,“不存在”等词语的一律设置为0。能这样做的原因是通过观察发现,虽然gpt会不按照我们想要的输出结果,但是其输出具有高度的相似性和排比性,因此可以使用这种简单的策略。
- key不一致的问题,可以通过最小编辑距离和标准的key做对比,映射到标准的key。
# 大模型 #GPT # chat GPT #深度强化学习 # 机器学习 #Prompt learning # 搜索引擎 #llama