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

🧠 Context Engineering

📚 Bài viết liên quan:

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

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.


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

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

Cấu trúc dữ liệu để LLM dễ parse:

  • XML tags cho separation rõ ràng
  • JSON cho structured data
  • Markdown cho readability

<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?”


Xây dựng prompt template cho chatbot FAQ của một công ty tech.

  1. System prompt định nghĩa persona
  2. Inject context từ knowledge base (giả lập)
  3. Format bằng XML tags
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>
"""

Mở rộng template để thêm:

  • Conversation history (5 tin nhắn gần nhất)
  • Sentiment analysis của user