Generative AI: Hành trình của một Prompt
Bạn đã bao giờ tự hỏi: “Chuyện gì xảy ra từ khi tôi gõ prompt đến lúc AI trả lời?” Bài viết này sẽ giải thích chi tiết toàn bộ quá trình đó.
📚 Bài viết liên quan:
- Context Window - Giới hạn tokens của AI
- Context Engineering - Tối ưu input cho LLM
- Terminology - Thuật ngữ AI Engineering
1. Generative AI là gì?
Generative AI (GenAI) là các hệ thống AI có khả năng tạo ra nội dung mới (text, image, audio, code, video) thay vì chỉ phân loại hoặc dự đoán.
Sự khác biệt với AI truyền thống
AI Truyền thống (Discriminative):
Input: "Con vật này là gì?" + [hình con mèo]
Output: "Đây là con mèo" (phân loại)
Generative AI:
Input: "Viết bài thơ về con mèo"
Output: "Chú mèo lười biếng nằm hong nắng sớm,
Đôi mắt xanh ngọc lấp lánh hồn nhiên..." (tạo mới)Các loại Generative AI phổ biến
| Loại | Mô tả | Ví dụ |
|---|---|---|
| LLM (Large Language Model) | Sinh văn bản | GPT-5, Gemini 3, Claude 4.5 |
| Image Generation | Sinh hình ảnh | DALL-E 3, Midjourney, Imagen 3 |
| Audio/Voice | Sinh âm thanh/giọng nói | ElevenLabs, Suno |
| Video Generation | Sinh video | Sora, Runway Gen-3 |
| Code Generation | Sinh code | GitHub Copilot, Cursor |
2. Học như thế nào? (Learning Pattern)
GenAI học thông qua một quá trình gọi là Self-Supervised Learning (Học tự giám sát).
Mục tiêu đào tạo: Dự đoán từ tiếp theo
Model được huấn luyện với hàng nghìn tỷ tokens từ internet, sách, code, Wikipedia…
Training Data: "The cat sat on the ___"
Model học:
- "mat" ← xác suất cao (câu phổ biến)
- "roof" ← xác suất trung bình (hợp lý)
- "airplane" ← xác suất thấp (ít logic)
- "xyzabc" ← xác suất ~0 (vô nghĩa)Token là gì?
Token là đơn vị nhỏ nhất mà model xử lý. Không phải 1 từ = 1 token!
# Tokenization ví dụ (tiếng Anh)
"Hello, world!" → ["Hello", ",", " world", "!"] # 4 tokens
# Tiếng Việt tốn nhiều token hơn
"Xin chào Việt Nam" → ["X", "in", " ch", "ào", " Việt", " Nam"] # ~6-7 tokens💡 Quy tắc nhanh:
- Tiếng Anh: 1 token ≈ 0.75 từ
- Tiếng Việt: 1 từ ≈ 1.5-2 tokens
- Code: Mỗi dấu ngoặc, space đều tính riêng
Quá trình huấn luyện 3 giai đoạn
| Giai đoạn | Mục đích | Dữ liệu |
|---|---|---|
| Pre-training | Học cấu trúc ngôn ngữ, kiến thức chung | Terabytes text từ internet |
| Fine-tuning | Học làm theo hướng dẫn (instruction) | Dataset Q&A được chuẩn bị |
| RLHF | Học phản hồi an toàn, hữu ích | Human feedback/ratings |
3. Kiến trúc Transformer
Hầu hết GenAI hiện đại đều dựa trên kiến trúc Transformer (giới thiệu 2017 bởi Google).
Thành phần chính
Self-Attention: Trái tim của Transformer
Self-Attention cho phép model hiểu được mối quan hệ giữa các từ trong câu.
Câu: "Con mèo đuổi con chuột vì nó đói"
Attention tập trung:
"nó" → attention cao đến "mèo" (không phải "chuột")
Vì model học được rằng:
- "mèo đuổi" → mèo là chủ thể hành động
- "vì nó đói" → "đói" thường gắn với kẻ săn mồi🎯 Tại sao Attention quan trọng?
Trước Transformer, các model RNN/LSTM xử lý tuần tự từng từ → Quên thông tin ở đầu câu.
Transformer với Attention có thể nhìn toàn bộ câu cùng lúc → Hiểu context tốt hơn, train nhanh hơn (parallel).
4. Inference Pipeline: Từ Prompt đến Response
Đây là phần quan trọng nhất! Hãy theo dõi hành trình của prompt.
Bước 1: Tokenization
Prompt của bạn được chia thành tokens.
# Input
prompt = "Giải thích đệ quy trong Python"
# Tokenization
tokens = ["Gi", "ải", " th", "ích", " đ", "ệ", " quy", " trong", " Python"]
# → Vector IDs: [15234, 892, 1023, 456, 227, 1891, 7823, 234, 12892]Bước 2: Embedding
Mỗi token ID được chuyển thành vector số (embedding) trong không gian nhiều chiều.
Token "Python" → [0.23, -0.67, 0.91, ..., 0.12] (768-4096 chiều)
Các từ có nghĩa tương tự sẽ có vector gần nhau:
- "Python" ↔ "Java" ↔ "JavaScript" → Gần nhau
- "Python" ↔ "apple" → Xa nhauBước 3: Qua các Transformer Layers
Embeddings đi qua nhiều lớp Transformer (GPT-4 có ~120 layers).
Bước 4: Output Generation (Autoregressive)
Model sinh từng token một, mỗi lần chọn token có xác suất cao nhất.
Prompt: "Đệ quy là"
Bước 1: "Đệ quy là" → P(kỹ)=0.7, P(một)=0.2 → Chọn "kỹ"
Bước 2: "Đệ quy là kỹ" → P(thuật)=0.9 → Chọn "thuật"
Bước 3: "Đệ quy là kỹ thuật" → P(lập)=0.6 → Chọn "lập"
...
Cho đến khi: Token <END> hoặc max_tokensTổng quan Pipeline
5. Non-Determinism: Tại sao câu trả lời không giống nhau?
Nếu chạy cùng 1 prompt 10 lần, bạn có thể nhận được 10 câu trả lời khác nhau. Tại sao?
Temperature
Temperature điều chỉnh độ “sáng tạo” của model.
Temperature = 0 (Deterministic)
→ Luôn chọn token xác suất CAO NHẤT
→ Câu trả lời giống nhau mọi lần
→ Dùng cho: Coding, Math, Facts
Temperature = 1 (Creative)
→ Chọn ngẫu nhiên theo phân phối xác suất
→ Câu trả lời đa dạng
→ Dùng cho: Creative writing, BrainstormingVí dụ trực quan:
Prompt: "Viết một từ mô tả bầu trời"
Token probabilities:
"xanh" = 40%
"trong" = 25%
"đẹp" = 15%
"cao" = 10%
"rộng" = 10%
Temperature=0: Luôn chọn "xanh" (40%)
Temperature=0.7: Thường "xanh", đôi khi "trong" hoặc "đẹp"
Temperature=1.5: Có thể chọn bất kỳ từ nàoTop-P (Nucleus Sampling)
Top-P giới hạn pool các tokens được xem xét.
Top-P = 0.9 nghĩa là:
→ Chỉ xem xét các token có tổng xác suất = 90%
→ Loại bỏ các tokens "đuôi" ít khả năng
Ví dụ:
Tokens: xanh(40%) + trong(25%) + đẹp(15%) + cao(10%) = 90%
→ Loại bỏ: "rộng" (10% còn lại)
→ Giảm khả năng sinh text "lạ"Top-K
Top-K giới hạn số lượng tokens được xem xét.
Top-K = 3 nghĩa là:
→ Chỉ xem xét 3 tokens có xác suất cao nhất
→ Đơn giản hơn Top-P
Ví dụ: Chỉ chọn trong ["xanh", "trong", "đẹp"]Bảng so sánh các tham số
| Tham số | Giá trị thấp | Giá trị cao | Dùng khi |
|---|---|---|---|
| Temperature | 0-0.3: Chính xác, lặp lại | 0.7-1.5: Sáng tạo, đa dạng | Code → thấp; Story → cao |
| Top-P | 0.1: Rất hạn chế | 0.9-1.0: Linh hoạt | Thường dùng 0.9-0.95 |
| Top-K | 1-10: Ít lựa chọn | 50-100: Nhiều lựa chọn | Thường dùng 40-50 |
6. Tại sao AI trả lời thuyết phục?
Đây là câu hỏi hay nhất! Tại sao GPT/Gemini/Claude thường đưa ra câu trả lời “có vẻ đúng”?
Lý do 1: Học từ lượng dữ liệu khổng lồ
GPT-4 pre-training: ~13 trillion tokens
≈ 10 triệu cuốn sách
≈ Toàn bộ Wikipedia x1000
≈ Hàng triệu code repositoriesModel đã “đọc” hầu hết những gì con người viết!
Lý do 2: Pattern Recognition siêu mạnh
Transformer với Self-Attention cực kỳ giỏi nhận diện patterns.
Pattern học được:
"X là Y vì Z" → Cấu trúc giải thích
"Bước 1... Bước 2..." → Cấu trúc hướng dẫn
"def function_name(params):" → Cấu trúc Python
→ Khi bạn hỏi "Giải thích X", model tự động dùng pattern giải thích!Lý do 3: Compression = Understanding?
Một giả thuyết thú vị: Nén hiệu quả = Hiểu sâu
Để dự đoán từ tiếp theo chính xác, model PHẢI hiểu:
- Grammar (ngữ pháp)
- Facts (kiến thức)
- Logic (suy luận)
- Context (ngữ cảnh)
→ "Nén" terabytes text vào model GB = Phải "hiểu" để nén!Lý do 4: RLHF - Học từ phản hồi con người
Giai đoạn RLHF:
Human: "Câu trả lời A tốt hơn B"
Model: Cập nhật weights để ưu tiên kiểu A
→ Model học được style trả lời "thuyết phục"
→ Câu văn mạch lạc, có cấu trúc, giải thích từng bước⚠️ Cảnh báo: “Thuyết phục” ≠ “Đúng”
Model có thể tự tin nói sai!
Ví dụ:
Q: "Ai phát minh ra điện thoại?"
A: "Thomas Edison phát minh ra điện thoại vào năm 1876."
→ Câu trả lời rất tự tin
→ Nhưng SAI! (Alexander Graham Bell mới đúng)
Đây gọi là "Hallucination"⚠️ Luôn verify thông tin quan trọng! GenAI giỏi tổng hợp và trình bày, nhưng có thể “bịa” sự thật.
7. Prompting: Nghệ thuật ra lệnh cho AI
Prompt tốt = Output tốt. Đây là một số kỹ thuật cơ bản.
Zero-Shot Prompting
Không cần ví dụ, chỉ cần instruction rõ ràng.
❌ "Phân loại sentiment"
✅ "Phân loại sentiment của câu sau thành 'positive', 'negative', hoặc 'neutral':
'Sản phẩm này tuyệt vời!'"Few-Shot Prompting
Cho vài ví dụ trước khi hỏi.
Ví dụ 1: "Tôi yêu món này!" → positive
Ví dụ 2: "Chất lượng tệ quá" → negative
Ví dụ 3: "Giao hàng bình thường" → neutral
Bây giờ phân loại: "Sẽ mua lại lần nữa!"
→ positiveChain-of-Thought (CoT)
Yêu cầu model giải thích từng bước.
❌ "25 x 17 = ?"
✅ "Tính 25 x 17. Giải thích từng bước."
Output:
"Bước 1: 25 x 10 = 250
Bước 2: 25 x 7 = 175
Bước 3: 250 + 175 = 425
Đáp án: 425"System Prompt
Đặt vai trò và quy tắc cho model.
system = """Bạn là trợ lý lập trình Python.
Quy tắc:
- Luôn thêm type hints
- Viết docstring theo Google style
- Giải thích logic trước khi code"""
user = "Viết hàm tính giai thừa"8. Bài tập thực hành 🧪
Bài 1: Khám phá Temperature
- Truy cập Google AI Studio
- Dùng prompt: “Viết 1 câu mô tả buổi sáng”
- Thử với Temperature: 0, 0.5, 1.0, 1.5
- Quan sát sự khác biệt
Bài 2: So sánh Tokenization
- Truy cập OpenAI Tokenizer
- So sánh số tokens:
- “Hello world” vs “Xin chào thế giới”
def calculate(x):vsfunction calculate(x) { }
Bài 3: Chain-of-Thought
Hỏi model 1 câu logic phức tạp với và không có CoT:
❌ "A có 5 quả táo, cho B 2 quả, B cho lại A 1 quả. Hỏi A có mấy quả?"
✅ "A có 5 quả táo, cho B 2 quả, B cho lại A 1 quả.
Hãy tính từng bước và cho biết A có mấy quả?"Tóm tắt
| Khái niệm | Ý nghĩa |
|---|---|
| Generative AI | AI tạo nội dung mới (text, image, code…) |
| Transformer | Kiến trúc với Self-Attention, nền tảng của LLM |
| Token | Đơn vị nhỏ nhất model xử lý |
| Inference | Quá trình từ prompt → response |
| Temperature | Điều chỉnh độ sáng tạo (0 = chính xác, 1+ = sáng tạo) |
| Top-P/Top-K | Giới hạn pool tokens được xem xét |
| Prompting | Nghệ thuật viết instruction hiệu quả |
Bài tiếp theo: Context Window - Hiểu về giới hạn tokens và cách tối ưu.