|
--- |
|
base_model: |
|
- tiiuae/Falcon3-3B-Instruct-1.58bit |
|
tags: |
|
- Repair |
|
- Code |
|
- Test |
|
- Test-case-generation |
|
- Code-Repair |
|
--- |
|
|
|
# Falcon3-3B-Instruct-RL-CODE-FIX |
|
|
|
This repository hosts the **Falcon3-3B-Instruct-RL-CODE-FIX** model — a fine-tuned version of [Falcon3-3B-Instruct](https://huggingface.co/tiiuae/falcon3-3b-instruct), trained using **GRPO (Group Relative Policy Optimization)** to solve programming tasks in the context of automatic program repair. |
|
|
|
## 🛠️ Model Purpose |
|
|
|
This model is designed to: |
|
- **Understand buggy code snippets** |
|
- **Propose test cases that expose the bugs** |
|
- **Generate fixed versions of the code** |
|
|
|
It is particularly useful for: |
|
- **Code contests** |
|
- **Automated debugging** |
|
- **Education and code quality assurance** |
|
|
|
## 🧠 Training Details |
|
|
|
- **Base model**: Falcon3-3B-Instruct |
|
- **Method**: GRPO |
|
- **Dataset**: Custom dataset of buggy code + test cases + fixes |
|
- **Objective**: Improve model reasoning over structured code repair tasks |
|
|
|
## 🚀 Usage Example |
|
|
|
```python |
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
|
faulty =""" |
|
def add (x, y): |
|
\"\"\"return sum of x and y\"\"\" |
|
return x * y |
|
""" |
|
|
|
|
|
PROGRAM_REPAIR_TEMPLATE = f""" |
|
You are an expert in the field of software testing. |
|
You are given a buggy Python program, you are supposed to first generate testcases that can expose the bug, |
|
and then generate the corresponding fixed code. The two tasks are detailed as follows. |
|
|
|
1. **Generate a comprehensive set of test cases to expose the bug**: |
|
- Each test case should include an input and the expected output. |
|
- Output the test cases as a JSON list, where each entry is a dictionary with keys `"test_input"` and `"test_output"`. |
|
- Write in ```json ``` block. |
|
|
|
2. **Provide a fixed version**: |
|
- Write a correct Python program to fix the bug. |
|
- Write in ```python ``` block. |
|
- The code should read from standard input and write to standard output, matching the input/output format specified in the problem. |
|
|
|
Here is an example. |
|
The faulty Python program is: |
|
\`\`\`python |
|
\"\"\"Please write a Python program to sum two integer inputs\"\"\" |
|
def add (x, y): |
|
return x - y |
|
x = int(input()) |
|
y = int(input()) |
|
print(add(x,y)) |
|
\`\`\` |
|
|
|
Testcases that can expose the bug: |
|
\`\`\`json |
|
[ |
|
{{ |
|
\"test_input\":\"1\n2\", |
|
\"test_output\":\"3\" |
|
}}, |
|
{{ |
|
\"test_input\":\"-1\n1\", |
|
\"test_output\":\"0\" |
|
}}, |
|
{{ |
|
\"test_input\":\"-1\n2\", |
|
\"test_output\":\"1\" |
|
}} |
|
] |
|
\`\`\` |
|
|
|
Fixed code: |
|
\`\`\`python |
|
def add (x, y): |
|
return x + y |
|
x = int(input()) |
|
y = int(input()) |
|
print(add(x,y)) |
|
\`\`\` |
|
|
|
Now, you are given a faulty Python function, please return: |
|
1. **Testcases** that helps expose the bug. |
|
2. **Fixed code** that can pass all testcases. |
|
|
|
The faulty function is: |
|
\`\`\`python |
|
{faulty} |
|
\`\`\` |
|
<|assistant|> |
|
""" |
|
|
|
model = AutoModelForCausalLM.from_pretrained( |
|
"Neo111x/Falcon3-3B-Instruct-RL-CODE-RL", |
|
trust_remote_code=True |
|
) |
|
tokenizer = AutoTokenizer.from_pretrained( |
|
"Neo111x/Falcon3-3B-Instruct-RL-CODE-RL", |
|
trust_remote_code=True |
|
) |
|
|
|
messages = [ |
|
{"role": "user", "content": PROGRAM_REPAIR_TEMPLATE} |
|
] |
|
text = tokenizer.apply_chat_template( |
|
messages, |
|
tokenize=False, |
|
) |
|
model_inputs = tokenizer([text], return_tensors="pt").to(model.device) |
|
|
|
generated_ids = model.generate( |
|
**model_inputs, |
|
max_new_tokens=512 |
|
) |
|
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=True)[0] |
|
print(response) |
|
``` |