Bỏ qua để đến nội dung

Components of Context

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:#9c27b0

Định nghĩa AI là aiAI 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).


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

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.


Đị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.


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)

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>

Phân tích và cải thiện context của một chatbot hiện có.

prompt = f"""
{user_message}
Hãy trả lời câu hỏi trên.
"""
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êm component thứ 7: Assistant’s Previous Response (để AI biết mình vừa nói gì).