File size: 2,098 Bytes
d2e0b37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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

import os

class SelfCodingAI:
    def __init__(self, name="SelfCoder", code_folder="generated_code"):
        self.name = name
        self.code_folder = code_folder
        os.makedirs(self.code_folder, exist_ok=True)

    def generate_code(self, task_description):
        """
        Very basic code generation logic: generates code for some predefined tasks.
        You can extend this to integrate GPT-like models or complex code synthesis.
        """
        if "hello world" in task_description.lower():
            code = 'print("Hello, world!")'
        elif "factorial" in task_description.lower():
            code = (
                "def factorial(n):\n"
                "    return 1 if n==0 else n * factorial(n-1)\n\n"
                "print(factorial(5))"
            )
        else:
            code = "# Code generation for this task is not implemented yet.\n"

        return code

    def save_code(self, code, filename="generated_code.py"):
        filepath = os.path.join(self.code_folder, filename)
        with open(filepath, "w", encoding="utf-8") as f:
            f.write(code)
        print(f"Code saved to {filepath}")
        return filepath

    def self_improve(self, feedback):
        """
        Placeholder for self-improvement method.
        In future, AI could modify its own code based on feedback or test results.
        """
        print(f"{self.name} received feedback: {feedback}")
        print("Self-improvement not yet implemented.")

    def run_code(self, filepath):
        print(f"Running code from {filepath}:\n")
        try:
            with open(filepath, "r", encoding="utf-8") as f:
                code = f.read()
            exec(code, {})
        except Exception as e:
            print(f"Error during code execution: {e}")

# Example usage
ai = SelfCodingAI()

task = "Write a factorial function in Python"
generated = ai.generate_code(task)

file_path = ai.save_code(generated, "factorial.py")
ai.run_code(file_path)

# Example of self-improvement placeholder call
ai.self_improve("The factorial function passed all test cases.")