Inspiration

I generally use LLMs to learn new things, and find the conversational aspect very helpful. I think lots of new people will need in the future to learn how to code, both at school and for retraining for new jobs. There is a shortage of coding professors, but LLMs are quite competent at coding, so we could use them to fill the gap

What it does

The tutor agent gives hints to the student on how to solve programming problems, and validates if their solutions are correct and as good as the reference solution provided by the professor The grading agent looks at the conversation between the student and the tutor agent. It summarises if the student managed to solve the problem, and any difficulties it faced, so that the human professor can get insights into the aspects their students are struggling the most

How we built it

We used Streamlit for the app, and Langchain for defining the agents (and Langsmith for monitoring our agents behaviour)

Challenges we ran into

  • We didn't manage to add tools consistently to our agents via Anthropic Functions in Langchain
  • We had to rethink how to give instructions to our agents without a System Prompt, but rather using the Human: Assistant: format that Claude uses.

Accomplishments that we're proud of

  • We managed to get the grader and tutor agent to behave correctly, via prompt engineering and post processing
  • We managed to build a Streamlit app out of the project, in such a way that in principle could handle more problems added to it.

What we learned

  • How to do prompt engineering with Claude, and how to use Langchain and Langsmith more broadly

What's next for Code Tutor

  • Manage to add tools (especially a Python interpreter) to out tutor agent, so that it can run the students code against example cases
  • Build the app better, with a dedicated space for the professor and a dedicated space for the students
  • Stop the graded sons in a DB and add visualisation on top of them for the professor to see

Built With

  • langchain
  • langsmith
  • python
  • streamlit
Share this project:

Updates