🚀 Aeona | 聊天机器人
Aeona是一款基于生成式AI技术的聊天机器人,它能够像朋友一样与人类进行交流,主要面向Discord平台。借助特定的模型和数据集训练,它在对话生成方面表现出色,还可与AIML聊天机器人配合使用,以提升性能。
🚀 快速开始
Aeona是一个使用 microsoft/DialoGPT-small 构建的生成式AI。
建议将其与 AIML聊天机器人 配合使用,这样可以减轻负载、获得更好的回复,并为你的机器人赋予名称和个性。使用AIML聊天机器人还能硬编码一些回复。
你可以 点击此处 邀请该机器人。若想了解更多关于此项目的信息并与AI聊天,可访问 此网站。
✨ 主要特性
- 友好交流:Aeona希望能够像朋友一样与人类交谈,其主要目标平台是Discord。
- 个性适应:它会利用之前消息的上下文,推测与之交谈的人类的个性,并调整自己的个性,以便更好地与用户交流。
- 结合AIML:与AIML聊天机器人配合使用,可减轻负载、获得更好的回复,还能为机器人赋予名称和个性,同时可以硬编码一些回复。
📦 安装指南
暂未提供相关安装步骤。
💻 使用示例
基础用法
from transformers import AutoTokenizer, AutoModelWithLMHead
tokenizer = AutoTokenizer.from_pretrained("deepparag/Aeona")
model = AutoModelWithLMHead.from_pretrained("deepparag/Aeona")
for step in range(4):
new_user_input_ids = tokenizer.encode(input(">> User:") + tokenizer.eos_token, return_tensors='pt')
bot_input_ids = torch.cat([chat_history_ids, new_user_input_ids], dim=-1) if step > 0 else new_user_input_ids
chat_history_ids = model.generate(
bot_input_ids, max_length=200,
pad_token_id=tokenizer.eos_token_id,
no_repeat_ngram_size=4,
do_sample=True,
top_k=100,
top_p=0.7,
temperature=0.8
)
print("Aeona: {}".format(tokenizer.decode(chat_history_ids[:, bot_input_ids.shape[-1]:][0], skip_special_tokens=True)))
🔧 技术细节
目标
目标是创建一个能与AIML协同工作的AI,以打造最像人类的AI。
为何不单独使用AI?
与AIML相比,AI实际上不可能了解用户并存储他们的数据,而AIML甚至可以执行代码!AI的目标是在AIML无法处理时生成回复。
因此,目标是打造一个知识广泛但尽可能小巧的AI!为此使用了3个数据集:
- Movielines:电影台词有助于生成更长、更有深度的回复,但可能非常随机,约有200k条台词!
- Discord Messages:这些消息涵盖广泛的主题,经过过滤并去除了垃圾信息,这使得AI具有很高的随机性,并能对日常问题给出非常随机的回复,约有1.2亿条消息!
- 自定义数据集:从个人消息中提取,这些消息范围较窄,使用此数据集训练并随机回复会使AI经常说抱歉!
训练
Discord消息数据集的规模远远超过其他数据集,因此这些数据集会被重复使用,这样可以弥补彼此的不足!
该AI的上下文为6条消息,这意味着它会回复用户的前4条消息。示例
提示
建议发送用户输入以及之前的3条AI和人类的回复。
使用超过此数量的上下文会导致无用的回复,但使用较少的上下文也是可以的,不过回复可能会比较随机。
📚 详细文档
评估
以下是Aeona与其他基线模型在上述混合数据集上使用自动评估指标的比较:
模型 |
困惑度 |
Seq2seq Baseline [3] |
29.8 |
Wolf et al. [5] |
16.3 |
GPT - 2 baseline |
99.5 |
DialoGPT baseline |
56.6 |
DialoGPT finetuned |
11.4 |
PersonaGPT |
10.2 |
Aeona |
7.9 |
📄 许可证
本项目采用MIT许可证。