Context Engineering
Khái niệm cơ bản
Tưởng tượng bạn là trợ lý của một CEO bận rộn…
Sếp hỏi: “Cuộc họp với Jim ngày mai thế nào rồi?”
Trợ lý kém (chỉ biết nghe lệnh):
“Jim nào ạ? Họp lúc mấy giờ ạ?”
Trợ lý giỏi (biết chuẩn bị context):
“Sáng mai anh kín lịch rồi ạ. Em gợi ý họp với Jim lúc 2h chiều tại Starbucks - chỗ Jim hay ngồi. Email trước cho thấy Jim quan tâm đến vấn đề pricing, em đã chuẩn bị slide rồi.”
Sự khác biệt? Context Engineering - Nghệ thuật chuẩn bị thông tin CHO AI trước khi nó trả lời.

Prompt Engineering vs Context Engineering
| Prompt Engineering | Context Engineering |
|---|---|
| Viết câu hỏi hay | Thiết kế hệ thống dữ liệu |
| ”Hãy trả lời lịch sự” | Inject lịch sử chat, profile user |
| Tập trung vào instruction | Tập trung vào data pipeline |
| Kỹ năng cá nhân | Kiến trúc hệ thống |
💡 Prompt Engineering là viết 1 email hay. Context Engineering là xây dựng cả hệ thống CRM.
Vòng đời Context (Lifecycle)
1. Construction (Thu thập)
Gom tất cả dữ liệu có thể liên quan:
- System Prompt: Personality, rules, constraints
- Conversation History: Các tin nhắn trước đó
- RAG Results: Documents từ vector search
- Tool Outputs: Kết quả từ API calls, database
- User Metadata: Timezone, language, preferences
2. Optimization (Tối ưu)
Lọc và nén để vừa Context Window:
- Selection: Chỉ lấy thông tin liên quan
- Compression: Tóm tắt nội dung dài
- Prioritization: Đặt thông tin quan trọng ở đầu/cuối
3. Formatting (Định dạng)
Cấu trúc dữ liệu để LLM dễ parse:
- XML tags cho separation rõ ràng
- JSON cho structured data
- Markdown cho readability
Ví dụ thực tế: Customer Support Bot
<system>
Bạn là AI hỗ trợ khách hàng của Shopee.
Trả lời bằng tiếng Việt, thân thiện, ngắn gọn.
</system>
<user_profile>
Tên: Nguyễn Văn A
Hạng thành viên: Gold
Đơn hàng gần nhất: #12345 (Đang vận chuyển)
</user_profile>
<recent_orders>
- #12345: iPhone 15 Pro - Đang giao (Dự kiến: 3/1/2025)
- #12340: Tai nghe Sony - Đã nhận
</recent_orders>
<conversation_history>
User: Đơn hàng của tôi đâu rồi?
</conversation_history>AI có thể trả lời ngay: “Chào anh A! Đơn hàng #12345 (iPhone 15 Pro) đang trên đường giao, dự kiến đến ngày 3/1 ạ. Anh cần em hỗ trợ thêm gì không?”
Bài tập thực hành 🧪
Mục tiêu
Xây dựng prompt template cho chatbot FAQ của một công ty tech.
Yêu cầu
- System prompt định nghĩa persona
- Inject context từ knowledge base (giả lập)
- Format bằng XML tags
Template mẫu
def build_context(user_query: str, user_info: dict, kb_results: list) -> str:
return f"""
<system>
Bạn là AI hỗ trợ của TechCorp. Chỉ trả lời dựa trên knowledge base.
Nếu không biết, nói "Em không có thông tin này, vui lòng liên hệ hotline."
</system>
<user_info>
Name: {user_info.get('name', 'Guest')}
Plan: {user_info.get('plan', 'Free')}
</user_info>
<knowledge_base>
{chr(10).join(kb_results)}
</knowledge_base>
<user_query>
{user_query}
</user_query>
"""Thử thách
Mở rộng template để thêm:
- Conversation history (5 tin nhắn gần nhất)
- Sentiment analysis của user
Các bài viết chi tiết
- Components of Context - 6 loại dữ liệu đầu vào
- Optimization Strategies - Kỹ thuật lọc và nén
- Formatting Best Practices - XML vs JSON vs Markdown