Formatting & Structure
Khái niệm cơ bản
Phần tiêu đề “Khái niệm cơ bản”Format giống như cách bạn sắp xếp tủ quần áo…
Cùng một lượng quần áo, nhưng:
- Ném đống → Khó tìm (AI bị confused)
- Gấp gọn, phân loại → Dễ tìm (AI hiểu nhanh)
LLM là pattern matchers - chúng CỰC KỲ nhạy cảm với cách bạn trình bày thông tin.
1. Delimiters (Dấu phân cách)
Phần tiêu đề “1. Delimiters (Dấu phân cách)”Tại sao cần?
Phần tiêu đề “Tại sao cần?”Phân tách rõ ràng giữa instruction và data để AI không nhầm lẫn.
So sánh
Phần tiêu đề “So sánh”❌ BAD (Không delimiter):
Translate this to English: Xin chào. Also remember to be polite.AI có thể dịch cả “Also remember to be polite” → Bug!
✅ GOOD (Có delimiter):
### INSTRUCTION ###Translate the text below to English.
### TEXT ###Xin chào. Also remember to be polite.Các delimiter phổ biến
Phần tiêu đề “Các delimiter phổ biến”| Delimiter | Khi nào dùng |
|---|---|
### |
General purpose |
--- |
Markdown-style |
""" |
Code strings |
<tag></tag> |
Structured data (Claude yêu thích) |
``` |
Code blocks |
2. Format Wars: JSON vs YAML vs XML vs Markdown
Phần tiêu đề “2. Format Wars: JSON vs YAML vs XML vs Markdown”{ "user": { "name": "Nguyễn Văn A", "tier": "Gold" }, "orders": [ {"id": "123", "status": "shipped"} ]}- ✅ Dễ parse bằng code
- ✅ GPT-4/Claude hiểu cực tốt (trained on code)
- ❌ Tốn tokens (ngoặc, quotes)
user: name: Nguyễn Văn A tier: Goldorders: - id: "123" status: shipped- ✅ Ít tokens hơn JSON ~30%
- ✅ Human-readable
- ❌ Sensitive với indentation
<user> <name>Nguyễn Văn A</name> <tier>Gold</tier></user><orders> <order id="123" status="shipped"/></orders>- ✅ Claude yêu thích XML tags!
- ✅ Ranh giới bắt đầu/kết thúc RÕ RÀNG
- ❌ Verbose nhất
Markdown
Phần tiêu đề “Markdown”## User Info- **Name:** Nguyễn Văn A- **Tier:** Gold
## Orders| ID | Status ||----|--------|| 123 | Shipped |- ✅ Tự nhiên nhất (training data = web)
- ✅ Đẹp khi render
- ❌ Khó parse programmatic
3. The Perfect Layout (Thứ tự tối ưu)
Phần tiêu đề “3. The Perfect Layout (Thứ tự tối ưu)”LLM có Recency Bias - nhớ tốt phần ĐẦU và phần CUỐI.
Cấu trúc đề xuất
Phần tiêu đề “Cấu trúc đề xuất”1. [SYSTEM] - Persona, rules (ĐẦU - nhớ tốt)2. [TOOLS] - Function definitions3. [KNOWLEDGE] - RAG documents (GIỮA - hay quên)4. [HISTORY] - Conversation summary5. [USER INPUT] - Current query (CUỐI - nhớ tốt nhất!)6. [OUTPUT FORMAT] - Expected response formatVí dụ hoàn chỉnh
Phần tiêu đề “Ví dụ hoàn chỉnh”<system>Bạn là AI hỗ trợ của BankXYZ. Trả lời chính xác, không bịa thông tin.Nếu không biết, nói "Em cần chuyển đến nhân viên hỗ trợ."</system>
<tools>[{"name": "check_balance", "description": "Kiểm tra số dư tài khoản"}]</tools>
<knowledge>- Lãi suất tiết kiệm 12 tháng: 5.5%/năm- Hotline: 1900-xxx-xxx</knowledge>
<conversation_summary>User hỏi về lãi suất, đã được cung cấp thông tin 12 tháng.</conversation_summary>
<user_input>Còn lãi suất 6 tháng thì sao?</user_input>
<output_format>Trả lời dưới 100 từ, có thể dùng bullet points.</output_format>Token Efficiency Chart
Phần tiêu đề “Token Efficiency Chart”| Format | Example | Tokens |
|---|---|---|
| Plain text | “Name is John, age is 30” | 8 |
| JSON | {"name":"John","age":30} |
12 |
| YAML | name: John\nage: 30 |
9 |
| XML | <name>John</name><age>30</age> |
14 |
💡 Tip: Dùng YAML cho data lớn, XML cho boundaries quan trọng.
Bài tập thực hành 🧪
Phần tiêu đề “Bài tập thực hành 🧪”Mục tiêu
Phần tiêu đề “Mục tiêu”Benchmark các format khác nhau với cùng một dataset.
import tiktoken
enc = tiktoken.encoding_for_model("gpt-4o")
data = { "users": [ {"name": "Alice", "age": 25, "city": "Hanoi"}, {"name": "Bob", "age": 30, "city": "HCMC"}, ]}
# JSON formatjson_str = json.dumps(data)print(f"JSON: {len(enc.encode(json_str))} tokens")
# YAML formatyaml_str = yaml.dump(data)print(f"YAML: {len(enc.encode(yaml_str))} tokens")
# Markdown formatmd_str = """| Name | Age | City ||------|-----|------|| Alice | 25 | Hanoi || Bob | 30 | HCMC |"""print(f"Markdown: {len(enc.encode(md_str))} tokens")Kết quả mong đợi
Phần tiêu đề “Kết quả mong đợi”JSON: ~45 tokensYAML: ~35 tokensMarkdown: ~40 tokensThử thách
Phần tiêu đề “Thử thách”Thử với dataset 100 users và so sánh % tiết kiệm.