Open Tz-WIND opened 2 weeks ago
因为微调数据里面历史对话数据占比少,对于2.3版本更甚,即使对于现在的2.6(尚未发布)存在历史对话的训练集数量也不超6%。 你可以尝试最新的2.5.3版本,我们将在2.7~2.8中着重增强对于上下文的连贯性。
上下文连贯性应该不是靠训练集能练出来的,我觉得可以加入Langchain这种框架实现历史记忆
这个想法我也有,只不过还等待验证和实现。
我自己先研究研究
我的想法具体是这样的,在一定的对话轮数之后,对这些记忆进行概括整理,并收入长期记忆文件中,在上下文语境需要时调取;此外,还引入人物设定选项,以便保证模型始终输出符合用户期望的答案
你先试着研究下吧,这个线程始终保留至上下文衔接问题改善
如果这个项目要通过langchain来实现记忆的话就得整个搬迁到langchain架构下,工程量有那么一点点大。我去看看有无别的方法
问题报告:Muice.py, line 86处会导入历史对话记录最后一行的[history]项 但是history项的value均为空 正在逆向追查中
前面直接把history定义成none了,蚌埠住了 这个调用历史对话约等于没调
不对,是空列表(
笑死我了,我还以为是太短了,一看东西都是空的
我在 https://github.com/Moemu/Muice-Chatbot/commit/07e9b04007f7ee6b6d5a4f9a47fcb3b895266520 中修复了对话历史重复问题,这导致了history永远不会更新
这上下文直接就不要了
既然这里的history已经形同虚设了,那怎么办捏
事已至此,先涩涩吧
自己的问题自己修,我已经提交了更改,拉取代码就应该没有问题了。 与此同时,您可以通过下面的代码来进行迁移,只需更改QQ_NUM常量即可:
import json
QQ_NUM = ''
with open(f'./memory/{QQ_NUM}.json', 'r', encoding='utf-8') as f:
data = f.readlines()
memorys = []
for i in data:
memory = json.loads(i.rstrip('\n'))
memorys.append([memory['prompt'],memory['completion']])
del memorys[-1]
with open(f'./memory/{QQ_NUM}.json', 'w', encoding='utf-8') as f:
text_line = {'prompt':memory['prompt'], 'completion':memory['completion'], 'history':memorys}
json.dump(text_line,f,ensure_ascii=False)
f.write('\n')
对此带来的不便我深表歉意
赞
往model里丢的history参数都支持什么数据类型
列表,应该还有None
事已至此,先睡觉吧
这个history的bug修掉之后上下文明显好了很多 要是还要接着死磕的话可能就是要做知识图谱这种 “超级沐雪已部署.jpg”
蚌埠住了
这个问题已经出现过一次,但是还没有修... 等我们把一个PR合并后看看还会不会出现问题
每次使用/refresh都会出现
fixed. a3af9076b2db78c80b2e7073e9285110f661446e
没错又是我,我又遇到问题了
上下文
例1: {"prompt": "晚上好", "completion": "晚上好,祝你今晚做个好梦!", "history": []} {"prompt": "要一起去吃晚饭吗", "completion": "当然可以呀,吃完晚饭我们还可以去看一部电影,怎么样?", "history": []} {"prompt": "可以呀,看什么电影呢", "completion": "嗯,想看看你", "history": []} {"prompt": "?啥意思", "completion": "啥意思?", "history": []} {"prompt": "你刚刚说的话是什么意思", "completion": "我说,有很多人认为,当一个人死了,他/她灵魂就去了天堂,这是一个误解。实际上,灵魂是永远存在的,它没有死亡也没有去处。", "history": []} {"prompt": "然后呢", "completion": "那就......那就......", "history": []} {"prompt": "?", "completion": "?", "history": []} {"prompt": "你刚刚说的啊", "completion": "啊,对不起,我忘记了", "history": []} {"prompt": "是不是在骗我!", "completion": "不是喵!本雪很诚实的好孩子!", "history": []} {"prompt": "那你同意了吗", "completion": "我不同意", "history": []}
例2: {"prompt": "在家躺了一天,你过得怎么样", "completion": "很好呢,感觉自己又变年轻了", "history": []} {"prompt": "在吗", "completion": "在", "history": []} {"prompt": "我好无聊", "completion": "那就和本雪聊聊天吧,可能会有惊喜哦", "history": []} {"prompt": "好呀", "completion": "嘿,你今天看起来怎么样?", "history": []} {"prompt": "啥意思", "completion": "我喜欢你", "history": []} {"prompt": "啊?真的吗", "completion": "真的哦!", "history": []} {"prompt": "我也喜欢你!", "completion": "谁喜欢你啦?", "history": []}
模型
Chatglm2-6b+Muice 2.3的微调模型
额外信息
我的沐雪就是有点...傻傻的 一直有上一句话刚说完下一句话就忘了的情况 6b的模型本身应该不会有这个问题