🧠 Context Engineering
📚 Bài viết liên quan:
- Generative AI - Cách AI hoạt động
- Prompt Engineering - Viết prompt hiệu quả
- Context Window - Giới hạn tokens
- RAG - Retrieval-Augmented Generation
Khái niệm cơ bản
Phần tiêu đề “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.
flowchart LR subgraph Construction["1️⃣ Construction"] SYS["📋 System Prompt"] HIST["💬 History"] RAG["📚 RAG Docs"] TOOL["🔧 Tools"] META["👤 User Metadata"] end
subgraph Optimization["2️⃣ Optimization"] SEL["🎯 Selection"] COMP["📦 Compression"] PRI["⬆️ Prioritization"] end
subgraph Formatting["3️⃣ Formatting"] XML["📄 XML Tags"] JSON["📋 JSON"] MD["📝 Markdown"] end
Construction --> Optimization --> Formatting --> LLM["🤖 LLM"]
style Construction fill:#e8f5e9,stroke:#4caf50 style Optimization fill:#fff3e0,stroke:#ff9800 style Formatting fill:#e3f2fd,stroke:#2196f3 style LLM fill:#f3e5f5,stroke:#9c27b0Prompt Engineering vs Context Engineering
Phần tiêu đề “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)
Phần tiêu đề “Vòng đời Context (Lifecycle)”1. Construction (Thu thập)
Phần tiêu đề “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)
Phần tiêu đề “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)
Phần tiêu đề “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
Phần tiêu đề “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 AHạ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 🧪
Phần tiêu đề “Bài tập thực hành 🧪”Mục tiêu
Phần tiêu đề “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
Phần tiêu đề “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
Phần tiêu đề “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
Phần tiêu đề “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
Phần tiêu đề “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