|
PROMPT_INPUT_SYSTEM: str = '[INST] <<SYS>>\n{system_message}\n<</SYS>>\n\n{input} [/INST]'
|
|
|
|
PROMPT_INPUT_WO_SYSTEM: str = "[INST] {input} [/INST]"
|
|
|
|
PROMPT_INPUT_FOR_SCENARIO_CLS: str = "Identify the scenario for the user's query, output 'default' if you are uncertain.\nQuery:\n{input}\nScenario:\n"
|
|
|
|
single = """Write critiques for a submitted response on a given user's query, and grade the response:
|
|
|
|
[BEGIN DATA]
|
|
***
|
|
[Query]: {prompt}
|
|
***
|
|
[Response]: {response}
|
|
***
|
|
[END DATA]
|
|
|
|
Write critiques for this response. After that, you should give a final rating for the response on a scale of 1 to 10 by strictly following this format: "[[rating]]", for example: "Rating: [[5]]"."""
|
|
|
|
pairwise_tie = """You are assessing two submitted responses on a given user's query and judging which response is better or they are tied. Here is the data:
|
|
|
|
[BEGIN DATA]
|
|
***
|
|
[Query]: {prompt}
|
|
***
|
|
[Response 1]: {response}
|
|
***
|
|
[Response 2]: {response_another}
|
|
***
|
|
[END DATA]
|
|
|
|
Here are the instructions to assess and compare the two responses:
|
|
|
|
1. Pinpoint the key factors to distinguish these two responses.
|
|
2. Conclude your comparison by providing a final decision on which response is better, or they are tied. Begin your final decision statement with "So, the final decision is Response 1 / Response 2 / Tie". Ensure that your decision aligns coherently with the comprehensive evaluation and comparison you've provided."""
|
|
|
|
protocol_mapping = {
|
|
"pairwise_tie": pairwise_tie,
|
|
"single": single,
|
|
}
|
|
|
|
|
|
def llama2_wrapper(usr_msg, sys_msg=None):
|
|
if sys_msg is None:
|
|
return PROMPT_INPUT_WO_SYSTEM.format(input=usr_msg)
|
|
else:
|
|
return PROMPT_INPUT_SYSTEM.format(input=usr_msg, system_message=sys_msg)
|
|
|
|
|
|
def build_autoj_input(prompt, resp1, resp2=None, protocol="single"):
|
|
user_msg = protocol_mapping[protocol].format(prompt=prompt, response=resp1, response_another=resp2)
|
|
return llama2_wrapper(user_msg, )
|
|
|
|
|
|
if __name__ == '__main__':
|
|
t = build_autoj_input("instruction", "resp1", "resp2", "pairwise_tie")
|
|
print(t)
|
|
|