đ Aeona | Chatbot
Aeona is a generative AI chatbot that aims to engage in human - like conversations with users, primarily on Discord. It uses the [microsoft/DialoGPT - small](https://huggingface.co/microsoft/DialoGPT - small) model and is recommended to be used in conjunction with an [AIML Chatbot](https://github.com/deepsarda/Aeona - Aiml) for better performance.
đ Quick Start
Aeona is an AI chatbot designed to interact with humans as if it were a friend. Its main target platform is Discord. You can invite the bot here. To learn more about this project and chat with the AI, visit this website.
⨠Features
- Context - Aware: Aeona uses the context of previous messages to generate responses and adapts its personality based on the user it's chatting with.
- Combined with AIML: Working with an AIML chatbot, it can reduce the load, provide better replies, and add a name and personality to the bot. The AIML can also hard - code some replies.
- Trained on Multiple Datasets: It is trained on datasets like [Movielines](https://www.kaggle.com/Cornell - University/movie - dialog - corpus), [Discord Messages](https://www.kaggle.com/jef1056/discord - data), and a custom dataset.
đĻ Installation
No specific installation steps are provided in the original README.
đģ Usage Examples
Basic Usage
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)))
đ Documentation
Goals
The goal is to create an AI that works with AIML to create the most human - like AI.
Why not an AI on its own?
It's not realistic for an AI to learn about the user and store data on them compared to an AIML, which can even execute code. The AI's goal is to generate responses when the AIML fails. The aim is to make an AI with a wide variety of knowledge but as small as possible.
Datasets
- [Movielines](https://www.kaggle.com/Cornell - University/movie - dialog - corpus): Promotes longer and more thought - out responses but can be very random. About 200k lines.
- [Discord Messages](https://www.kaggle.com/jef1056/discord - data): Filtered and spam - removed messages on a wide variety of topics, making the AI highly random and giving it random responses to everyday questions. About 120 million messages.
- Custom dataset: Scrapped from personal messages. Teaching this dataset and sending a random reply will make the AI say sorry often.
Training
The Discord Messages Dataset is much larger than the other datasets, so the datasets are repeated to cover each other's issues. The AI has a context of 6 messages and will reply until the 4th message from the user. [Example](https://huggingface.co/deepparag/Aeona - Beta/discussions/1)
Tips for Hugging Face interference
It is recommended to send the user input and the previous 3 AI and human responses. Using more context will lead to useless responses, while using less is okay but the responses may be random.
Evaluation
Below is a comparison of Aeona vs. other baselines on the mixed dataset using automatic evaluation metrics.
Model |
Perplexity |
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 |
đ License
This project is licensed under the MIT license.
đĄ Usage Tip
Participate and help the AI improve or just hang out at hugging face discussions.