LorisPolenz / semantIQ

SemantIQ
0 stars 1 forks source link

Sumission doc and video #5

Open fela opened 1 year ago

LorisPolenz commented 1 year ago

@fela @amoeri Need accounts at devpost.com. I then can add the E-Mails to the project. Put them here as comments

https://hackzurich23.devpost.com/

amoeri commented 1 year ago

alex.moeri@gmail.com https://devpost.com/alexmoeri

LorisPolenz commented 1 year ago

Inspiration

Our goal was to create something cool and interesting. We wanted to create something we would use ourselves, either professionally or in private with friends or alone. Someone in the team then came up with the idea of a word game, which is inspired by worldle. With this basis, it did not take us long to come up with the name SemantIQ.

What it does

SemantIQ is a game created to have fun, either alone or with friends. As a user, you get 8 words, four of those are positive and four are negative. The goal is to find a word that is as closely related to the positive words as possible. On the other side, the same word should be as far as possible related to the negative words.

After submitting the word, ChatGPT is asked to list the words sorted by how much they relate to the entered word. The first value is the most related to the entered word and the last value is the least related, according to ChatGPT.

We then take a look at the first four values of the array and count the positive words in there. Based on that, a score between 0 and 4 is generated.

It is fun to think about how many new ideas LLMs enable. This and many LLM-based projects would never have been possible with such a small team in so little time even just one year ago, the required tech didn't exist yet!

How we built it

SemantIQ was built using a Flask backend connected to the ChatGPT 4.0 API. The words that are shown to the user were generated manually and account for 400 words. On the front end side, a React Frontend was built to show how the game works, entering the word and a result screen showing how the user performed. For some more insight, each API call is logged to Elasticsearch, with some small visualizations on Kibana about the words entered or requests made.

Challenges we ran into

Initially, we planned to create the frontend using React and Next.js. However, this did not turn out as planned, and we had to rebuild the Next.js part with React.

We also experimented with using distances in embedding space to determine how related words are, but this did not work well enough. We really did need GPT. The embeddings were however good enough to exclude some particularly difficult puzzles that had very similar words in the negative and positive groups. We used this to improve our puzzle generation script and make sure all puzzles are fun.

Accomplishments that we're proud of

As a team, we were very sure what we wanted to do after a short time. We created a small cli prototype with the basic concept of the game and already had a lot of fun playing the game. Getting right to something we all like and think is a good idea for sure was a big win for the team.

What we learned

It took us about 30 minutes to create an MVP for the idea. A prototype which truly came to the promise of a minimal viable product. Using the cli we could play the game and evaluate if the mechanic is as fun as we thought. This experience enhanced our understanding of the importance of prototyping.

What's next for SemantIQ

SemantIQ as a project is deployed and can be used by users worldwide. Just like every game, SemantIQ could be enhanced with a leaderboard or other game modes. Tuning a different model based on our ChatGPT data might make the game cheaper to scale.

LorisPolenz commented 1 year ago

Feedback welcome @fela @amoeri