in evaluation/utils.py [0:0]
def construct_prompt(example, data_name, args):
if args.adapt_few_shot and data_name in [
"gaokao2024_I",
"gaokao2024_II",
"gaokao_math_qa",
"gaokao2024_mix",
"cn_middle_school",
]:
demos = load_prompt(data_name, args.prompt_type, 5)
else:
demos = load_prompt(data_name, args.prompt_type, args.num_shots)
prompt_type = args.prompt_type
if prompt_type == "platypus_fs":
prompt_type = "cot"
if prompt_type == "tool-integrated":
prompt_type = "tora"
prompt_temp = PROMPT_TEMPLATES[args.prompt_type]
splitter = prompt_temp[2]
input_template, output_template, splitter = (
prompt_temp[0],
prompt_temp[1],
prompt_temp[2],
)
if args.prompt_type == "qwen25-math-cot":
# Hotfix to support putting all demos into a single turn
demo_prompt = splitter.join([q + "\n" + a for q, a in demos])
else:
demo_prompt = splitter.join(
[
input_template.format(input=q) + output_template.format(output=a)
for q, a in demos
]
)
context = input_template.format(input=example["question"])
if len(demo_prompt) == 0 or (
args.adapt_few_shot and example["gt_ans"] not in ["A", "B", "C", "D", "E"]
):
full_prompt = context
else:
if args.prompt_type == "qwen25-math-cot":
# Hotfix to supportting put all demos into a single turn
full_prompt = demo_prompt + splitter + example["question"]
full_prompt = input_template.format(input=full_prompt)
else:
full_prompt = demo_prompt + splitter + context
if args.prompt_type == "platypus_fs":
full_prompt_temp = (
"Below is an instruction that describes a task. "
"Write a response that appropriately completes the request.\n\n"
"### Instruction:\n{instruction}\n\n### Response:\n"
)
full_prompt = full_prompt_temp.format(instruction=full_prompt)
if prompt_type == "tora":
full_prompt = (
"""Integrate step-by-step reasoning and Python code to solve math problems using the following guidelines:
- Analyze the question and write functions to solve the problem; the function should not take any arguments.
- Present the final result in LaTeX using a `\boxed{}` without any units.
- Utilize the `pi` symbol and `Rational`` from Sympy for $\pi$ and fractions, and simplify all fractions and square roots without converting them to decimal values.
Here are some examples you may refer to:
---
"""
+ full_prompt
)
return full_prompt.strip(" ") # important!