MINEOGO commited on
Commit
283c557
·
verified ·
1 Parent(s): fe916a7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -66
app.py CHANGED
@@ -27,11 +27,15 @@ def parse_files(raw_response):
27
  if not cleaned_files and raw_response.strip():
28
  if any(c in raw_response for c in ['<','>','{','}',';','(',')']):
29
  lang = "html"
30
- if "{" in raw_response and "}" in raw_response and ":" in raw_response: lang = "css"
31
- elif "function" in raw_response or "const" in raw_response or "let" in raw_response: lang = "javascript"
 
 
32
  default_filename = "index.html"
33
- if lang == "css": default_filename = "style.css"
34
- elif lang == "javascript": default_filename = "script.js"
 
 
35
  cleaned_files.append((default_filename, raw_response.strip()))
36
  return cleaned_files
37
 
@@ -103,9 +107,6 @@ Start generating the files now.
103
  gr.TabItem(label="Error", children=[gr.Textbox(value=error_message, label="Generation Error", lines=10)])
104
  ])
105
  else:
106
- print("\n--- Final Raw AI Response ---")
107
- print(full_raw_response)
108
- print("--------------------------\n")
109
  files = parse_files(full_raw_response)
110
  if not files:
111
  no_files_msg = "AI finished, but did not return recognizable file content or the response was empty. See raw output above."
@@ -121,22 +122,31 @@ Start generating the files now.
121
  if not name or not content:
122
  continue
123
  lang = "plaintext"
124
- if name.endswith((".html", ".htm")): lang = "html"
125
- elif name.endswith(".css"): lang = "css"
126
- elif name.endswith(".js"): lang = "javascript"
127
- elif name.endswith(".py"): lang = "python"
128
- elif name.endswith(".json"): lang = "json"
129
- elif name.endswith(".md"): lang = "markdown"
130
- elif name.endswith((".sh", ".bash")): lang = "bash"
131
- elif name.endswith((".xml", ".xaml", ".svg")): lang = "xml"
132
- elif name.endswith(".yaml") or name.endswith(".yml"): lang = "yaml"
 
 
 
 
 
 
 
 
 
133
  elem_id = f"tab_{re.sub(r'[^a-zA-Z0-9_-]', '_', name)}"
134
  tab_item = gr.TabItem(label=name, elem_id=elem_id, children=[
135
  gr.Code(value=content, language=lang, label=name, interactive=False)
136
  ])
137
  tabs_content.append(tab_item)
138
  if not tabs_content:
139
- final_tabs_update = gr.Tabs(tabs=[gr.TabItem(label="Output", children=[gr.Textbox(value="No valid files generated after filtering.", label="Result")])])
140
  else:
141
  final_tabs_update = gr.Tabs(tabs=tabs_content)
142
  yield {
@@ -149,62 +159,21 @@ with gr.Blocks(css=".gradio-container { max-width: 95% !important; }") as demo:
149
  gr.Markdown("Generates website code based on your description. Raw output streams live, final files appear in tabs below.")
150
  with gr.Row():
151
  with gr.Column(scale=2):
152
- prompt = gr.Textbox(
153
- label="Describe your website",
154
- placeholder="E.g., a simple landing page for a coffee shop with sections for menu, about, and contact.",
155
- lines=3
156
- )
157
- backend = gr.Dropdown(
158
- ["Static", "Flask", "Node.js"],
159
- value="Static",
160
- label="Backend Technology"
161
- )
162
  with gr.Accordion("Advanced Options", open=False):
163
- system_message = gr.Textbox(
164
- label="Extra instructions for the AI (System Message)",
165
- placeholder="Optional: e.g., 'Use Tailwind CSS for styling', 'Make it responsive'",
166
- value="",
167
- lines=2
168
- )
169
- max_tokens = gr.Slider(
170
- minimum=256,
171
- maximum=4096,
172
- value=2048,
173
- step=64,
174
- label="Max Tokens (Output Length)"
175
- )
176
- temperature = gr.Slider(
177
- minimum=0.1,
178
- maximum=1.5,
179
- value=0.7,
180
- step=0.1,
181
- label="Temperature (Creativity)"
182
- )
183
- top_p = gr.Slider(
184
- minimum=0.1,
185
- maximum=1.0,
186
- value=0.95,
187
- step=0.05,
188
- label="Top-p (Sampling Focus)"
189
- )
190
  generate_button = gr.Button("✨ Generate Code ✨", variant="primary")
191
  with gr.Column(scale=3):
192
  gr.Markdown("#### Live Raw Output Stream")
193
- live_output = gr.Code(
194
- label="Raw AI Stream",
195
- language="plaintext",
196
- lines=20,
197
- interactive=False
198
- )
199
  gr.Markdown("---")
200
  gr.Markdown("#### Final Generated Files (Tabs)")
201
  final_tabs = gr.Tabs(elem_id="output_tabs")
202
- generate_button.click(
203
- stream_and_parse_code,
204
- inputs=[prompt, backend, system_message, max_tokens, temperature, top_p],
205
- outputs=[live_output, final_tabs],
206
- show_progress="hidden"
207
- )
208
 
209
  if __name__ == "__main__":
210
  demo.launch(debug=True)
 
27
  if not cleaned_files and raw_response.strip():
28
  if any(c in raw_response for c in ['<','>','{','}',';','(',')']):
29
  lang = "html"
30
+ if "{" in raw_response and "}" in raw_response and ":" in raw_response:
31
+ lang = "css"
32
+ elif "function" in raw_response or "const" in raw_response or "let" in raw_response:
33
+ lang = "javascript"
34
  default_filename = "index.html"
35
+ if lang == "css":
36
+ default_filename = "style.css"
37
+ elif lang == "javascript":
38
+ default_filename = "script.js"
39
  cleaned_files.append((default_filename, raw_response.strip()))
40
  return cleaned_files
41
 
 
107
  gr.TabItem(label="Error", children=[gr.Textbox(value=error_message, label="Generation Error", lines=10)])
108
  ])
109
  else:
 
 
 
110
  files = parse_files(full_raw_response)
111
  if not files:
112
  no_files_msg = "AI finished, but did not return recognizable file content or the response was empty. See raw output above."
 
122
  if not name or not content:
123
  continue
124
  lang = "plaintext"
125
+ if name.endswith((".html", ".htm")):
126
+ lang = "html"
127
+ elif name.endswith(".css"):
128
+ lang = "css"
129
+ elif name.endswith(".js"):
130
+ lang = "javascript"
131
+ elif name.endswith(".py"):
132
+ lang = "python"
133
+ elif name.endswith(".json"):
134
+ lang = "json"
135
+ elif name.endswith(".md"):
136
+ lang = "markdown"
137
+ elif name.endswith((".sh", ".bash")):
138
+ lang = "bash"
139
+ elif name.endswith((".xml", ".xaml", ".svg")):
140
+ lang = "xml"
141
+ elif name.endswith(".yaml") or name.endswith(".yml"):
142
+ lang = "yaml"
143
  elem_id = f"tab_{re.sub(r'[^a-zA-Z0-9_-]', '_', name)}"
144
  tab_item = gr.TabItem(label=name, elem_id=elem_id, children=[
145
  gr.Code(value=content, language=lang, label=name, interactive=False)
146
  ])
147
  tabs_content.append(tab_item)
148
  if not tabs_content:
149
+ final_tabs_update = gr.Tabs(tabs=[gr.TabItem(label="Output", children=[gr.Textbox(value="No valid files generated after filtering.", label="Result")])])
150
  else:
151
  final_tabs_update = gr.Tabs(tabs=tabs_content)
152
  yield {
 
159
  gr.Markdown("Generates website code based on your description. Raw output streams live, final files appear in tabs below.")
160
  with gr.Row():
161
  with gr.Column(scale=2):
162
+ prompt = gr.Textbox(label="Describe your website", placeholder="E.g., a simple landing page...", lines=3)
163
+ backend = gr.Dropdown(["Static", "Flask", "Node.js"], value="Static", label="Backend Technology")
 
 
 
 
 
 
 
 
164
  with gr.Accordion("Advanced Options", open=False):
165
+ system_message = gr.Textbox(label="Extra instructions for the AI (System Message)", placeholder="Optional", value="", lines=2)
166
+ max_tokens = gr.Slider(minimum=256, maximum=4096, value=2048, step=64, label="Max Tokens (Output Length)")
167
+ temperature = gr.Slider(minimum=0.1, maximum=1.5, value=0.7, step=0.1, label="Temperature (Creativity)")
168
+ top_p = gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (Sampling Focus)")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
169
  generate_button = gr.Button("✨ Generate Code ✨", variant="primary")
170
  with gr.Column(scale=3):
171
  gr.Markdown("#### Live Raw Output Stream")
172
+ live_output = gr.Code(label="Raw AI Stream", language="text", lines=20, interactive=False)
 
 
 
 
 
173
  gr.Markdown("---")
174
  gr.Markdown("#### Final Generated Files (Tabs)")
175
  final_tabs = gr.Tabs(elem_id="output_tabs")
176
+ generate_button.click(stream_and_parse_code, inputs=[prompt, backend, system_message, max_tokens, temperature, top_p], outputs=[live_output, final_tabs], show_progress="hidden")
 
 
 
 
 
177
 
178
  if __name__ == "__main__":
179
  demo.launch(debug=True)