Browse Source

Feat: optimize inner prompt (#121)

John Wang 1 năm trước cách đây
mục cha
commit
1b6e3ef964
1 tập tin đã thay đổi với 29 bổ sung27 xóa
  1. 29 27
      api/core/completion.py

+ 29 - 27
api/core/completion.py

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