mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-12 02:29:03 +08:00
Feat: optimize inner prompt (#121)
This commit is contained in:
parent
4779fcf6f1
commit
1b6e3ef964
@ -125,13 +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:
|
||||||
"If you don't know the answer, "
|
[CONTEXT]
|
||||||
"just say that you don't know, don't try to make up an answer. \n"
|
{context}
|
||||||
"```\n"
|
[END CONTEXT]
|
||||||
"[CONTEXT]\n"
|
|
||||||
"{context}\n"
|
When answer to user:
|
||||||
"```\n" if chain_output else "")
|
- 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 "")
|
+ (pre_prompt + "\n" if pre_prompt else "")
|
||||||
+ "{query}\n"
|
+ "{query}\n"
|
||||||
)
|
)
|
||||||
@ -153,38 +157,36 @@ 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)
|
||||||
|
|
||||||
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.
|
|
||||||
```
|
|
||||||
[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
|
|
||||||
|
|
||||||
if system_message:
|
|
||||||
messages.append(system_message)
|
messages.append(system_message)
|
||||||
|
|
||||||
human_inputs = {
|
human_inputs = {
|
||||||
"query": query
|
"query": query
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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}
|
||||||
|
[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.
|
||||||
|
|
||||||
|
Q:{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…
x
Reference in New Issue
Block a user