Some additional notes:
1. Occasionally I will get a locking error on the SQL lite database. It doesn't seem to actually affect anything, but surely it's not ideal
2. Sometimes, for whatever reason no human message is appended to the end, which makes the llm think you are trying to coach it by having an assistant message as the last message in the list so I had to account for that in my message orientation function