🚀 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許可證。