File size: 3,470 Bytes
971cb4b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
496fc07
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
971cb4b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import argparse
import json
import random


TEMPLATES = [
    {
        "instruction": "Fix the Python code",
        "input": "def add(a,b) return a+b",
        "output": "def add(a, b): return a + b",
        "explanation": "Added missing colon and corrected syntax.",
    },
    {
        "instruction": "Fix loop syntax",
        "input": "for i in range(5 print(i)",
        "output": "for i in range(5): print(i)",
        "explanation": "Added missing parenthesis and colon.",
    },
    {
        "instruction": "Fix condition",
        "input": "if x = 10: print(x)",
        "output": "if x == 10: print(x)",
        "explanation": "Corrected assignment to comparison operator.",
    },
    {
        "instruction": "Explain code",
        "input": "for i in range(3): print(i)",
        "output": "Prints numbers from 0 to 2.",
        "explanation": "Loop iterates from 0 to 2 and prints values.",
    },
    {
        "instruction": "Write a Python function",
        "input": "Create a function to multiply two numbers",
        "output": "def multiply(a, b):\n    return a * b",
        "explanation": "Defined a multiply function that returns the product of two inputs.",
    },
    {
        "instruction": "Write a Python function",
        "input": "Create a function to add two numbers",
        "output": "def add(a, b):\n    return a + b",
        "explanation": "Defined an add function that returns the sum of two inputs.",
    },
    {
        "instruction": "Write a Python function",
        "input": "Create a function to subtract two numbers",
        "output": "def subtract(a, b):\n    return a - b",
        "explanation": "Defined a subtract function that returns the difference between two inputs.",
    },
    {
        "instruction": "Write a Python function",
        "input": "Create a function to divide two numbers",
        "output": "def divide(a, b):\n    return a / b",
        "explanation": "Defined a divide function that returns the quotient of two inputs.",
    },
]


def format_training_text(template):
    target = {
        "code": template["output"],
        "explanation": template["explanation"],
    }
    return (
        f"Instruction: {template['instruction']}\n"
        f"Input: {template['input']}\n"
        "Return only valid JSON with keys code and explanation.\n"
        f"JSON: {json.dumps(target, ensure_ascii=False)}\n"
    )


def generate_sample():
    template = random.choice(TEMPLATES)
    text = format_training_text(template)
    return {
        "instruction": template["instruction"],
        "input": template["input"],
        "output": template["output"],
        "explanation": template["explanation"],
        "text": text,
        "confidence": round(random.uniform(0.9, 0.99), 2),
        "relevancy": round(random.uniform(0.85, 0.99), 2),
    }


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--size", type=int, default=8000)
    parser.add_argument("--out", type=str, default="train.json")
    args = parser.parse_args()

    if not (5000 <= args.size <= 10000):
        raise ValueError("size must be between 5000 and 10000")

    dataset = [generate_sample() for _ in range(args.size)]
    with open(args.out, "w", encoding="utf-8") as f:
        json.dump(dataset, f, indent=2)
    print(f"Dataset created: {len(dataset)} -> {args.out}")


if __name__ == "__main__":
    main()