Inspiration

Our interest in Machine Learning was personal, and we desired to learn more about the subject through experience. We also noticed that personal assistants, such as Siri and Google Assistant, while useful, rarely make good conversation partners. We thought that the introduction of Machine Learning could allow these assistants to interact with users in a more dynamic, intelligent, and personal way, and so we set out to build an assistant that was not only functional, but which used AI to interact with the user dynamically.

Of course, designing an all-purpose personal assistant while also using Machine Learning for the first time seemed unrealistically ambitious, so we decided to gear our assistant to a particular area. With the heavy ubiquity of cryptocurrency at UGAHacks 7, we thought that it would be a natural choice to gear the bot towards cryptocurrency.

The result? Two companion bots named Penny and Brainy.

What it does

Penny is a utility-oriented bot focused on providing the user with information about cryptocurrency based on commands. She can also parse text and use keywords to determine when the user might need help even when they aren't issuing a command.

Brainy is a social bot who can dynamically engage the user thanks to his Machine Learning background. Since his responses aren't pre-loaded, he can respond to nearly any message the user sends him. The result is a spontaneous and interesting robotic conversation partner.

Together, Penny and Brainy work together to provide the user with an interesting and useful personal assistant.

How we built it

We trained Brainy using Microsoft's DialoGPT for small chatbots. For training and testing data, we used Gulsah Demiryurek's Harry Potter database on Kaggle, as this database was readily available and well-suited towards our interests. We made use of the Machine Learning template provided by Lynn Zheng with FreeCodeCamp. We then deployed the model with Hugging Face.

Penny was created manually without the use of Machine Learning, and her responses were preloaded. We used the CoinGecko API to enable her to fetch information about cryptocurrency based on user inputs.

Both bots were built with python on Replit. We chose to use Discord as our interaction platform because it would allow us to easily reach a large number of potential users.

Challenges we ran into

This was our first time using Machine Learning, and the task did not come easily. Our first attempt at creating Brainy was a significant failure that sent us back to our starting point. After we were able to successfully train Brainy, deploying the then-completed model on Hugging Face was an unintuitive and error-laden process. Using the CoinGecko API was also tricky at first, and we had to completely rethink our approach to the task after the failure of our first attempt.

Accomplishments that we're proud of

Of course, we're proud of how much we have learned about Machine Learning. To have gone from knowing almost nothing to having generated a functioning AI chatbot with it was a pride-inspiring experience. When we got our fellow hackers to help us test the bots, it made us happy to see that they genuinely enjoyed talking to them. Other hackers even asked if they could try!

What we learned

Of course, we have learned much about Machine Learning and API's (though we still have much left to learn). We have also learned about how to use Google Colab, Replit, and Uptime Robot. More abstractly, we learned about project management, user experience, and conducting research to learn how to approach a problem you're unfamiliar with.

What's next for Penny and Brainy

First and foremost, we wish to re-train Brainy with a much larger and more comprehensive dataset. We would also like to train him using the Medium edition of DialoGPT (he was trained with the "small" edition) to expand the limit on his intelligence. More training epochs may also be desireable.

We would also like to combine Penny and Brainy into one bot. Making them two companion bots made sense for isolating their functionalities in a first-time attempt, but with this background established, we would like to combine them to truly maximize cohesion. We would also like to make Penny's command interpretation AI-based rather than being based on preloaded commands.

Built With

Share this project:

Updates