File size: 3,968 Bytes
61bd818
 
 
1a83db9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
---

license: cc-by-sa-4.0
---


# Compare-Answer Model

Welcome to the repository for the Compare-Answer Model, an innovative tool designed to enhance the accuracy and efficiency of mathematical answer comparison tasks. This model leverages advanced techniques to provide precise comparisons across a wide range of mathematical problems.

## Features

- **High Accuracy**: Utilizes state-of-the-art technology to ensure high reliability in answer comparison.
- **Broad Compatibility**: Supports a variety of mathematical problem types and formats.
- **Easy Integration**: Designed for easy integration with existing systems and workflows.

## Installation

To get started with the Compare-Answer Model, clone this repository and load model with Transformers.

# Quick Start
To use the model, import it and call the main comparison function with the required parameters:
```python

from transformers import AutoModelForCausalLM, AutoTokenizer

device = "cuda"  # the device to load the model onto

model = AutoModelForCausalLM.from_pretrained(

    model_path, torch_dtype="auto", device_map="auto"

)

tokenizer = AutoTokenizer.from_pretrained(model_path)



def build_user_query(question, pred_answer, answer, base_prompt):

    input_text = base_prompt.replace("{{question}}", question)

    input_text = input_text.replace("{{pred_step}}", pred_answer)

    input_text = input_text.replace("{{answer}}", answer)

    input_text = input_text.replace("{{analysis}}", "") # default set analysis to blank, if exist, you can pass in the corresponding parameter.

    return input_text



chat_prompt = """<|im_start|>system

You are a helpful assistant.<|im_end|>

<|im_start|>human

{}<|im_end|>

<|im_start|>gpt

"""



basic_prompt = """## 任务描述\n\n你是一个数学老师,学生提交了题目的解题步骤,你需要参考`题干`,`解析`和`答案`,判断`学生解题步骤`的结果是否正确。忽略`学生解题步骤`中的错误,只关注最后的答案。答案可能出现在`解析`中,也可能出现在`答案`中。\n\n## 输入内容\n\n题干:\n\n```\n{{question}}\n```\n\n解析:\n\n```\n{{analysis}}\n\n```\n\n答案:\n\n```\n{{answer}}\n```\n\n学生解题步骤:\n\n```\n{{pred_step}}\n```\n\n输出:"""

base_prompt = chat_prompt.format(basic_prompt)



def build_user_query(question, pred_answer, answer, base_prompt):

    input_text = base_prompt.replace("{{question}}", question)

    input_text = input_text.replace("{{pred_step}}", pred_answer)

    input_text = input_text.replace("{{answer}}", answer)

    input_text = input_text.replace("{{analysis}}", "") # default set analysis to blank, if exist, you can pass in the corresponding parameter.

    return input_text



prompt = build_user_query("1+1=", "3", "2", base_prompt)



model_inputs = tokenizer([prompt], return_tensors="pt").to(device)



generated_ids = model.generate(model_inputs.input_ids, temperature=0, max_new_tokens=16, eos_token_id=100005)

generated_ids = [

    output_ids[len(input_ids) :]

    for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)

]



response = tokenizer.batch_decode(generated_ids, skip_special_tokens=False)[0]

```

## Documentation
For more detailed information about the model's API and functionalities, please contact us.

# Contributing
Contributions to the Compare-Answer Model are welcome! If you have suggestions or improvements, please fork the repository and submit a pull request.

# License
This project is licensed under the MIT License - see the LICENSE.md file for details.

# Acknowledgements
Thanks to all contributors who have helped in developing this model.
Special thanks to MathEval for providing the datasets and challenges that inspired this project.

# Contact
For any inquiries, please reach out via email at liutianqiao1@tal.com or open an issue in this repository.

Thank you for using or contributing to the Compare-Answer Model!