shuv25 commited on
Commit
db36613
·
verified ·
1 Parent(s): cfc185d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +385 -207
app.py CHANGED
@@ -1,4 +1,17 @@
1
  import gradio as gr
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
  AGENT_URLS = {
4
  "delivery": "https://huggingface.co/spaces/shuv25/optimize_delivery_system",
@@ -6,262 +19,427 @@ AGENT_URLS = {
6
  "agent3": "https://huggingface.co/spaces/akankshar639/CustomerSupportAgent"
7
  }
8
 
 
 
 
9
  def create_agent_card(title, description, features, url, color, status="active"):
10
- """Create a card for each agent"""
11
-
12
  if status == "active":
13
- status_badge = "<span style='background:#168c44; color:white; padding:4px 12px; border-radius:12px; font-size:0.85em; font-weight:600;'>ACTIVE</span>"
 
 
 
 
 
 
 
 
 
 
 
14
  else:
15
- status_badge = "<span style='background:#6b7280; color:white; padding:4px 12px; border-radius:12px; font-size:0.85em; font-weight:600;'>COMING SOON</span>"
16
-
17
- features_html = "".join([f"<li style='margin:8px 0; color:#4b5563;'>{feature}</li>" for feature in features])
18
-
 
 
 
 
 
 
 
 
 
 
 
19
  if status == "active":
20
  button = f"""
21
- <a href="{url}" target="_blank" rel="noopener noreferrer" class="launch-btn" style='
22
- display: block;
23
- text-align: center;
24
- padding: 14px;
25
- background: linear-gradient(135deg, #168c44, #0f6b33);
26
- color: white;
27
- text-decoration: none;
28
- border-radius: 10px;
29
- font-weight: 600;
30
- font-size: 1em;
31
- margin-top: 20px;
32
- transition: all 0.25s ease;
33
- ' onmouseover="this.style.background='linear-gradient(135deg, #1aa850, #168c44)'; this.style.transform='scale(1.03)'"
34
- onmouseout="this.style.background='linear-gradient(135deg, #168c44, #0f6b33)'; this.style.transform='scale(1)'">
35
- 🚀 Launch Agent
36
- </a>
 
37
  """
38
  else:
39
- button = f"""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  <div style='
41
- text-align: center;
42
- padding: 14px;
43
- background: #e5e7eb;
44
- color: #6b7280;
45
- border-radius: 10px;
46
- font-weight: 600;
47
- font-size: 1em;
48
- margin-top: 20px;
49
- cursor: not-allowed;
50
  '>
51
- Coming Soon
52
- </div>
53
- """
54
-
55
- card_html = f"""
56
- <div style='
57
- border-radius: 16px;
58
- padding: 28px;
59
- background: white;
60
- box-shadow: 0 4px 6px rgba(0,0,0,0.1);
61
- height: 100%;
62
- border-top: 4px solid {color};
63
- '>
64
- <div style='display:flex; justify-content:space-between; align-items:center; margin-bottom:16px;'>
65
- <h2 style='margin:0; color:#1f2937; font-size:1.5em;'>{title}</h2>
66
- {status_badge}
67
- </div>
68
-
69
- <p style='color:#6b7280; margin:12px 0 20px 0; line-height:1.6; font-size:0.95em;'>
70
- {description}
71
- </p>
72
-
73
- <div style='background:#f9fafb; padding:16px; border-radius:10px; margin:16px 0;'>
74
- <h4 style='margin:0 0 12px 0; color:#374151; font-size:0.9em; font-weight:600;'>KEY FEATURES:</h4>
75
- <ul style='margin:0; padding-left:20px;'>
76
- {features_html}
77
- </ul>
78
  </div>
79
-
80
- {button}
81
- </div>
82
  """
83
-
84
- return card_html
85
 
86
 
 
 
 
 
87
  with gr.Blocks(
88
- theme=gr.themes.Soft(primary_hue="green", secondary_hue="green"),
89
- title="Spark-Agent System Hub",
90
- css="""
91
- body, html {
92
- margin: 0;
93
- padding: 0;
94
- width: 100%;
95
- overflow-x: hidden;
96
- }
97
- .gradio-container {
98
- max-width: 100% !important;
99
- width: 100% !important;
100
- padding: 0 !important;
101
- margin: 0 auto !important;
102
- }
103
- .block {
104
- width: 100% !important;
105
- }
106
- #root > div {
107
- width: 100% !important;
108
- }
109
- """
110
  ) as demo:
111
-
112
- gr.HTML("""
113
- <div style='
114
- text-align: center;
115
- padding: 50px 20px;
116
- background: linear-gradient(135deg, #168c44 0%, #1aa850 100%);
117
- border-radius: 20px;
118
- color: white;
119
- margin-bottom: 40px;
120
- box-shadow: 0 20px 25px -5px rgba(22,140,68,0.3);
121
- '>
122
- <h1 style='margin: 0; font-size: 3em; font-weight: 800; text-shadow: 2px 2px 4px rgba(0,0,0,0.2);'>
123
- Spark - Agent System Hub
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  </h1>
125
- <p style='margin: 20px 0 0 0; font-size: 1.4em; opacity: 0.95; font-weight: 300;'>
126
- Specialized AI Agents for Different Tasks
127
- </p>
128
- <p style='margin: 12px 0 0 0; font-size: 1em; opacity: 0.85;'>
129
- Choose an agent based on your specific needs
130
- </p>
131
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  """)
133
 
134
- gr.Markdown("## Available Agents")
135
-
136
- with gr.Row():
137
- with gr.Column():
138
  gr.HTML(create_agent_card(
139
  title="SparkDelivery",
140
  description="AI-powered logistics assistant that plans optimal routes, analyzes traffic and weather conditions, estimates delivery costs, and optimizes multi-stop deliveries with intelligent vehicle recommendations.",
141
  features=[
142
- "Interactive route planning with visual maps",
143
- "Multi-destination route optimization",
144
  "Real-time traffic analysis",
145
- "Current weather conditions + weather forecasting",
146
  "Smart cost estimation"
147
  ],
148
  url=AGENT_URLS["delivery"],
149
- color="#168c44",
150
- status="active"
151
  ))
152
-
153
- with gr.Column():
154
  gr.HTML(create_agent_card(
155
  title="SparkNova",
156
- description="""Data Analyzer is an AI-powered data analysis tool that automatically explore, visualize,
157
- and generate insights from uploaded CSV datasets through natural language queries""",
158
  features=[
159
- "AI-driven Query Understanding ",
160
- "Smart Visualizations ",
161
  "Insight Generation",
162
- "Time-Efficient Analysis"
163
- "Decision-Making Support"
164
  ],
165
  url=AGENT_URLS["agent2"],
166
- color="#168c44",
167
- status="active"
168
  ))
169
-
170
- with gr.Column():
171
  gr.HTML(create_agent_card(
172
  title="SparkMart AI",
173
- description="""SparkMart AI, a chatbot e-commerce customer service by automating order tracking, resolving complaints,
174
- and offering personalized product recommendations or specific product recommendation.""",
175
  features=[
176
- "Intelligent Order Management",
177
- "Personalized Product Recommendations ",
178
- "Multi-Stage Complaint Resolution",
179
- "Conversational State Management",
180
- "General Query Assistance"
181
  ],
182
  url=AGENT_URLS["agent3"],
183
- color="#168c44",
184
- status="active"
185
  ))
 
 
186
 
187
- gr.Markdown("---")
188
- gr.Markdown("## How It Works")
189
-
190
- with gr.Row():
191
- with gr.Column():
192
- gr.Markdown("""
193
- ### Independent Agents
194
- Each agent runs in its own environment:
195
- - **Isolated**: Problems in one don't affect others
196
- - **Scalable**: Each can be updated independently
197
- - **Optimized**: Resources allocated per agent needs
198
- - **Specialized**: Focused on specific tasks
199
- """)
200
-
201
- with gr.Column():
202
- gr.Markdown("""
203
- ### Getting Started
204
- 1. **Choose** your agent based on your task
205
- 2. **Click** "Launch Agent" button
206
- 3. **Enter** your query in the agent interface
207
- 4. **Get** instant AI-powered results
208
- 5. **Download** or save your results
209
- """)
210
-
211
- with gr.Column():
212
- gr.Markdown("""
213
- ### Best Practices
214
- - Be specific with your queries
215
- - Include all relevant details
216
- - Check example queries for guidance
217
- - Use agent-specific features
218
- - Save important results immediately
219
- """)
220
 
221
- gr.HTML("""
222
  <div style='
223
- margin-top: 40px;
224
- padding: 30px;
225
- background: #f0fdf4;
226
- border-radius: 15px;
227
- border-left: 5px solid #168c44;
228
  '>
229
- <h3 style='margin: 0 0 15px 0; color:#1f2937;'>System Status</h3>
230
- <div style='display:grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap:20px;'>
231
- <div style='text-align:center; padding:15px; background:white; border-radius:10px; border: 2px solid #dcfce7;'>
232
- <div style='font-size:2em; color:#168c44; margin-bottom:8px;'>3</div>
233
- <div style='color:#6b7280; font-size:0.9em;'>Active Agents</div>
234
- </div>
235
- <div style='text-align:center; padding:15px; background:white; border-radius:10px; border: 2px solid #dcfce7;'>
236
- <div style='font-size:2em; color:#1aa850; margin-bottom:8px;'>0</div>
237
- <div style='color:#6b7280; font-size:0.9em;'>In Development</div>
238
- </div>
239
- <div style='text-align:center; padding:15px; background:white; border-radius:10px; border: 2px solid #dcfce7;'>
240
- <div style='font-size:2em; color:#0f6b33; margin-bottom:8px;'>3</div>
241
- <div style='color:#6b7280; font-size:0.9em;'>Total Agents</div>
242
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
243
  </div>
 
244
  </div>
 
 
 
245
  """)
246
-
 
 
 
247
  gr.HTML("""
248
- <div style='
249
- text-align: center;
250
- padding: 30px;
251
- margin-top: 50px;
252
- background: #f0fdf4;
253
- border-radius: 15px;
254
- border: 2px solid #dcfce7;
255
- '>
256
- <h3 style='margin: 0 0 15px 0; color:#1f2937;'>Built with Modern AI Stack</h3>
257
- <p style='margin: 0; color: #6b7280; font-size:0.95em;'>
258
- DeepAgents | LangChain | Groq | OpenStreetMap | Gradio
259
- </p>
260
- <p style='margin: 15px 0 0 0; font-size: 0.85em; color: #9ca3af;'>
261
- Deployed on Hugging Face Spaces | Open Source Architecture
262
- </p>
263
- </div>
264
  """)
265
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
266
  if __name__ == "__main__":
267
- demo.launch()
 
 
1
  import gradio as gr
2
+ import os
3
+ import base64
4
+
5
+ with open("public/style.css") as f:
6
+ css = f.read()
7
+
8
+ logo_path = os.path.join(os.getcwd(), "public/main-logo.png")
9
+
10
+ def embed_image_base64(path):
11
+ with open(path, "rb") as f:
12
+ return "data:image/png;base64," + base64.b64encode(f.read()).decode()
13
+
14
+ logo_b64 = embed_image_base64(logo_path)
15
 
16
  AGENT_URLS = {
17
  "delivery": "https://huggingface.co/spaces/shuv25/optimize_delivery_system",
 
19
  "agent3": "https://huggingface.co/spaces/akankshar639/CustomerSupportAgent"
20
  }
21
 
22
+ # ---------------------------
23
+ # PREMIUM CARD COMPONENT
24
+ # ---------------------------
25
  def create_agent_card(title, description, features, url, color, status="active"):
26
+
 
27
  if status == "active":
28
+ status_badge = """
29
+ <span style='
30
+ border:2px solid #168c44;
31
+ color:#168c44;
32
+ padding:4px 12px;
33
+ border-radius:12px;
34
+ font-size:0.85em;
35
+ font-weight:600;
36
+ '>
37
+ • ACTIVE
38
+ </span>
39
+ """
40
  else:
41
+ status_badge = """
42
+ <span style='
43
+ background:#6b7280;
44
+ color:white;
45
+ padding:4px 12px;
46
+ border-radius:12px;
47
+ font-size:0.85em;
48
+ font-weight:600;
49
+ '>
50
+ COMING SOON
51
+ </span>
52
+ """
53
+
54
+ features_html = "".join([f"<li style='margin:6px 0; color:#4b5563;'>{feature}</li>" for feature in features])
55
+
56
  if status == "active":
57
  button = f"""
58
+ <a href="{url}" target="_blank" rel="noopener noreferrer"
59
+ style='
60
+ display:block;
61
+ text-align:center;
62
+ padding:14px;
63
+ background:#204C6C;
64
+ color:white;
65
+ text-decoration:none;
66
+ border-radius:16px;
67
+ font-weight:600;
68
+ font-size:1em;
69
+ transition:0.25s ease;
70
+ '
71
+ onmouseover="this.style.transform='scale(1.04)'; this.style.opacity='0.92';"
72
+ onmouseout="this.style.transform='scale(1)'; this.style.opacity='1';">
73
+ Launch Agent
74
+ </a>
75
  """
76
  else:
77
+ button = """
78
+ <div style='
79
+ text-align:center;
80
+ padding:14px;
81
+ background:#e5e7eb;
82
+ color:#6b7280;
83
+ border-radius:10px;
84
+ font-weight:600;
85
+ font-size:1em;
86
+ cursor:not-allowed;
87
+ '>
88
+ Coming Soon
89
+ </div>
90
+ """
91
+
92
+ return f"""
93
  <div style='
94
+ padding:28px;
95
+ background:white;
96
+ min-height:400px;
97
+ display:flex;
98
+ width:100%;
99
+ flex-direction:column;
100
+ justify-content:space-between;
101
+ box-shadow:0px 6px 16px rgba(0,0,0,0.07);
102
+ border-top:4px solid #204C6C;
103
  '>
104
+ <div>
105
+ <div style='display:flex; justify-content:space-between; align-items:center; margin-bottom:14px;'>
106
+ <h2 style='margin:0; color:#1f2937; font-size:1.45em;'>{title}</h2>
107
+ {status_badge}
108
+ </div>
109
+
110
+ <p style='color:#6b7280; margin:10px 0 18px 0; line-height:1.6; font-size:0.95em;'>
111
+ {description}
112
+ </p>
113
+
114
+ <div style='background:#f9fafb; padding:16px; border-radius:10px;'>
115
+ <h4 style='margin:0 0 0px 0; color:#374151; font-size:0.9em; font-weight:600;'>
116
+ KEY FEATURES:
117
+ </h4>
118
+ <ul style='margin:0; padding-left:18px;'>
119
+ {features_html}
120
+ </ul>
121
+ </div>
122
+ </div>
123
+
124
+ <div style='margin-top:20px;'>{button}</div>
 
 
 
 
 
 
125
  </div>
 
 
 
126
  """
 
 
127
 
128
 
129
+ # ------------------------------------
130
+ # MAIN UI (ENHANCED LAYOUT)
131
+ # ------------------------------------
132
+
133
  with gr.Blocks(
134
+ theme=gr.themes.Soft(primary_hue="green"),
135
+ title="Spark-Agent System",
136
+ # css="""
137
+ # body, html {
138
+ # margin:0;
139
+ # padding:0;
140
+ # width:100%;
141
+ # overflow-x:hidden;
142
+ # font-family: Georgia, serif;
143
+ # background-color: #17203D;
144
+ # }
145
+
146
+ # .gradio-container {
147
+ # max-width: 1900px !important;
148
+ # # background-color: #17203D;
149
+ # margin:auto !important;
150
+ # }
151
+ # """
152
+ css=css
153
+
 
 
154
  ) as demo:
155
+
156
+ # HEADER SECTION -----------------------------------------------------
157
+ gr.HTML(f"""
158
+ <div style='
159
+ padding:40px 30px;
160
+ background:
161
+ radial-gradient(circle at 20% 10%, rgba(255,255,255,0.25), transparent 55%),
162
+ radial-gradient(circle at 85% 20%, rgba(45,135,255,0.22), transparent 70%),
163
+ linear-gradient(135deg, #0e1a2b, #0f1032, #03011a);
164
+ color:white;
165
+ border-bottom-left-radius:40px;
166
+ border-bottom-right-radius:40px;
167
+ box-shadow:0 50px 90px -20px rgba(0,0,0,0.6);
168
+
169
+ display:flex;
170
+ justify-content:space-;
171
+ align-items:center;
172
+ width:100%;
173
+ '>
174
+
175
+ <!-- LEFT: LOGO -->
176
+ <div style="flex:1; display:flex; justify-content:flex-start; width: 100px;">
177
+ <img src="{logo_b64}" width="120" style="margin-bottom:70px; opacity:0.95;">
178
+ </div>
179
+
180
+ <!-- CENTER: TITLE -->
181
+ <div style="flex:1; display:flex; justify-content:center;">
182
+ <h1 style='
183
+ margin:0;
184
+ font-size:2.5em;
185
+ font-weight:800;
186
+ letter-spacing:1px;
187
+ background:linear-gradient(to right, #fff 20%, #dce4ff 40%, #cedcff 60%);
188
+ -webkit-background-clip:text;
189
+ color:transparent;
190
+ '>
191
+ Spark-Agent System
192
  </h1>
 
 
 
 
 
 
193
  </div>
194
+
195
+ <div style="flex:1;"></div>
196
+
197
+ </div>
198
+
199
+ <div style='text-align: center;'>
200
+ <p style='margin-top:20px; font-size:1.30em; opacity:0.92; color: white;'>
201
+ Specialized AI Agents Crafted for Precision & Performance
202
+ </p>
203
+
204
+ <p style='margin-top:5px; font-size:1.05em; opacity:0.85; color: white;'>
205
+ Gain deeper insights from your datasets with intelligent automation. SparkNova helps you clean, analyze, and visualize data effortlessly.
206
+ </p>
207
+ </div>
208
+ """)
209
+
210
+
211
+ # --------------------------------------
212
+ # AVAILABLE AGENTS TITLE
213
+ # --------------------------------------
214
+ gr.HTML("""
215
+ <div style='
216
+ font-size:2.2em;
217
+ text-align:center;
218
+ font-weight:800;
219
+ margin:30px 0 40px;
220
+ color: white;
221
+ '>
222
+ Available Agents
223
+ </div>
224
  """)
225
 
226
+ # AGENT GRID ---------------------------------------------------------
227
+ with gr.Row(equal_height=True):
228
+
229
+ with gr.Column(scale=1):
230
  gr.HTML(create_agent_card(
231
  title="SparkDelivery",
232
  description="AI-powered logistics assistant that plans optimal routes, analyzes traffic and weather conditions, estimates delivery costs, and optimizes multi-stop deliveries with intelligent vehicle recommendations.",
233
  features=[
234
+ "Interactive route planning",
235
+ "Multi-destination optimization",
236
  "Real-time traffic analysis",
237
+ "Weather forecasting",
238
  "Smart cost estimation"
239
  ],
240
  url=AGENT_URLS["delivery"],
241
+ color="#164d8c"
 
242
  ))
243
+
244
+ with gr.Column(scale=1):
245
  gr.HTML(create_agent_card(
246
  title="SparkNova",
247
+ description="SparkNova is an AI-powered data analysis tool that automatically explores, visualizes, and generates insights from uploaded CSV datasets through natural language queries efficiently.",
 
248
  features=[
249
+ "AI-driven Query Understanding",
250
+ "Smart Visualizations",
251
  "Insight Generation",
252
+ "Time-Efficient Analysis",
253
+ "Decision Support"
254
  ],
255
  url=AGENT_URLS["agent2"],
256
+ color="#168c44"
 
257
  ))
258
+
259
+ with gr.Column(scale=1):
260
  gr.HTML(create_agent_card(
261
  title="SparkMart AI",
262
+ description="""SparkMart AI is a chatbot for e-commerce customer service, automating order tracking, resolving complaints, and offering personalized and specific product recommendations to customers.""",
 
263
  features=[
264
+ "Order Management",
265
+ "Personalized Recommendations",
266
+ "Complaint Resolution",
267
+ "Conversational State",
268
+ "Query Assistance"
269
  ],
270
  url=AGENT_URLS["agent3"],
271
+ color="#168c44"
 
272
  ))
273
+
274
+ gr.HTML("""
275
 
276
+ <div style='
277
+ margin-top: 50px;
278
+ padding: 35px;
279
+ background: linear-gradient(135deg, #e8f5ff 0%, #f3fff6 100%);
280
+ border-radius: 18px;
281
+ border-left: 6px solid #204c6c;
282
+ box-shadow: 0px 8px 25px rgba(0,0,0,0.08);
283
+ '>
284
+
285
+ <h3 style='
286
+ margin:0 0 25px 0;
287
+ font-size:1.8em;
288
+ font-weight:800;
289
+ color:#0e1a2b;
290
+ letter-spacing:0.5px;
291
+ '>
292
+ System Status
293
+ </h3>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
294
 
 
295
  <div style='
296
+ display:flex;
297
+ gap:22px;
298
+ flex-wrap:wrap;
 
 
299
  '>
300
+
301
+ <!-- ACTIVE AGENTS -->
302
+ <div style='
303
+ flex:1;
304
+ min-width:230px;
305
+ text-align:center;
306
+ padding:25px;
307
+ background:rgba(255,255,255,0.75);
308
+ border-radius:16px;
309
+ border:1px solid rgba(32,76,108,0.18);
310
+ backdrop-filter:blur(6px);
311
+ box-shadow:0 4px 14px rgba(32,76,108,0.15);
312
+ transition:0.3s ease;
313
+ '
314
+ onmouseover="this.style.transform='translateY(-6px)'; this.style.boxShadow='0 10px 28px rgba(32,76,108,0.25)';"
315
+ onmouseout="this.style.transform='translateY(0)'; this.style.boxShadow='0 4px 14px rgba(32,76,108,0.15)';"
316
+ >
317
+ <div style='font-size:2.4em; color:#204c6c; font-weight:700;'>3</div>
318
+ <div style='color:#334155; font-size:1em; margin-top:6px;'>Active Agents</div>
319
+ </div>
320
+
321
+ <!-- IN DEVELOPMENT -->
322
+ <div style='
323
+ flex:1;
324
+ min-width:230px;
325
+ text-align:center;
326
+ padding:25px;
327
+ background:rgba(255,255,255,0.75);
328
+ border-radius:16px;
329
+ border:1px solid rgba(32,76,108,0.18);
330
+ backdrop-filter:blur(6px);
331
+ box-shadow:0 4px 14px rgba(32,76,108,0.15);
332
+ transition:0.3s ease;
333
+ '
334
+ onmouseover="this.style.transform='translateY(-6px)'; this.style.boxShadow='0 10px 28px rgba(32,76,108,0.25)';"
335
+ onmouseout="this.style.transform='translateY(0)'; this.style.boxShadow='0 4px 14px rgba(32,76,108,0.15)';"
336
+ >
337
+ <div style='font-size:2.4em; color:#204c6c; font-weight:700;'>0</div>
338
+ <div style='color:#334155; font-size:1em; margin-top:6px;'>In Development</div>
339
+ </div>
340
+
341
+ <!-- TOTAL AGENTS -->
342
+ <div style='
343
+ flex:1;
344
+ min-width:230px;
345
+ text-align:center;
346
+ padding:25px;
347
+ background:rgba(255,255,255,0.75);
348
+ border-radius:16px;
349
+ border:1px solid rgba(32,76,108,0.18);
350
+ backdrop-filter:blur(6px);
351
+ box-shadow:0 4px 14px rgba(32,76,108,0.15);
352
+ transition:0.3s ease;
353
+ '
354
+ onmouseover="this.style.transform='translateY(-6px)'; this.style.boxShadow='0 10px 28px rgba(32,76,108,0.25)';"
355
+ onmouseout="this.style.transform='translateY(0)'; this.style.boxShadow='0 4px 14px rgba(32,76,108,0.15)';"
356
+ >
357
+ <div style='font-size:2.4em; color:#204c6c; font-weight:700;'>3</div>
358
+ <div style='color:#334155; font-size:1em; margin-top:6px;'>Total Agents</div>
359
  </div>
360
+
361
  </div>
362
+ </div>
363
+
364
+
365
  """)
366
+
367
+ # -----------------------------------
368
+ # HOW IT WORKS TITLE
369
+ # -----------------------------------
370
  gr.HTML("""
371
+ <div style='
372
+ margin-top:60px;
373
+ text-align:center;
374
+ font-size:2.8em;
375
+ font-weight:800;
376
+ letter-spacing:1px;
377
+ color: #ffffff;
378
+ '>
379
+ How It Works
380
+ </div>
 
 
 
 
 
 
381
  """)
382
 
383
+ with gr.Row():
384
+
385
+ with gr.Column():
386
+ gr.HTML("""
387
+ <div style='padding:20px 40px; text-align:left; margin-left: 130px; color: white;'>
388
+ <h3>Independent Agents</h3>
389
+ <ul>
390
+ <li>Isolated environments</li>
391
+ <li>Scalable + independently upgradable</li>
392
+ <li>Optimized resource allocation</li>
393
+ <li>Specialized task modules</li>
394
+ </ul>
395
+ </div>
396
+ """)
397
+
398
+ with gr.Column():
399
+ gr.HTML("""
400
+ <div style='padding:20px 40px; text-align:left; margin-left: 130px;'>
401
+ <h3>Getting Started</h3>
402
+ <ul>
403
+ <li>Choose your agent</li>
404
+ <li>Click “Launch Agent”</li>
405
+ <li>Enter your query & receive instant results</li>
406
+ <li>Save or download output</li>
407
+ </ul>
408
+ </div>
409
+ """)
410
+
411
+ with gr.Column():
412
+ gr.HTML("""
413
+ <div style='padding:20px 40px; text-align:left; margin-left: 130px;'>
414
+ <h3>Best Practices</h3>
415
+ <ul>
416
+ <li>Be specific with queries</li>
417
+ <li>Add relevant details</li>
418
+ <li>Use examples as guidance</li>
419
+ <li>Use agent-specific features</li>
420
+ </ul>
421
+ </div>
422
+ """)
423
+
424
+
425
+ # FOOTER --------------------------------------------------------------
426
+ # gr.HTML("""
427
+ # <div style='
428
+ # text-align:center;
429
+ # padding:30px;
430
+ # margin-top:60px;
431
+ # background:#f0fdf4;
432
+ # border-radius:15px;
433
+ # border:2px solid #dcfce7;
434
+ # '>
435
+ # <h3 style='margin-bottom:10px;'>Built with Modern AI Stack</h3>
436
+ # <p>DeepAgents • LangChain • Groq • OpenStreetMap • Gradio</p>
437
+ # <p style='font-size:0.85em; color:#6b7280; margin-top:10px;'>
438
+ # HuggingFace Spaces | Open Source Architecture
439
+ # </p>
440
+ # </div>
441
+ # """)
442
+
443
  if __name__ == "__main__":
444
+ demo.launch(share=True)
445
+