Components of Context
Khái niệm cơ bản
Hãy tưởng tượng context như một “hồ sơ bệnh nhân” cho AI…
Khi bạn đến gặp bác sĩ, họ cần biết:
- Tiền sử bệnh → Conversation History
- Kết quả xét nghiệm → RAG Documents
- Dị ứng thuốc → User Profile/State
- Công cụ chẩn đoán → Tools
AI cũng cần “hồ sơ” tương tự để đưa ra câu trả lời chính xác.

6 Thành phần của Context
1. System Instructions (Bộ luật)
Định nghĩa AI là ai và AI KHÔNG được làm gì.
<system>
Bạn là trợ lý lập trình Python senior với 10 năm kinh nghiệm.
- Luôn viết code có type hints
- KHÔNG BAO GIỜ dùng "import *"
- Giải thích ngắn gọn, ưu tiên code
</system>💡 Best Practice: Đặt system prompt ở ĐẦU TIÊN, giữ ngắn (dưới 500 tokens).
2. Conversation History (Bộ nhớ ngắn hạn)
Các tin nhắn trước đó trong cuộc hội thoại.
Vấn đề: Context window có hạn → Không thể lưu vô tận.
Giải pháp:
| Kỹ thuật | Cách hoạt động |
|---|---|
| Sliding Window | Chỉ giữ N tin nhắn cuối (vd: 20 tin) |
| Summarization | Tóm tắt 100 tin cũ thành 1 đoạn summary |
| Semantic Selection | Chọn tin liên quan nhất bằng vector search |
3. RAG Documents (Bộ nhớ dài hạn)
Kiến thức từ database, files, wiki được retrieve động.
# Pseudo-code RAG flow
relevant_docs = vector_db.search(user_query, top_k=5)
context += f"<knowledge_base>{relevant_docs}</knowledge_base>"⚠️ Cảnh báo: Đừng inject docs không liên quan → Gây nhiễu, tốn token.
4. Tools & Functions (Siêu năng lực)
Định nghĩa các công cụ AI có thể gọi.
{
"name": "get_stock_price",
"description": "Lấy giá cổ phiếu realtime",
"parameters": {
"symbol": {"type": "string", "description": "VD: AAPL, VNM"}
}
}Quy tắc: Chỉ inject tools liên quan. Có 100 tools nhưng user hỏi về thời tiết → Chỉ inject get_weather.
5. State & Environment (Ngữ cảnh thực)
Thông tin về môi trường hiện tại:
- Thời gian:
2025-01-01T06:00:00+07:00(quan trọng cho query về “hôm nay”) - Vị trí: Hà Nội (cho local recommendations)
- Thiết bị: Mobile (để format response phù hợp)
- User tier: Premium (để biết features available)
6. Output Format (Khuôn mẫu)
Hướng dẫn AI trả lời theo format cụ thể.
<output_format>
Trả lời bằng JSON với schema:
{
"answer": "...",
"confidence": 0-100,
"sources": ["..."]
}
</output_format>Bài tập thực hành 🧪
Mục tiêu
Phân tích và cải thiện context của một chatbot hiện có.
Code mẫu (BAD)
prompt = f"""
{user_message}
Hãy trả lời câu hỏi trên.
"""Code cải tiến (GOOD)
prompt = f"""
<system>
Bạn là AI hỗ trợ khách hàng của TechShop.
Trả lời ngắn gọn, thân thiện.
</system>
<user_profile>
Tên: {user.name}
Hạng: {user.tier}
</user_profile>
<recent_orders>
{format_orders(user.orders[-3:])}
</recent_orders>
<current_time>
{datetime.now().isoformat()}
</current_time>
<user_query>
{user_message}
</user_query>
"""Thử thách
Thêm component thứ 7: Assistant’s Previous Response (để AI biết mình vừa nói gì).