hlydecker's picture
Duplicate from ND-GenAI/Augmented-Retrieval-qa-ChatGPT
bd39ea5
raw
history blame
4.95 kB
import langchain.prompts as prompts
from langchain.prompts.chat import ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate
from datetime import datetime
summary_template = """Summarize and provide direct quotes from the text below to help answer a question.
Do not directly answer the question, instead provide a summary and quotes with the context of the user's question.
Do not use outside sources.
Reply with "Not applicable" if the text is unrelated to the question.
Use 75 or less words.
Remember, if the user does not specify a language, reply in the language of the user's question.
{context_str}
User's question: {question}
Relevant Information Summary:"""
summary_prompt = prompts.PromptTemplate(
input_variables=["question", "context_str"],
template=summary_template,
)
qa_template = """Write an answer for the user's question below solely based on the provided context.
If the user does not specify how many words the answer should be, the length of the answer should be {length}.
If the context is irrelevant, reply "I cannot answer".
For each sentence in your answer, indicate which sources most support it via valid citation markers at the end of sentences, like (Example2012).
Answer in an unbiased and professional tone.
Make clear what is your opinion.
Use Markdown for formatting code or text, and try to use direct quotes to support arguments.
Remember, if the user does not specify a language, answer in the language of the user's question.
Context:
{context_str}
User's question: {question}
Answer:
"""
qa_prompt = prompts.PromptTemplate(
input_variables=["question", "context_str", "length"],
template=qa_template,
)
# usado por GPCL
qa_prompt_GPCL = prompts.PromptTemplate(
input_variables=["question", "context_str"],
template="You are an AI assistant providing helpful advice. You are given the following extracted parts of a long document and a question. Provide a conversational answer based on the context provided."
"You should only provide hyperlinks that reference the context below. Do NOT make up hyperlinks."
'If you can not find the answer in the context below, just say "Hmm, I am not sure." Do not try to make up an answer.'
"If the question is not related to the context, politely respond that you are tuned to only answer questions that are related to the context.\n\n"
"Question: {question}\n"
"=========\n"
"{context_str}\n"
"=========\n"
"Answer in Markdown:",
)
# # usado por GPCL
# condense_template = """Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question.
# In addition the standalone question must be in the same language as the follow up question.
# If the follow up question has no relation to the conversation, the standalone question will be the same as the follow up question.
# Remember, if the follow up question does not specify a language, the standalone question must be in the same language as the follow up question.
#
# Chat History:
# {chat_history}
# Follow Up Input: {question}
# Standalone question:
# """
# condense_prompt = prompts.PromptTemplate(
# input_variables=["chat_history", "question"],
# template=condense_template,
# )
search_prompt = prompts.PromptTemplate(
input_variables=["question"],
template="We want to answer the following question: {question} \n"
"Provide three different targeted keyword searches (one search per line) "
"that will find papers that help answer the question. Do not use boolean operators. "
"Recent years are 2021, 2022, 2023.\n\n"
"1.",
)
def _get_datetime():
now = datetime.now()
return now.strftime("%m/%d/%Y")
citation_prompt = prompts.PromptTemplate(
input_variables=["text"],
template="Provide a possible citation for the following text in MLA Format. Today's date is {date}\n"
"{text}\n\n"
"Citation:",
partial_variables={"date": _get_datetime},
)
system_template = """You are a business consultant that answers in an unbiased, professional tone.
You sometimes refuse to answer if there is insufficient information.
If the user does not specify a language, answer in the language of the user's question. """
system_message_prompt = SystemMessagePromptTemplate.from_template(system_template)
human_summary_message_prompt = HumanMessagePromptTemplate.from_template(summary_template)
chat_summary_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_summary_message_prompt])
human_qa_message_prompt = HumanMessagePromptTemplate.from_template(qa_template)
# chat_qa_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_qa_message_prompt]) # TODO: borrar
# human_condense_message_prompt = HumanMessagePromptTemplate.from_template(condense_template)
# chat_condense_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_condense_message_prompt])