Hugging Face in Python (Phần 3)
Tuyệt vời! Tinh thần "làm tới cùng" thế này thì chắc chắn bạn sẽ tiến rất xa trong ngành AI.
Ở phần trước, con chatbot của bạn mới chỉ chạy cục bộ (offline) trên máy tính. Để bạn bè hoặc sếp có thể dùng thử, chúng ta phải đưa nó "lên mây". Đây chính là lúc Hugging Face Spaces tỏa sáng.
Dưới đây là phần cuối cùng cho bài blog của bạn. Copy và dán ngay nhé!
🚀 Hugging Face Thực Chiến (Phần 3): Đưa Chatbot "Lên Mây" Với Hugging Face Spaces
Bạn đã tự code xong một con Chatbot tiếng Việt cực xịn trên máy tính cá nhân. Nhưng làm sao để khoe nó với thế giới? Chẳng lẽ lại bê nguyên cái laptop đi cho người khác dùng thử?
Không cần đâu! Trong phần cuối này, chúng ta sẽ đưa con AI của bạn lên Hugging Face Spaces. Hugging Face sẽ cấp cho bạn một máy chủ miễn phí và tạo ra một đường link public hoàn chỉnh. Ai có link cũng dùng được!
Bước 1: Tạo "Mảnh Đất" Trên Hugging Face
- Đăng nhập vào tài khoản Hugging Face của bạn.
- Nhìn lên góc trên bên phải, bấm vào ảnh đại diện của bạn -> Chọn New Space.
- Điền các thông tin khai sinh cho ứng dụng:
- Space name: Đặt tên tùy thích (ví dụ:
Vietnamese-Chatbot-Demo). - License: Chọn
mit(mã nguồn mở). - Select the Space SDK: Chọn Gradio (vì chúng ta đã dùng thư viện Gradio ở bài trước).
- Space Hardware: Chọn Free (CPU basic).
- Space name: Đặt tên tùy thích (ví dụ:
- Bấm Create Space.
Lúc này, bạn sẽ thấy một giao diện trông khá giống GitHub. Mảnh đất đã có, giờ chúng ta cần xây nhà.
Bước 2: Chuẩn Bị "Hành Lý" (File code)
Để máy chủ của Hugging Face hiểu và chạy được chatbot của bạn, chúng ta cần đúng 2 file. Bạn hãy tạo 2 file này sẵn trên máy tính nhé:
File 1: requirements.txt
Máy chủ cần biết nó phải cài đặt những thư viện nào. Bạn tạo một file tên là requirements.txt và dán nội dung này vào:
transformers
torch
gradio
accelerate
File 2: app.py
Đây là file chứa toàn bộ code của bạn. Hugging Face bắt buộc file code chính phải tên là app.py. Chúng ta sẽ dùng lại code ở Phần 2, nhưng mình đã tinh chỉnh thêm một chút xíu để Chatbot nhớ được lịch sử trò chuyện (biến history).
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Khai báo mô hình
model_id = "Qwen/Qwen2.5-1.5B-Instruct"
# Tải Tokenizer và Model
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto", torch_dtype=torch.float16)
# Hàm xử lý tin nhắn có nhớ lịch sử (history)
def chat_with_ai(user_message, history):
# Khởi tạo ngữ cảnh
messages = [{"role": "system", "content": "Bạn là một trợ lý ảo thông minh, thân thiện và luôn trả lời bằng tiếng Việt."}]
# Nạp lịch sử trò chuyện cũ vào bộ nhớ của AI
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
# Thêm câu hỏi mới nhất của người dùng
messages.append({"role": "user", "content": user_message})
# Dịch ra ngôn ngữ máy và sinh câu trả lời
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer([text], return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512, temperature=0.7)
response_ids = outputs[0][len(inputs.input_ids[0]):]
response = tokenizer.decode(response_ids, skip_special_tokens=True)
return response
# Tạo giao diện
demo = gr.ChatInterface(
fn=chat_with_ai,
title="🤖 Chatbot Tiếng Việt Trên Mây",
description="Chatbot này đang chạy hoàn toàn miễn phí trên Hugging Face Spaces!"
)
# Chạy ứng dụng
demo.launch()
Bước 3: Đẩy Code Lên Mây
Quay lại trang Space bạn vừa tạo trên trình duyệt:
- Chuyển sang tab Files.
- Bấm vào nút Add file -> Chọn Upload files.
- Kéo thả 2 file
app.pyvàrequirements.txttừ máy tính của bạn vào. - Ghi một dòng chú thích nhỏ ở khung "Commit message" (ví dụ: Initial commit) và bấm Commit changes to main.
Bước 4: Chờ Đợi Phép Màu
Ngay khi bạn bấm Commit, hệ thống của Hugging Face sẽ lập tức khởi động máy chủ. Bạn nhìn lên góc trên cùng sẽ thấy trạng thái đang là Building (Đang xây dựng).
Quá trình này mất khoảng 2 - 5 phút vì máy chủ cần tải PyTorch và mô hình Qwen nặng vài GB về. Khi trạng thái chuyển sang Running (Đang chạy) màu xanh lá cây... Xin chúc mừng!
Giao diện chatbot của bạn sẽ hiện ra ngay trên trang web. Bây giờ, bạn chỉ cần copy đường link trên thanh địa chỉ của trình duyệt (ví dụ: https://huggingface.co/spaces/ten-ban/Vietnamese-Chatbot-Demo) và gửi cho bất kỳ ai. Họ có thể mở bằng điện thoại hay máy tính đều chat được ngon lành!
⚠️ Mẹo sinh tồn thực chiến: Gói máy chủ miễn phí (Free CPU) của Hugging Face khá yếu. Khi ai đó nhắn tin, AI có thể mất 10 - 20 giây mới gõ xong câu trả lời. Trong môi trường thực tế doanh nghiệp, các lập trình viên sẽ nâng cấp lên máy chủ có GPU, hoặc thay vì bê nguyên bộ não AI (model) lên Spaces, họ sẽ gọi dữ liệu qua API (Inference API) để Chatbot trả lời mượt mà như chớp.
Lời Kết Toàn Tập
Vậy là qua 3 phần của series Hugging Face, bạn đã đi một chặng đường rất dài: Từ việc hiểu các khái niệm mù mờ (Models, Datasets), tự tay gõ code phân tích dữ liệu, cho đến việc tự ráp một con Chatbot và đưa nó lên Internet cho cả thế giới xem.
Trí tuệ Nhân tạo không còn là ma thuật độc quyền của các tập đoàn tỷ đô nữa. Với Python và nền tảng mã nguồn mở Hugging Face, quyền năng đang nằm ngay trong tay bạn. Hãy giữ ngọn lửa tò mò này và tiếp tục xây dựng những sản phẩm thật bùng nổ nhé! Happy Coding! 💻✨
All rights reserved