Buddy

Inspiration

We believe that it is best if the highest quality CS and technology education should be available on the internet for everyone to access and learn from. Platforms such as Coursera and Edx make great progress towards this goal by providing great lecture and pset style classes. One thing that is missing from these educational platforms however is practicing the skill of collaborating with others to build a larger scale project. These are the type of projects we have learned the most from in our own CS journeys. But unfortunately we have only been able to have these experiences at hackathons like this and guided projects in college classes. Working on a great/well structured guided project with other students shouldn't be so rare especially when it is one of the most beneficial things to do when learning CS topics. Buddy aims to provide a platform where learners can form teams and do great guided projects with plenty of support as well.

What it does

Buddy is a platform where learners can embark on guided projects with other collaborators if they choose. It gives user's a less overwhelming experience when learning a new language or working with technologies they have never dealt with before. This project was inspired by Build-Your-Own-X. The key features which make this app an improvement to education platforms out there is

How we built it

We used LangChain, MongoDB, Flask, Python, JavaScript, HTML, and CSS to create the client to server communication.

Challenges we ran into

Getting the frontend to merge in with the backend was complicated. Unfortunately we didn't have time to fix this issue. Time management for module completion was another obstacle.

We also had difficulty figuring out how we would enable llm chatting on the platform as well as keeping memory of the conversation in the llm instance. We first had to consider what we even wanted -- did we want chatgpt style where you can always go back to your previous conversation or does the conversation memory die after the conversation is over. We decided to definitely enable memory during a conversation but holding prior conversation data was not necessary right now. The best way we could think of doing this was creating a separate server for handling chat queries which stored the conversation memory for the duration of the client-server session.

Accomplishments that we're proud of

Ability to communicate when unsure of an issue. We worked as a team to tackle more of the backend concerns.

What we learned

Not to get stuck on the smaller things. Focus on the minimum viable product.

On the technical side -- this was our first time working with langchain, and using the github API, as well as oauth as a more general concept. It was very interesting to learn about the powerful tool of prompt engineering in applications.

This was also the first hackathon for 2 of 3 members of this group, and we had a lot of fun!

What's next for Buddy

We hope to finish up the UI to make it look nicer.

Additionally, the langchains approach works great with smaller repositories but as the repo size gets larger this feature of being able to chat with the repo will become even more valuable although this does not work great right now. To enable speaking to large repos we plan to create embeddings of the entire codebase and store the them in a pinecone vector database and then we can significantly reduce the search time for each question because the embeddings of the codebase will allow the the LLM to parse a shorter and most relevant segment of the codebase instead of the entire thing to start answering.

Share this project:

Updates