Our previous version of the AI leveraged the idea of breaking down knowledge into concepts and ideas and applying them through a graph. However, this approach was limiting since computations didn't always take a linear approach and concepts were often too interwoven with no clear start and end. Additionally there was the necessity to handle diagrams and equations as well.
With this in mind we decided to iterate on our approach and create a mechanism that allows us the flexibility to handle each question with a unique approach.
### Ideas
Similar to our previous approach our process is to break down each topic into a list of ideas. The list of concepts could vary by question and answering these questions would reflect a clear conceptual understanding of the topic.
### Checking for Completeness and Correctness
Our previous approach created two agents for completeness and correctness but here we have combined them in to one. Given that each question has a lesser number of ideas than concepts and are being processed parallelly one GPT call allows us to check for both.
For each input from the user we check if the list of ideas in the explanation is - correct, incorrect, or not present in the explanation.
### Reasoning
Once we have a list of ideas and whether they are correct, incorrect or incomplete we create a decision tree on how the AI should respond. This decision tree can be generated by an AI or manually depending on the how capable the AI is in those concepts.
### Evaluation
For each particular case evaluation happens with the help of SymPy. Our inputs are separated as explanation and formula and this allows us to evaluate the formula depending based on the case in the decision tree we arrive at in reasoning.