|
""" |
|
Custom Langchain prompt templates |
|
""" |
|
|
|
from langchain.prompts import PromptTemplate |
|
|
|
|
|
def create_qa_prompt() -> PromptTemplate: |
|
""" |
|
Prompt for retrieval QA chain |
|
""" |
|
|
|
template = """\n\nHuman: Use the following pieces of context to answer the question at the end. If answer is not clear, say I DON"T KNOW |
|
|
|
{context} |
|
|
|
Question: {question} |
|
|
|
\n\nAssistant: |
|
Answer:""" |
|
|
|
return PromptTemplate(template=template, input_variables=["context", "question"]) |
|
|
|
|
|
def create_agent_prompt() -> PromptTemplate: |
|
""" |
|
Prompt for the agent |
|
""" |
|
|
|
prefix = """\n\nHuman: Answer the following questions as best you can. You have access to the following tools:""" |
|
|
|
format_instructions = """Use the following format: |
|
|
|
Question: the input question you must answer |
|
Thought: you should always think about what to do |
|
Action: the action to take, should be one of [{tool_names}] |
|
Action Input: the input to the action |
|
Observation: the result of the action |
|
... (this Thought/Action/Action Input/Observation can repeat N times) |
|
Thought: Answer is not possible. Let's use other [{tool_names}] |
|
Thought: I now know the final answer |
|
Final Answer: the final answer to the original input question""" |
|
|
|
suffix = """Begin! |
|
Question: {input} |
|
\n\nAssistant: |
|
Thought: {agent_scratchpad} |
|
""" |
|
|
|
return prefix, format_instructions, suffix |
|
|