In order to build a simple model interface which can accommodate multiple model vendors (such as Cohere, OpenAI, Anthropic, etc) and also custom models, we need to implement some sort of ModelInterface builder which provides you with the vendor-specific prompting and initialization methods based on whatever provider you want to use. I had the factory strategy pattern in mind, open to suggestions though.