| import sys, re | |
| from pathlib import Path | |
| from os import path | |
| sys.path.append(str(Path(__file__).parent.parent.parent)) | |
| import g4f | |
| def read_code(text): | |
| if match := re.search(r"```(python|py|)\n(?P<code>[\S\s]+?)\n```", text): | |
| return match.group("code") | |
| path = input("Path: ") | |
| with open(path, "r") as file: | |
| code = file.read() | |
| prompt = f""" | |
| Improve the code in this file: | |
| ```py | |
| {code} | |
| ``` | |
| Don't remove anything. | |
| Add typehints if possible. | |
| Don't add any typehints to kwargs. | |
| Don't remove license comments. | |
| """ | |
| print("Create code...") | |
| response = [] | |
| for chunk in g4f.ChatCompletion.create( | |
| model=g4f.models.default, | |
| messages=[{"role": "user", "content": prompt}], | |
| timeout=300, | |
| stream=True | |
| ): | |
| response.append(chunk) | |
| print(chunk, end="", flush=True) | |
| print() | |
| response = "".join(response) | |
| if code := read_code(response): | |
| with open(path, "w") as file: | |
| file.write(code) | |