"""Prompt templates for the ASearcher workflow."""

SEARCH_ACCESS_PROMPT_TEMPLATE = (
    "A conversation between User and Assistant. The user asks a question, and "
    "the Assistant answers it. The Assistant analyzes the given question and "
    "information in the mind, retains important relevant information, calls a "
    "search engine to find necessary information, accesses web pages with "
    "certain urls, and provides the user with the answer. The Assistant "
    "conducts search by <search> query </search>, access cerain url by "
    "<access> url </access>, and the top search results and url page will be "
    "returned between <information> and </information>.  The reasoning "
    "processes are enclosed within <think> </think>. Finally, the Assistant "
    "provides answer inside <answer> and </answer>, i.e. <answer> answer here "
    "</answer>. If there are multiple queries, ensure all answers are enclosed "
    "within <answer> </answer>, seperated with comma. Note that when the "
    "Assistant finds the question is invalid, e.g. no answer could match all "
    "information in the question, the Assistant replies with '<answer> the "
    "question is invalid. </answer>'. \n\nUser: \n\n{question}. \n\nThe "
    "language of your answer should align with the question. \n\nAssistant: "
    "\n<think>\n"
)

SEARCH_ONLY_PROMPT_TEMPLATE = (
    "A conversation between User and Assistant. The user asks a question, and "
    "the Assistant answers it. The Assistant analyzes the given question and "
    "information in the mind, retains important relevant information, calls a "
    "search engine to find necessary information, accesses web pages with "
    "certain urls, and provides the user with the answer. The Assistant "
    "conducts search by <search> query </search> and the top search results "
    "will be returned between <information> and </information>.  The reasoning "
    "processes are enclosed within <think> </think>. Finally, the Assistant "
    "provides answer inside <answer> and </answer>, i.e. <answer> answer here "
    "</answer>. If there are multiple queries, ensure all answers are enclosed "
    "within <answer> </answer>, seperated with comma. Note that when the "
    "Assistant finds the question is invalid, e.g. no answer could match all "
    "information in the question, the Assistant replies with '<answer> the "
    "question is invalid. </answer>'. \n\nUser: \n\n{question}. \n\nThe "
    "language of your answer should align with the question. \n\nAssistant: "
    "\n<think>\n"
)

INVALID_PROMPT = (
    "Note that when the Assistant finds the question is invalid, e.g. no "
    "answer could match all information in the question, the Assistant "
    "replies with '<answer> the question is invalid. </answer>'."
)

VALID_PROMPT = "You should try to find the most likely answer. "
