Inspiration
Many of the UC Berkeley classes lack study resources for tests, making the most efficient way to study either reading through past lecture notes or re-watching lectures. This is an inefficient use of time, as it is easy to zone out or memorize individual words, without actually understanding the underlying story of how the concepts intertwine together. We wanted to save students time and increase targeted conceptual understanding of topics by creating flashcards that can cater to individual students' needs.
What it does
Our flashcards intentionally connect the given word to other words that are related to the notes to show connections and help create a mind map for the student. A student is given a word and can attempt to write out a definition of the word. Our program will then tell the student if their explanation showed strong understanding and provide the user with the correct answer or additional information that was pulled from the note. When the user gets the problem correct, the definition is changed slightly for the next round, so that the user is understanding the concept in different contexts and not just relying on pure memorization.
How we built it
Our project was split into using prompt engineering with Openai to create the flashcard inputs in python scripts and building out the web app in react to have a usable and sleek UI/UX. We started the process by downloading 15+ different sample notes from various classes and playing with them in the Open AI playground to see identify the best prompts for getting a reasonable number of flashcards covering all the significant topics. We then created the prompt and organized the data to take in the prompt and output never ending list of cards. Lastly, we worked on the web app to be able to serve our target population in an efficient and effective manner.
Challenges we ran into
As it was the first web app any of us had ever built, there was a steep learning curve to figuring out how we could access the data that was produced in the python notebooks and bring it into the web app outputs. The prompt generation system needs to be integrated seamlessly with the web app's user interface, ensuring that prompts are generated and displayed correctly and in a timely manner. The accuracy of the prompts generated by the system depends heavily on the quality and quantity of data used to train the model, which varied in quality due to different class structures and note-taking styles. We needed to collect and prepare a substantial amount of data before we could create an accurate and reliable prompt generation system, which was a tedious process that was not easily optimized.
Accomplishments that we're proud of
We came to Tree Hacks with the intention of learning something new, and we definitely accomplished that. The prompt engineering workshop with Mem helped us learn what prompt engineering was and then being able to play with natural language processing and get our prompts to run on our dataset. Also, just being able to have a final project and debugging all the weird connections took a really long time.
What we learned
A LOT. We learned about prompt engineering and web development, as well as jsons, react, and javascript. We also learned about the process of ideating, as this was our first hackathon and it was really fun to come up with ideas and talk to mentors and other hackers.
What's next for Flash GPT
The next evolution of Flash GPT will be able to better create new flashcards with optimized prompts. It will also be able to create practice tests catered to misconceptions that the students were having in their answers to definitions and keep a running point total that makes it more fun and game-like.
Built With
- gpt
- javascript
- notebook
- openai
- python
- react
Log in or sign up for Devpost to join the conversation.