refactor: wrap ChatInterface in gr.Blocks to support custom theme and CSS
Browse files
app.py
CHANGED
|
@@ -230,65 +230,68 @@ footer {
|
|
| 230 |
"""
|
| 231 |
|
| 232 |
# ==============================================================================
|
| 233 |
-
# KHỞI TẠO GIAO DIỆN GRADIO
|
| 234 |
# ==============================================================================
|
| 235 |
-
|
| 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()
|