SHERWYNLUCIAN commited on
Commit
8ad15e5
·
verified ·
1 Parent(s): 651d48b

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +98 -0
app.py ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from llama_cpp import Llama
3
+ from huggingface_hub import hf_hub_download
4
+
5
+ # ==============================================================================
6
+ # 1. CẤU HÌNH MODEL (ĐÃ CẬP NHẬT CHO EVONET 3B BETA)
7
+ # ==============================================================================
8
+ REPO_ID = "EvoNet/EvoNet-3B-v0.1-Beta-GGUF"
9
+ FILENAME = "EvoNet-3B-v0.1-Beta-Q4_K_M.gguf" # File nén Q4 nhẹ & mượt
10
+
11
+ print(f"⏳ Đang tải file {FILENAME} từ kho {REPO_ID}...")
12
+ try:
13
+ model_path = hf_hub_download(
14
+ repo_id=REPO_ID,
15
+ filename=FILENAME
16
+ )
17
+ print("✅ Tải xong! Đường dẫn:", model_path)
18
+ except Exception as e:
19
+ print(f"❌ Lỗi tải file: {e}")
20
+ print("👉 Founder kiểm tra lại tên file hoặc Repo ID nhé!")
21
+ raise e
22
+
23
+ # ==============================================================================
24
+ # 2. KHỞI ĐỘNG ĐỘNG CƠ AI
25
+ # ==============================================================================
26
+ print("⚙️ Đang khởi động EvoNet 3B Engine...")
27
+ llm = Llama(
28
+ model_path=model_path,
29
+ n_ctx=4096, # Tăng lên 4096 tokens (nhớ dai hơn bản cũ)
30
+ n_threads=2, # Dùng 2 nhân CPU (Chuẩn Free Tier HF)
31
+ n_gpu_layers=0, # Chạy hoàn toàn trên CPU
32
+ verbose=False
33
+ )
34
+
35
+ # ==============================================================================
36
+ # 3. HÀM XỬ LÝ CHAT (STREAMING)
37
+ # ==============================================================================
38
+ def chat_stream(message, history):
39
+ # Cài đặt danh tính (System Prompt) chuẩn Founder
40
+ system_prompt = (
41
+ "Bạn là EvoNet, một trợ lý AI thông minh được phát triển bởi Founder Huỳnh Dương Phong. "
42
+ "Hãy trả lời ngắn gọn, hữu ích, trung thực và ưu tiên sử dụng Tiếng Việt."
43
+ )
44
+
45
+ # Format chuẩn ChatML (Qwen 2.5 yêu cầu cái này)
46
+ prompt = f"<|im_start|>system\n{system_prompt}<|im_end|>\n"
47
+ for user_msg, bot_msg in history:
48
+ prompt += f"<|im_start|>user\n{user_msg}<|im_end|>\n<|im_start|>assistant\n{bot_msg}<|im_end|>\n"
49
+ prompt += f"<|im_start|>user\n{message}<|im_end|>\n<|im_start|>assistant\n"
50
+
51
+ # Gọi Model chạy
52
+ stream = llm(
53
+ prompt,
54
+ max_tokens=1024, # Cho phép trả lời dài hơn (Model 3B viết code dài được)
55
+ stop=["<|im_end|>"], # Dấu hiệu dừng
56
+ echo=False,
57
+ stream=True, # Hiệu ứng gõ chữ
58
+ temperature=0.7, # Độ sáng tạo vừa phải
59
+ top_p=0.9
60
+ )
61
+
62
+ partial_message = ""
63
+ for output in stream:
64
+ token = output['choices'][0]['text']
65
+ partial_message += token
66
+ yield partial_message
67
+
68
+ # ==============================================================================
69
+ # 4. GIAO DIỆN CHATBOT (GRADIO)
70
+ # ==============================================================================
71
+ custom_css = """
72
+ #component-0 {max-width: 800px; margin: auto;}
73
+ .gradio-container {background-color: #f9f9f9;}
74
+ """
75
+
76
+ demo = gr.ChatInterface(
77
+ chat_stream,
78
+ title="🔥 EvoNet-3B Beta (GGUF Version)",
79
+ description=f"""
80
+ <div style="text-align: center;">
81
+ <h3>Sản phẩm AI của Founder Huỳnh Dương Phong</h3>
82
+ <p>Model: <b>EvoNet-3B-v0.1-Beta</b> | Format: <b>GGUF Q4_K_M</b></p>
83
+ <p>⚡ Chạy trực tiếp trên CPU Server (Zero-GPU)</p>
84
+ </div>
85
+ """,
86
+ examples=[
87
+ ["EvoNet là gì và ai tạo ra bạn?"],
88
+ ["Viết một hàm Python kiểm tra số nguyên tố và giải thích."],
89
+ ["Giải thích 'Machine Learning' cho học sinh lớp 5."],
90
+ ["Làm một bài thơ về lập trình viên."],
91
+ ],
92
+ cache_examples=False,
93
+ css=custom_css,
94
+ theme="soft" # Giao diện mềm mại, hiện đại
95
+ )
96
+
97
+ if __name__ == "__main__":
98
+ demo.launch()