ChatLei / chat_anything /chatbot /model_select.py
akatukime's picture
Upload folder using huggingface_hub
d3fb87a
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]