thanhdov commited on
Commit
ea70f39
·
1 Parent(s): 57ae129

refactor: wrap ChatInterface in gr.Blocks to support custom theme and CSS

Browse files
Files changed (1) hide show
  1. app.py +56 -53
app.py CHANGED
@@ -230,65 +230,68 @@ footer {
230
  """
231
 
232
  # ==============================================================================
233
- # KHỞI TẠO GIAO DIỆN GRADIO CHAT INTERFACE
234
  # ==============================================================================
235
- demo = gr.ChatInterface(
236
- fn=chat_response,
237
- title="✨ Google Gemma Assistant",
238
- description="Trải nghiệm đối thoại AI phong cách Gemini • Tải trực tiếp mô hình Gemma 4 31B (4-bit ZeroGPU)",
239
- textbox=gr.Textbox(
240
- placeholder="Hỏi Gemma bất kỳ điều gì (nhấn Enter để gửi)...",
241
- lines=1,
242
- max_lines=6,
243
- container=False,
244
- scale=7,
245
- ),
246
- additional_inputs=[
247
- gr.Textbox(
248
- label="Chỉ dẫn hệ thống (System Prompt)",
249
- value="Bạn là Gemma, một trợ lý trí tuệ nhân tạo thông minh, am hiểu và thân thiện. Hãy trả lời súc tích, chính xác, định dạng câu trả lời bằng Markdown đẹp mắt.",
250
- lines=2,
251
- ),
252
- gr.Slider(
253
- minimum=0.0,
254
- maximum=1.0,
255
- value=0.7,
256
- step=0.05,
257
- label="Độ sáng tạo (Temperature)",
258
- info="Giá trị thấp trả lời chuẩn xác hơn; giá trị cao trả lời phong phú và sáng tạo hơn.",
259
- ),
260
- gr.Slider(
261
- minimum=128,
262
- maximum=4096,
263
- value=1536,
264
- step=128,
265
- label="Độ dài tối đa (Max New Tokens)",
266
- info="Số lượng token tối đa mô hình tạo ra trong mỗi lượt trả lời.",
267
- ),
268
- gr.Slider(
269
- minimum=0.1,
270
- maximum=1.0,
271
- value=0.9,
272
- step=0.05,
273
- label="Top-P (Nucleus Sampling)",
274
- ),
275
- ],
276
- additional_inputs_accordion=gr.Accordion(
277
- label="⚙️ Cài đặt tham số mô hình & System Prompt",
278
- open=False,
279
- ),
280
- examples=[
281
- "Giải thích ngắn gọn cách hoạt động của cơ chế Multi-Head Attention trong mô hình Transformer.",
282
- "Viết một kịch bản ngắn giới thiệu vẻ đẹp thiên nhiên và văn hóa cồng chiêng của vùng đất Gia Lai.",
283
- "Tạo một hàm Python đọc tệp CSV, làm sạch dữ liệu thiếu và vẽ biểu đồ xu hướng bằng Matplotlib.",
284
- "So sánh ưu điểm và nhược điểm giữa cấu trúc Dense Model và Mixture-of-Experts (MoE).",
285
- ],
286
  css=CUSTOM_CSS,
287
  theme=gr.themes.Base(
288
  primary_hue="blue",
289
  neutral_hue="neutral",
290
  ),
291
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
292
 
293
  if __name__ == "__main__":
294
  demo.queue().launch()
 
230
  """
231
 
232
  # ==============================================================================
233
+ # KHỞI TẠO GIAO DIỆN GRADIO VỚI THEME & CUSTOM CSS
234
  # ==============================================================================
235
+ with gr.Blocks(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
236
  css=CUSTOM_CSS,
237
  theme=gr.themes.Base(
238
  primary_hue="blue",
239
  neutral_hue="neutral",
240
  ),
241
+ title="✨ Google Gemma Assistant",
242
+ ) as demo:
243
+ gr.ChatInterface(
244
+ fn=chat_response,
245
+ title="✨ Google Gemma Assistant",
246
+ description="Trải nghiệm đối thoại AI phong cách Gemini • Tải trực tiếp mô hình Gemma 4 31B (4-bit ZeroGPU)",
247
+ textbox=gr.Textbox(
248
+ placeholder="Hỏi Gemma bất kỳ điều gì (nhấn Enter để gửi)...",
249
+ lines=1,
250
+ max_lines=6,
251
+ container=False,
252
+ scale=7,
253
+ ),
254
+ additional_inputs=[
255
+ gr.Textbox(
256
+ label="Chỉ dẫn hệ thống (System Prompt)",
257
+ value="Bạn là Gemma, một trợ lý trí tuệ nhân tạo thông minh, am hiểu và thân thiện. Hãy trả lời súc tích, chính xác, định dạng câu trả lời bằng Markdown đẹp mắt.",
258
+ lines=2,
259
+ ),
260
+ gr.Slider(
261
+ minimum=0.0,
262
+ maximum=1.0,
263
+ value=0.7,
264
+ step=0.05,
265
+ label="Độ sáng tạo (Temperature)",
266
+ info="Giá trị thấp trả lời chuẩn xác hơn; giá trị cao trả lời phong phú và sáng tạo hơn.",
267
+ ),
268
+ gr.Slider(
269
+ minimum=128,
270
+ maximum=4096,
271
+ value=1536,
272
+ step=128,
273
+ label="Độ dài tối đa (Max New Tokens)",
274
+ info="Số lượng token tối đa mô hình tạo ra trong mỗi lượt trả lời.",
275
+ ),
276
+ gr.Slider(
277
+ minimum=0.1,
278
+ maximum=1.0,
279
+ value=0.9,
280
+ step=0.05,
281
+ label="Top-P (Nucleus Sampling)",
282
+ ),
283
+ ],
284
+ additional_inputs_accordion=gr.Accordion(
285
+ label="⚙️ Cài đặt tham số mô hình & System Prompt",
286
+ open=False,
287
+ ),
288
+ examples=[
289
+ "Giải thích ngắn gọn cách hoạt động của cơ chế Multi-Head Attention trong mô hình Transformer.",
290
+ "Viết một kịch bản ngắn giới thiệu vẻ đẹp thiên nhiên và văn hóa cồng chiêng của vùng đất Gia Lai.",
291
+ "Tạo một hàm Python đọc tệp CSV, làm sạch dữ liệu thiếu và vẽ biểu đồ xu hướng bằng Matplotlib.",
292
+ "So sánh ưu điểm và nhược điểm giữa cấu trúc Dense Model và Mixture-of-Experts (MoE).",
293
+ ],
294
+ )
295
 
296
  if __name__ == "__main__":
297
  demo.queue().launch()