Components of Context
Khái niệm cơ bản
Phần tiêu đề “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.
flowchart TD subgraph Components["📋 6 Thành phần Context"] direction TB
C1["1️⃣ System Instructions<br/>📜 Bộ luật của AI"] C2["2️⃣ Conversation History<br/>💬 Bộ nhớ ngắn hạn"] C3["3️⃣ RAG Documents<br/>📚 Bộ nhớ dài hạn"] C4["4️⃣ Tools & Functions<br/>🔧 Siêu năng lực"] C5["5️⃣ State & Environment<br/>🌍 Ngữ cảnh thực"] C6["6️⃣ Output Format<br/>📝 Khuôn mẫu"] end
C1 --> CTX["📦 Context Window"] C2 --> CTX C3 --> CTX C4 --> CTX C5 --> CTX C6 --> CTX
CTX --> LLM["🤖 LLM Response"]
style Components fill:#e8f5e9,stroke:#4caf50 style CTX fill:#fff3e0,stroke:#ff9800 style LLM fill:#f3e5f5,stroke:#9c27b06 Thành phần của Context
Phần tiêu đề “6 Thành phần của Context”1. System Instructions (Bộ luật)
Phần tiêu đề “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)
Phần tiêu đề “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)
Phần tiêu đề “3. RAG Documents (Bộ nhớ dài hạn)”Kiến thức từ database, files, wiki được retrieve động.
# Pseudo-code RAG flowrelevant_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)
Phần tiêu đề “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)
Phần tiêu đề “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)
Phần tiêu đề “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 🧪
Phần tiêu đề “Bài tập thực hành 🧪”Mục tiêu
Phần tiêu đề “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)
Phần tiêu đề “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)
Phần tiêu đề “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
Phần tiêu đề “Thử thách”Thêm component thứ 7: Assistant’s Previous Response (để AI biết mình vừa nói gì).