Cấu hình Chatbot Trí tuệ Nhân tạo (AI Chatbot)
Chạy các mô hình ngôn ngữ lớn (LLM) cục bộ trên Linux bằng Ollama - từ cài đặt đến tương tác với AI Chatbot mà không cần Internet hay đám mây.
Mục Tiêu Học Tập
Sau khi hoàn thành chương này, bạn sẽ nắm được các kiến thức sau:
LLM vs SLM
Hiểu sự khác biệt giữa Mô hình Ngôn ngữ Lớn (LLM) và Mô hình Ngôn ngữ Nhỏ (SLM), ưu nhược điểm khi chạy cục bộ.
Cài đặt Ollama
Cài đặt Ollama server trên Linux, kiểm tra phần cứng (CPU/RAM/GPU/Disk), quản lý qua systemd.
Chạy mô hình AI
Sử dụng `ollama run` để tải và tương tác với Llama 3.1, Mistral, Phi-3 từ dòng lệnh (command line).
Quản lý phiên làm việc
Lưu phiên bằng `/save`, tải lại bằng `ollama run`, liệt kê bằng `ollama list`, xóa bằng `ollama rm`.
Yêu cầu phần cứng
RAM 8/16/32GB cho các mô hình 3B/7B/13B, hỗ trợ CPU AVX/AVX-512, VRAM GPU và hơn 12GB ổ cứng.
Ollama REST API
Gọi Ollama qua REST API cổng 11434 bằng curl/Python, tích hợp AI vào ứng dụng và các kịch bản (script).
Lý Thuyết
SLM vs LLM - Khi nào chọn mô hình nhỏ?
Mô hình Ngôn ngữ Nhỏ (SLMs) phù hợp khi cần: bảo mật dữ liệu (không tải lên đám mây), chạy ngoại tuyến (offline), chi phí thấp và phạm vi hẹp (như chatbot chuyên dụng). LLM lớn (400B+) thường chạy trên đám mây, trong khi SLM (3-13B) có thể chạy mượt mà trên PC cá nhân.
- - Chạy tốt: 8GB RAM, 6 nhân CPU
- - Giỏi viết mã (code) và shell script
- - Có xu hướng trả lời chi tiết
- - Kích thước nhỏ: 2.2 GB đĩa
- - Mã nguồn mở từ Meta AI
- - 8 tỷ tham số, lượng tử hóa Q4_K_M
- - Ngữ cảnh (Context): 131,072 tokens
- - Kích thước: 4.9 GB, cần 16GB RAM
- - Startup Pháp, hỗ trợ đa ngôn ngữ
- - Hỗ trợ tốt EN, FR, ES, DE, IT
- - Trả lời súc tích, ngắn gọn
- - Kích thước: 4.4 GB đĩa
| Tài nguyên | Mô hình 3B | Mô hình 7B | Mô hình 13B |
|---|---|---|---|
| RAM tối thiểu | 8 GB | 16 GB | 32 GB |
| VRAM GPU | 2 GB | 4 GB (Q4) | 8 GB |
| Dung lượng đĩa | +2-3 GB | +4-5 GB | +12+ GB |
| CPU | Tối thiểu 4 nhân (khuyến nghị 8). AVX/AVX-512 giúp tăng tốc tính toán ma trận của mạng thần kinh. | ||
# Kiểm tra số lượng nhân CPU và hỗ trợ AVX
$ grep -c processor /proc/cpuinfo
6
$ grep -i avx /proc/cpuinfo | head -1
flags : fpu vme de pse ... avx f16c rdrand avx512f ...
# Kiểm tra RAM và dung lượng đĩa
$ free -h
total used free
Mem: 15Gi 3.2Gi 11Gi
$ df -h /
Filesystem Size Used Avail Use%
/dev/sda1 50G 12G 38G 24%
Cài đặt và chạy Ollama
# Bước 1: Tải và cài đặt Ollama server
$ curl -fsSL https://ollama.com/install.sh | sh
>>> Đang kích hoạt và khởi động dịch vụ ollama...
>>> Ollama API hiện đã khả dụng tại 127.0.0.1:11434.
>>> Cài đặt hoàn tất. Chạy "ollama" từ dòng lệnh.
CẢNH BÁO: Không tìm thấy GPU NVIDIA/AMD. Ollama sẽ chạy ở chế độ chỉ dùng CPU.
# Bước 2: Kiểm tra trạng thái dịch vụ và phiên bản
$ sudo systemctl status ollama
* ollama.service - Dịch vụ Ollama
Active: active (running) since Sun 2025-09-21 19:09:49 EDT
$ ollama -v
ollama version is 0.12.0
# Bước 3: Tải và chạy Llama 3.1 8B
$ ollama run llama3.1:8b
pulling manifest
pulling 667b0c1932bc: 100% ..... 4.9 GB
verifying sha256 digest
success
>>>
# Xem thông tin mô hình đang chạy
>>> /show info
kiến trúc llama
tham số 8.0B
độ dài ngữ cảnh 131072
lượng tử hóa Q4_K_M
# Lưu phiên làm việc và liệt kê mô hình
>>> /save mysession
Đã tạo mô hình mới 'mysession'
>>> /bye
$ ollama list
NAME ID SIZE MODIFIED
phi3:mini 4f2222927938 2.2 GB About an hour ago
mistral:latest 6577803aa9a0 4.4 GB 30 hours ago
mysession:latest 89d3d23af648 4.9 GB 2 days ago
llama3.1:8b 46e0c10c039e 4.9 GB 2 days ago
Ollama REST API - Tích hợp AI vào ứng dụng
Ollama cung cấp REST API tại http://127.0.0.1:11434. Có thể gọi từ curl, Python, Node.js. Các endpoint chính bao gồm: `/api/generate` (sinh văn bản), `/api/tags` (liệt kê mô hình), `/api/pull` (tải mô hình).
# Gọi API sinh văn bản
$ curl http://localhost:11434/api/generate \
-d '{"model":"llama3.1:8b","prompt":"Giải thích firewalld","stream":false}'
{"model":"llama3.1:8b","response":"firewalld là một quản lý tường lửa động
sử dụng các zone và dịch vụ để kiểm soát truy cập mạng...",
"done":true}
# Liệt kê các mô hình hiện có
$ curl http://localhost:11434/api/tags
{"models":[{"name":"llama3.1:8b","size":4921438208},
{"name":"mistral:latest","size":4113301052}]}
Tùy chỉnh mô hình với Modelfile
Bạn có thể tùy chỉnh thông điệp hệ thống (system prompt) và các tham số mô hình qua Ollama Modelfile để tạo ra một trợ lý AI chuyên biệt.
$ cat Modelfile
FROM llama3.1:8b
SYSTEM "Bạn là một quản trị viên hệ thống Linux chuyên nghiệp.
Luôn cung cấp các lệnh chính xác kèm theo các biện pháp bảo mật tốt nhất."
PARAMETER temperature 0.3
PARAMETER num_ctx 4096
$ ollama create linux_expert -f Modelfile
đang chuyển dữ liệu mô hình ...
thành công
$ ollama run linux_expert
>>> Làm thế nào để kiểm tra trạng thái SELinux?
Sử dụng 'getenforce' để kiểm tra chế độ: Enforcing/Permissive/Disabled
Sử dụng 'sestatus' để xem thông tin chi tiết bao gồm loại chính sách và phiên bản.
Lab Thực Hành
Cài đặt Ollama và chạy AI chatbot cục bộ trên Linux
Kiểm tra phần cứng hệ thống
Xác minh CPU có hỗ trợ AVX, kiểm tra RAM và dung lượng đĩa còn trống trước khi cài đặt.
$ grep -c processor /proc/cpuinfo
6
$ grep -i avx /proc/cpuinfo | head -1 | grep -o avx
avx
$ free -h
Mem: 15Gi total, 3.2Gi used, 11Gi free
$ df -h /
/dev/sda1 50G 12G 38G 24% /
Cài đặt Ollama server
Tải và chạy script cài đặt chính thức từ ollama.com, sau đó kích hoạt dịch vụ hệ thống.
$ curl -fsSL https://ollama.com/install.sh | sh
>>> Cài đặt hoàn tất. Chạy "ollama" để bắt đầu.
$ sudo systemctl enable --now ollama
$ ollama -v
phiên bản ollama là 0.12.0
Tải và chạy Llama 3.1:8b
Tải mô hình (khoảng 4.9GB) và bắt đầu tương tác với AI. Đừng quên xem qua giấy phép trước khi dùng.
$ ollama run llama3.1:8b
đang tải manifest ... đang tải 667b0c1932bc: 100% 4.9 GB ... thành công
>>> Viết một bash script để sao lưu thư mục /etc
#!/bin/bash
tar -czf /tmp/etc_backup_$(date +%Y%m%d).tar.gz /etc
echo "Sao lưu xong: /tmp/etc_backup_$(date +%Y%m%d).tar.gz"
>>> /show license
THỎA THUẬN GIẤY PHÉP CỘNG ĐỒNG LLAMA 3.1 ...
Chạy Mistral và Phi-3:mini
So sánh khả năng và tốc độ của các mô hình khác nhau trên cùng một phần cứng.
$ ollama run mistral
>>> Liệt kê 5 công cụ bảo mật Linux kèm mô tả ngắn gọn
1. SELinux - Kiểm soát truy cập bắt buộc (MAC)
2. firewalld - Tường lửa động dựa trên zone
3. fail2ban - Tự động chống brute-force
4. auditd - Nhật ký sự kiện bảo mật
5. OpenSSH - Truy cập từ xa được mã hóa
>>> /bye
$ ollama run phi3:mini
>>> Viết lệnh bash ngắn nhất để tìm các file có quyền SUID
find / -perm /4000 -ls 2>/dev/null
Lưu phiên và quản lý mô hình
Lưu trạng thái hội thoại hiện tại, liệt kê các mô hình đã tải và xóa những thứ không cần thiết.
>>> /save tro_ly_bao_mat_linux
Đã tạo mô hình mới 'tro_ly_bao_mat_linux'
>>> /bye
$ ollama list
tro_ly_bao_mat_linux:latest abc123 4.4 GB 2 phút trước
mistral:latest def456 4.4 GB 1 giờ trước
llama3.1:8b ghi789 4.9 GB 2 ngày trước
$ ollama rm phi3:mini
đã xóa 'phi3:mini'
Gọi Ollama API từ bash script
Tạo kịch bản tự động gọi API của AI để phân tích nhật ký hoặc trả lời câu hỏi nhanh.
$ cat ask_ai.sh
#!/bin/bash
PROMPT="$1"
curl -s http://localhost:11434/api/generate \
-d "{\"model\":\"mistral\",\"prompt\":\"$PROMPT\",\"stream\":false}" \
| python3 -c "import sys,json; print(json.load(sys.stdin)['response'])"
$ chmod +x ask_ai.sh
$ ./ask_ai.sh "Làm sao để kiểm tra các lần đăng nhập thất bại?"
Kiểm tra /var/log/secure hoặc dùng: journalctl | grep 'Failed password'
Hoặc dùng: 'lastb | head -20' để xem các lần đăng nhập sai gần đây.
Câu Hỏi Ôn Tập
Sự khác biệt chính giữa LLM và SLM là gì? Khi nào nên dùng SLM?
Cần bao nhiêu RAM để chạy mô hình có 7 tỷ (7B) tham số?
Lệnh để tải và chạy Mistral là gì? Dấu nhắc tương tác trông thế nào?
AVX và AVX-512 ảnh hưởng thế nào đến hiệu suất của mô hình AI?
Làm thế nào để lưu một phiên (session) trong Ollama và tải lại sau đó?
Ollama REST API nằm ở đâu? Cho ví dụ sử dụng curl.
Lệnh nào dùng để xem giấy phép và thông tin kỹ thuật của mô hình?
Cách tinh chỉnh (fine-tune) mô hình AI với dữ liệu nội bộ?