|  | @@ -23,7 +23,7 @@ from core.memory.read_only_conversation_token_db_buffer_shared_memory import \
 | 
	
		
			
				|  |  |  from core.memory.read_only_conversation_token_db_string_buffer_shared_memory import \
 | 
	
		
			
				|  |  |      ReadOnlyConversationTokenDBStringBufferSharedMemory
 | 
	
		
			
				|  |  |  from core.prompt.prompt_builder import PromptBuilder
 | 
	
		
			
				|  |  | -from core.prompt.prompt_template import OutLinePromptTemplate
 | 
	
		
			
				|  |  | +from core.prompt.prompt_template import JinjaPromptTemplate
 | 
	
		
			
				|  |  |  from core.prompt.prompts import MORE_LIKE_THIS_GENERATE_PROMPT
 | 
	
		
			
				|  |  |  from models.model import App, AppModelConfig, Account, Conversation, Message
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -35,6 +35,8 @@ class Completion:
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  |          errors: ProviderTokenNotInitError
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  | +        query = PromptBuilder.process_template(query)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          memory = None
 | 
	
		
			
				|  |  |          if conversation:
 | 
	
		
			
				|  |  |              # get memory of conversation (read-only)
 | 
	
	
		
			
				|  | @@ -141,18 +143,17 @@ class Completion:
 | 
	
		
			
				|  |  |                              memory: Optional[ReadOnlyConversationTokenDBBufferSharedMemory]) -> \
 | 
	
		
			
				|  |  |              Tuple[Union[str | List[BaseMessage]], Optional[List[str]]]:
 | 
	
		
			
				|  |  |          # disable template string in query
 | 
	
		
			
				|  |  | -        query_params = OutLinePromptTemplate.from_template(template=query).input_variables
 | 
	
		
			
				|  |  | -        if query_params:
 | 
	
		
			
				|  |  | -            for query_param in query_params:
 | 
	
		
			
				|  |  | -                if query_param not in inputs:
 | 
	
		
			
				|  |  | -                    inputs[query_param] = '{' + query_param + '}'
 | 
	
		
			
				|  |  | +        # query_params = JinjaPromptTemplate.from_template(template=query).input_variables
 | 
	
		
			
				|  |  | +        # if query_params:
 | 
	
		
			
				|  |  | +        #     for query_param in query_params:
 | 
	
		
			
				|  |  | +        #         if query_param not in inputs:
 | 
	
		
			
				|  |  | +        #             inputs[query_param] = '{{' + query_param + '}}'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        pre_prompt = PromptBuilder.process_template(pre_prompt) if pre_prompt else pre_prompt
 | 
	
		
			
				|  |  |          if mode == 'completion':
 | 
	
		
			
				|  |  | -            prompt_template = OutLinePromptTemplate.from_template(
 | 
	
		
			
				|  |  | +            prompt_template = JinjaPromptTemplate.from_template(
 | 
	
		
			
				|  |  |                  template=("""Use the following CONTEXT as your learned knowledge:
 | 
	
		
			
				|  |  |  [CONTEXT]
 | 
	
		
			
				|  |  | -{context}
 | 
	
		
			
				|  |  | +{{context}}
 | 
	
		
			
				|  |  |  [END CONTEXT]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  When answer to user:
 | 
	
	
		
			
				|  | @@ -162,16 +163,16 @@ Avoid mentioning that you obtained the information from the context.
 | 
	
		
			
				|  |  |  And answer according to the language of the user's question.
 | 
	
		
			
				|  |  |  """ if chain_output else "")
 | 
	
		
			
				|  |  |                           + (pre_prompt + "\n" if pre_prompt else "")
 | 
	
		
			
				|  |  | -                         + "{query}\n"
 | 
	
		
			
				|  |  | +                         + "{{query}}\n"
 | 
	
		
			
				|  |  |              )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if chain_output:
 | 
	
		
			
				|  |  |                  inputs['context'] = chain_output
 | 
	
		
			
				|  |  | -                context_params = OutLinePromptTemplate.from_template(template=chain_output).input_variables
 | 
	
		
			
				|  |  | -                if context_params:
 | 
	
		
			
				|  |  | -                    for context_param in context_params:
 | 
	
		
			
				|  |  | -                        if context_param not in inputs:
 | 
	
		
			
				|  |  | -                            inputs[context_param] = '{' + context_param + '}'
 | 
	
		
			
				|  |  | +                # context_params = JinjaPromptTemplate.from_template(template=chain_output).input_variables
 | 
	
		
			
				|  |  | +                # if context_params:
 | 
	
		
			
				|  |  | +                #     for context_param in context_params:
 | 
	
		
			
				|  |  | +                #         if context_param not in inputs:
 | 
	
		
			
				|  |  | +                #             inputs[context_param] = '{{' + context_param + '}}'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              prompt_inputs = {k: inputs[k] for k in prompt_template.input_variables if k in inputs}
 | 
	
		
			
				|  |  |              prompt_content = prompt_template.format(
 | 
	
	
		
			
				|  | @@ -195,7 +196,7 @@ And answer according to the language of the user's question.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if pre_prompt:
 | 
	
		
			
				|  |  |                  pre_prompt_inputs = {k: inputs[k] for k in
 | 
	
		
			
				|  |  | -                                     OutLinePromptTemplate.from_template(template=pre_prompt).input_variables
 | 
	
		
			
				|  |  | +                                     JinjaPromptTemplate.from_template(template=pre_prompt).input_variables
 | 
	
		
			
				|  |  |                                       if k in inputs}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if pre_prompt_inputs:
 | 
	
	
		
			
				|  | @@ -205,7 +206,7 @@ And answer according to the language of the user's question.
 | 
	
		
			
				|  |  |                  human_inputs['context'] = chain_output
 | 
	
		
			
				|  |  |                  human_message_prompt += """Use the following CONTEXT as your learned knowledge.
 | 
	
		
			
				|  |  |  [CONTEXT]
 | 
	
		
			
				|  |  | -{context}
 | 
	
		
			
				|  |  | +{{context}}
 | 
	
		
			
				|  |  |  [END CONTEXT]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  When answer to user:
 | 
	
	
		
			
				|  | @@ -218,7 +219,7 @@ And answer according to the language of the user's question.
 | 
	
		
			
				|  |  |              if pre_prompt:
 | 
	
		
			
				|  |  |                  human_message_prompt += pre_prompt
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            query_prompt = "\nHuman: {query}\nAI: "
 | 
	
		
			
				|  |  | +            query_prompt = "\nHuman: {{query}}\nAI: "
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if memory:
 | 
	
		
			
				|  |  |                  # append chat histories
 | 
	
	
		
			
				|  | @@ -234,11 +235,11 @@ And answer according to the language of the user's question.
 | 
	
		
			
				|  |  |                  histories = cls.get_history_messages_from_memory(memory, rest_tokens)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  # disable template string in query
 | 
	
		
			
				|  |  | -                histories_params = OutLinePromptTemplate.from_template(template=histories).input_variables
 | 
	
		
			
				|  |  | -                if histories_params:
 | 
	
		
			
				|  |  | -                    for histories_param in histories_params:
 | 
	
		
			
				|  |  | -                        if histories_param not in human_inputs:
 | 
	
		
			
				|  |  | -                            human_inputs[histories_param] = '{' + histories_param + '}'
 | 
	
		
			
				|  |  | +                # histories_params = JinjaPromptTemplate.from_template(template=histories).input_variables
 | 
	
		
			
				|  |  | +                # if histories_params:
 | 
	
		
			
				|  |  | +                #     for histories_param in histories_params:
 | 
	
		
			
				|  |  | +                #         if histories_param not in human_inputs:
 | 
	
		
			
				|  |  | +                #             human_inputs[histories_param] = '{{' + histories_param + '}}'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  human_message_prompt += "\n\n" + histories
 | 
	
		
			
				|  |  |  
 |