""" This file implements prompt template for llama based models. Modify the prompt template based on the model you select. This seems to have significant impact on the output of the LLM. """ from langchain.memory import ConversationBufferMemory from langchain.prompts import PromptTemplate # this is specific to Llama-2. system_prompt = """You are a helpful assistant, you will use the context and documents provided in the training to answer users' questions. Read the context provided before answering questions and think step by step. If you can't answer a user's question based on the context provided, inform the user. Don't use any other information to answer the user. Provide a detailed answer to the question.""" def get_prompt_template(system_prompt=system_prompt, promptTemplate_type=None, history=False): if promptTemplate_type == "llama": B_INST, E_INST = "[INST]", "[/INST]" B_SYS, E_SYS = "<>\n", "\n<>\n\n" SYSTEM_PROMPT = B_SYS + system_prompt + E_SYS if history: instruction = """ Context: {history} \n {context} User: {question}""" prompt_template = B_INST + SYSTEM_PROMPT + instruction + E_INST prompt = PromptTemplate(input_variables=["history", "context", "question"], template=prompt_template) else: instruction = """ Context: {context} User: {question}""" prompt_template = B_INST + SYSTEM_PROMPT + instruction + E_INST prompt = PromptTemplate(input_variables=["context", "question"], template=prompt_template) elif promptTemplate_type == "mistral": B_INST, E_INST = "[INST] ", " [/INST]" if history: prompt_template = ( B_INST + system_prompt + """ Context: {history} \n {context} User: {question}""" + E_INST ) prompt = PromptTemplate(input_variables=["history", "context", "question"], template=prompt_template) else: prompt_template = ( B_INST + system_prompt + """ Context: {context} User: {question}""" + E_INST ) prompt = PromptTemplate(input_variables=["context", "question"], template=prompt_template) else: # change this based on the model you have selected. if history: prompt_template = ( system_prompt + """ Context: {history} \n {context} User: {question} Answer:""" ) prompt = PromptTemplate(input_variables=["history", "context", "question"], template=prompt_template) else: prompt_template = ( system_prompt + """ Context: {context} User: {question} Answer:""" ) prompt = PromptTemplate(input_variables=["context", "question"], template=prompt_template) memory = ConversationBufferMemory(input_key="question", memory_key="history") return ( prompt, memory, )