from langchain import LLMChain from langchain.prompts import PromptTemplate from omegaconf import OmegaConf import datetime MODEL_SELECTION_PROMPT_TEMPLATE = """ Select one of the following models based on the given concept. You must choose one model name based on the description of each model and the concept! Cencept: {concept} Model name and description: {model_list} Warning: {warning} The avilable model names: {model_name_list} Selected model name: """ def load_model_list(): models_config = OmegaConf.load('resources/models.yaml') models_dict = models_config['models'] model_name_list_str = '' print(models_dict) model_list_str = '' for key, value in models_dict.items(): model_list_str+="model name: " +key+', model description: '+value['desc']+'\n' model_name_list_str += key + ' ' model_name_list_str += '\n' return model_list_str, models_dict, model_name_list_str def model_selection_chain(llm, class_concept=None): chain = None memory = None if llm: print("class_concept", class_concept) if class_concept is None: class_concept = 'AI assistant' template = PromptTemplate( input_variables=["model_list", "concept", "warning", "model_name_list"], template=MODEL_SELECTION_PROMPT_TEMPLATE, ) model_list_str, models_dict, model_name_list_str = load_model_list() personality_chain = LLMChain( llm=llm, prompt=template, verbose=True) selected_model = None while (selected_model is None) or not (selected_model in models_dict): if (selected_model is not None) and not (selected_model in models_dict): warning_str = '{} is not in Model list! \n'.format(selected_model) else: warning_str = '' selected_model = personality_chain.run({'concept': class_concept, 'model_list':model_list_str, 'warning': warning_str, 'model_name_list': model_name_list_str}) print("Selected model name: ", selected_model) return models_dict[selected_model]