feat: optimize chat mode prompt to human message

pull/121/head
John Wang 3 years ago
parent 8250c9fce0
commit 258d139420

@ -125,15 +125,17 @@ class Completion:
pre_prompt = PromptBuilder.process_template(pre_prompt) if pre_prompt else pre_prompt pre_prompt = PromptBuilder.process_template(pre_prompt) if pre_prompt else pre_prompt
if mode == 'completion': if mode == 'completion':
prompt_template = OutLinePromptTemplate.from_template( prompt_template = OutLinePromptTemplate.from_template(
template=("Use the following pieces of CONTEXT to answer the question at the end. " template=("""Use the following CONTEXT as your learned knowledge:
"You MUST refrain from using the word CONTEXT at all, and MUST only consider " [CONTEXT]
"the information within your original memory as the CONTEXT, " {context}
"without letting the user perceive that you have referenced any CONTEXT!\n" [END CONTEXT]
"If you don't know the answer, "
"just say that you don't know, don't try to make up an answer. \n\n" When answer to user:
"[CONTEXT]\n" - If you don't know, just say that you don't know.
"{context}\n" - If you don't know when you are not sure, ask for clarification.
"[/CONTEXT]\n" if chain_output else "") 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 "") + (pre_prompt + "\n" if pre_prompt else "")
+ "{query}\n" + "{query}\n"
) )
@ -155,40 +157,37 @@ class Completion:
else: else:
messages: List[BaseMessage] = [] messages: List[BaseMessage] = []
system_message = None
if pre_prompt: if pre_prompt:
# append pre prompt as system message # append pre prompt as system message
system_message = PromptBuilder.to_system_message(pre_prompt, inputs) system_message = PromptBuilder.to_system_message(pre_prompt, inputs)
messages.append(system_message)
if chain_output: human_inputs = {
# append context as system message, currently only use simple stuff prompt "query": query
context_message = PromptBuilder.to_system_message( }
"""Use the following pieces of CONTEXT to answer the user's question.
You MUST refrain from using the word CONTEXT at all, and MUST only consider the information within your \
original memory as the CONTEXT, without letting the user perceive that you have referenced any CONTEXT!
If you don't know the answer, just say that you don't know, don't try to make up an answer.
human_message_prompt = "{query}"
if chain_output:
human_inputs['context'] = chain_output
human_message_prompt = """Use the following CONTEXT as your learned knowledge.
[CONTEXT] [CONTEXT]
{context} {context}
[/CONTEXT]""", [END CONTEXT]
{'context': chain_output}
)
if not system_message: When answer to user:
system_message = context_message - If you don't know, just say that you don't know.
else: - If you don't know when you are not sure, ask for clarification.
system_message.content = context_message.content + "\n\n" + system_message.content Avoid mentioning that you obtained the information from the context.
And answer according to the language of the user's question.
if system_message:
messages.append(system_message)
human_inputs = { Q:{query}
"query": query A:
} """
# construct main prompt # construct main prompt
human_message = PromptBuilder.to_human_message( human_message = PromptBuilder.to_human_message(
prompt_content="{query}", prompt_content=human_message_prompt,
inputs=human_inputs inputs=human_inputs
) )

Loading…
Cancel
Save