File size: 2,117 Bytes
d9d1d8d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import re
import requests
from tqdm import tqdm
from model import ask
from agentgen import create_image
from tools import *

if not os.path.exists("agent"):
    os.makedirs("agent")

def save_to_file(filename, file_content):

    if not filename.startswith("agent/"):
        filename = os.path.join("agent", filename)
    os.makedirs(os.path.dirname(filename), exist_ok=True)

    print(f"Creating file: {filename}")

    with open(filename, "w", encoding="utf-8") as file:
        file.write(file_content)

    print(f"File {filename} created successfully.")

def parse_and_run(response):
    code_blocks = re.findall(r'```python(.*?)```', response, re.DOTALL)
    for block in tqdm(code_blocks, desc="Executing Code Blocks", unit="block"):
        code = block.strip()
        try:
            exec(code, globals())
        except Exception as e:
            print(f"\nError executing code block:\n{code}\n\nException: {e}")
    
    auto_detect_html_and_link_css()

def run_agent(task):
    build_robotstxt_file()
    build_license_file()
    build_css_file()
    
    system_prompt = f"""
You are an AI agent, your response must be in python code, using only the following functions:
save_to_file(filename,file_content)
create_image(filename, prompt)

save_to_file() saves a file with the given filename and content.
create_image() creates an image with the given filename and prompt. for example as prompt you can use "A beautiful landscape with mountains and a river", or any image you want.
Based on this task: {task}, make all the files. These are the files you need to create:
- A file named "index.html" with the HTML content.
- A file named "style.css" with the CSS content.
- A file named "script.js" with the JavaScript content or just console.log("app started") if no JS is needed.
- An image file named "logo.png" with the logo image.
- A README.md file with a description of the project and how to run it.
- Any other files you deem necessary for the project.

Your task is:
{task}
"""
    print("\nSending task to agent...\n")
    response = ask(system_prompt)
    parse_and_run(response)