wuhp commited on
Commit
d5d8755
Β·
verified Β·
1 Parent(s): a400f6e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -24
app.py CHANGED
@@ -24,9 +24,6 @@ SYSTEM_INSTRUCTION = (
24
 
25
 
26
  def start_app(gemini_key, hf_token, hf_username, repo_name):
27
- """
28
- Initialize workspace and Gemini chat state.
29
- """
30
  os.makedirs(WORKSPACE_DIR, exist_ok=True)
31
  client = genai.Client(api_key=gemini_key)
32
  config = types.GenerateContentConfig(system_instruction=SYSTEM_INSTRUCTION)
@@ -50,14 +47,10 @@ def start_app(gemini_key, hf_token, hf_username, repo_name):
50
 
51
 
52
  def handle_message(user_msg, state):
53
- """
54
- Send user message to Gemini, apply updates, commit to HF, and log steps.
55
- """
56
  chat = state["chat"]
57
  logs = state.get("logs", [])
58
  logs.append(f"> User: {user_msg}")
59
 
60
- # Generate or debug code via Gemini
61
  resp = chat.send_message(user_msg)
62
  logs.append("Received response from Gemini.")
63
  text = resp.text
@@ -72,7 +65,6 @@ def handle_message(user_msg, state):
72
  state["logs"] = logs
73
  return "⚠️ Parsing error. Check logs.", state
74
 
75
- # On first structured response, create the HF Space
76
  if not state["created"]:
77
  full_repo = f"{state['hf_username']}/{state['repo_name']}"
78
  logs.append(f"Creating HF Space '{full_repo}' with template '{framework}'.")
@@ -87,7 +79,6 @@ def handle_message(user_msg, state):
87
  state["repo_id"] = full_repo
88
  state["embed_url"] = f"https://huggingface.co/spaces/{full_repo}"
89
 
90
- # Write file updates
91
  if files:
92
  logs.append(f"Writing {len(files)} file(s): {list(files.keys())}")
93
  for relpath, content in files.items():
@@ -96,7 +87,6 @@ def handle_message(user_msg, state):
96
  with open(dest, "w", encoding="utf-8") as f:
97
  f.write(content)
98
 
99
- # Commit the snapshot via HfApi.upload_folder
100
  logs.append("Uploading snapshot to Hugging Face...")
101
  api = HfApi(token=state["hf_token"])
102
  api.upload_folder(
@@ -112,20 +102,22 @@ def handle_message(user_msg, state):
112
 
113
  # β€”β€”β€” Gradio UI β€”β€”β€”
114
  with gr.Blocks() as demo:
115
- with gr.Sidebar():
116
- gemini_key = gr.Textbox(label="Gemini API Key", type="password")
117
- hf_token = gr.Textbox(label="Hugging Face Token", type="password")
118
- hf_user = gr.Textbox(label="HF Username")
119
- repo_name = gr.Textbox(label="New App (repo) name")
120
- start_btn = gr.Button("Start a new app")
121
-
122
- chatbot = gr.Chatbot()
123
- state = gr.State(value=None)
124
- logs_display = gr.Textbox(label="Operation Logs", interactive=False, lines=8)
125
- preview_iframe = gr.HTML("<p>No deployed app yet.</p>")
126
-
127
- user_msg = gr.Textbox(label="Your message")
128
- send_btn = gr.Button("Send")
 
 
129
 
130
  def on_start(g_key, h_token, h_user, r_name):
131
  s = start_app(g_key, h_token, h_user, r_name)
 
24
 
25
 
26
  def start_app(gemini_key, hf_token, hf_username, repo_name):
 
 
 
27
  os.makedirs(WORKSPACE_DIR, exist_ok=True)
28
  client = genai.Client(api_key=gemini_key)
29
  config = types.GenerateContentConfig(system_instruction=SYSTEM_INSTRUCTION)
 
47
 
48
 
49
  def handle_message(user_msg, state):
 
 
 
50
  chat = state["chat"]
51
  logs = state.get("logs", [])
52
  logs.append(f"> User: {user_msg}")
53
 
 
54
  resp = chat.send_message(user_msg)
55
  logs.append("Received response from Gemini.")
56
  text = resp.text
 
65
  state["logs"] = logs
66
  return "⚠️ Parsing error. Check logs.", state
67
 
 
68
  if not state["created"]:
69
  full_repo = f"{state['hf_username']}/{state['repo_name']}"
70
  logs.append(f"Creating HF Space '{full_repo}' with template '{framework}'.")
 
79
  state["repo_id"] = full_repo
80
  state["embed_url"] = f"https://huggingface.co/spaces/{full_repo}"
81
 
 
82
  if files:
83
  logs.append(f"Writing {len(files)} file(s): {list(files.keys())}")
84
  for relpath, content in files.items():
 
87
  with open(dest, "w", encoding="utf-8") as f:
88
  f.write(content)
89
 
 
90
  logs.append("Uploading snapshot to Hugging Face...")
91
  api = HfApi(token=state["hf_token"])
92
  api.upload_folder(
 
102
 
103
  # β€”β€”β€” Gradio UI β€”β€”β€”
104
  with gr.Blocks() as demo:
105
+ # Two-column layout: sidebar and main area
106
+ with gr.Row():
107
+ with gr.Column(scale=1):
108
+ gemini_key = gr.Textbox(label="Gemini API Key", type="password")
109
+ hf_token = gr.Textbox(label="Hugging Face Token", type="password")
110
+ hf_user = gr.Textbox(label="HF Username")
111
+ repo_name = gr.Textbox(label="New App (repo) name")
112
+ start_btn = gr.Button("Start a new app")
113
+ with gr.Column(scale=3):
114
+ chatbot = gr.Chatbot()
115
+ state = gr.State(value=None)
116
+ logs_display = gr.Textbox(label="Operation Logs", interactive=False, lines=8)
117
+ preview_iframe = gr.HTML("<p>No deployed app yet.</p>")
118
+
119
+ user_msg = gr.Textbox(label="Your message")
120
+ send_btn = gr.Button("Send")
121
 
122
  def on_start(g_key, h_token, h_user, r_name):
123
  s = start_app(g_key, h_token, h_user, r_name)