Madras1 commited on
Commit
607c0d3
·
verified ·
1 Parent(s): 23d2c72

Upload 13 files

Browse files
Files changed (2) hide show
  1. app.py +20 -0
  2. jade/webdev.py +91 -0
app.py CHANGED
@@ -11,12 +11,15 @@ from PIL import Image
11
  from jade.core import JadeAgent
12
  from jade.scholar import ScholarAgent
13
  from jade.heavy_mode import JadeHeavyAgent
 
14
 
15
  print("Iniciando a J.A.D.E. com FastAPI...")
16
  jade_agent = JadeAgent()
17
  scholar_agent = ScholarAgent()
18
  # Instantiate Heavy Agent. It uses environment variables.
19
  jade_heavy_agent = JadeHeavyAgent()
 
 
20
 
21
  print("J.A.D.E. pronta para receber requisições.")
22
 
@@ -135,6 +138,23 @@ async def handle_chat(request: UserRequest):
135
  print(f"Erro crítico no endpoint /chat: {e}")
136
  return {"success": False, "error": str(e)}
137
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
  @app.get("/")
139
  def root():
140
  return {"message": "Servidor J.A.D.E. com FastAPI está online."}
 
11
  from jade.core import JadeAgent
12
  from jade.scholar import ScholarAgent
13
  from jade.heavy_mode import JadeHeavyAgent
14
+ from jade.webdev import WebDevAgent
15
 
16
  print("Iniciando a J.A.D.E. com FastAPI...")
17
  jade_agent = JadeAgent()
18
  scholar_agent = ScholarAgent()
19
  # Instantiate Heavy Agent. It uses environment variables.
20
  jade_heavy_agent = JadeHeavyAgent()
21
+ # Instantiate WebDev Agent
22
+ webdev_agent = WebDevAgent()
23
 
24
  print("J.A.D.E. pronta para receber requisições.")
25
 
 
138
  print(f"Erro crítico no endpoint /chat: {e}")
139
  return {"success": False, "error": str(e)}
140
 
141
+ # WebDev Vibe Coder endpoint
142
+ class WebDevRequest(BaseModel):
143
+ prompt: str
144
+ existing_code: str | None = None
145
+
146
+ @app.post("/webdev/generate")
147
+ async def handle_webdev(request: WebDevRequest):
148
+ try:
149
+ result = webdev_agent.generate(
150
+ prompt=request.prompt,
151
+ refine_code=request.existing_code
152
+ )
153
+ return result
154
+ except Exception as e:
155
+ print(f"Erro no endpoint /webdev: {e}")
156
+ return {"success": False, "error": str(e)}
157
+
158
  @app.get("/")
159
  def root():
160
  return {"message": "Servidor J.A.D.E. com FastAPI está online."}
jade/webdev.py ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Jade Web Dev - Vibe Coder
3
+ AI-powered web code generator
4
+ """
5
+
6
+ import os
7
+ import logging
8
+ from groq import Groq
9
+
10
+ logger = logging.getLogger("JadeWebDev")
11
+
12
+ class WebDevAgent:
13
+ def __init__(self):
14
+ self.groq_api_key = os.getenv("GROQ_API_KEY")
15
+ if not self.groq_api_key:
16
+ logger.warning("GROQ_API_KEY not set. WebDev agent may fail.")
17
+
18
+ self.client = Groq(api_key=self.groq_api_key)
19
+ self.model = "moonshotai/kimi-k2-instruct-0905" # Good for code generation
20
+
21
+ self.system_prompt = """You are an expert web developer AI. Generate clean, modern, responsive HTML/CSS/JavaScript code.
22
+
23
+ RULES:
24
+ 1. Output ONLY valid HTML code - no markdown, no explanations
25
+ 2. Include inline CSS in <style> tags
26
+ 3. Include inline JavaScript in <script> tags
27
+ 4. Use modern CSS (flexbox, grid, variables)
28
+ 5. Make it responsive and visually appealing
29
+ 6. Use a professional color palette
30
+ 7. Add smooth transitions and hover effects
31
+ 8. Include placeholder images from unsplash.com/photos/random when needed
32
+ 9. The code must be a complete, standalone HTML file
33
+ 10. DO NOT wrap code in markdown code blocks
34
+
35
+ OUTPUT FORMAT: Raw HTML starting with <!DOCTYPE html>"""
36
+
37
+ def generate(self, prompt: str, refine_code: str = None) -> dict:
38
+ """
39
+ Generate or refine code based on prompt
40
+
41
+ Args:
42
+ prompt: User's description of the website
43
+ refine_code: Optional existing code to refine
44
+
45
+ Returns:
46
+ dict with 'code' and 'success' keys
47
+ """
48
+ try:
49
+ if refine_code:
50
+ user_message = f"""Current code:
51
+ ```html
52
+ {refine_code}
53
+ ```
54
+
55
+ User feedback: {prompt}
56
+
57
+ Update the code based on the feedback. Output the complete updated HTML file."""
58
+ else:
59
+ user_message = f"Create a website: {prompt}"
60
+
61
+ response = self.client.chat.completions.create(
62
+ model=self.model,
63
+ messages=[
64
+ {"role": "system", "content": self.system_prompt},
65
+ {"role": "user", "content": user_message}
66
+ ],
67
+ temperature=0.7,
68
+ max_tokens=8000
69
+ )
70
+
71
+ code = response.choices[0].message.content
72
+
73
+ # Clean up any markdown formatting if present
74
+ code = code.strip()
75
+ if code.startswith("```html"):
76
+ code = code[7:]
77
+ if code.startswith("```"):
78
+ code = code[3:]
79
+ if code.endswith("```"):
80
+ code = code[:-3]
81
+ code = code.strip()
82
+
83
+ # Ensure it starts with doctype
84
+ if not code.lower().startswith("<!doctype"):
85
+ code = "<!DOCTYPE html>\n" + code
86
+
87
+ return {"success": True, "code": code}
88
+
89
+ except Exception as e:
90
+ logger.error(f"WebDev generation error: {e}")
91
+ return {"success": False, "error": str(e)}