Nâng caoKỹ thuậtTổng hợp

Context Engineering — Nghệ thuật quản lý context cho Claude

Nghe bài viết
00:00
flat screen computer monitor

Context Engineering là gì — và tại sao nó quan trọng hơn Prompt Engineering

Trong cộng đồng AI, "Prompt Engineering" đã trở thành buzzword phổ biến từ 2022-2023. Tuy nhiên, khi các LLM ngày càng mạnh hơn và context window ngày càng lớn hơn, một kỹ năng mới nổi lên quan trọng hơn: Context Engineering.

Prompt Engineering tập trung vào việc viết câu hỏi/lệnh tốt hơn. Context Engineering tập trung vào việc quản lý toàn bộ thông tin mà model nhận được — không chỉ câu hỏi, mà còn là system prompt, lịch sử conversation, tài liệu tham chiếu, output từ tools, và mọi thứ khác nằm trong context window.

Sự khác biệt thực tế: Một prompt tốt giúp Claude trả lời một câu hỏi tốt hơn. Context Engineering tốt giúp Claude hoạt động như một chuyên gia thực sự trong suốt một cuộc trò chuyện dài hoặc một hệ thống phức tạp.

Context Window — Hiểu đúng về "bộ nhớ làm việc" của Claude

Claude Opus 4 và Sonnet 4 hỗ trợ context window 200.000 tokens — tương đương khoảng 150.000 từ tiếng Anh, hay một cuốn sách dày 500 trang. Đây là con số ấn tượng, nhưng hiểu cách Claude sử dụng context mới là điều quan trọng.

Giải phẫu một context window

Mỗi API call gửi đến Claude bao gồm các phần sau (theo thứ tự):

  1. System prompt: Hướng dẫn về vai trò, hành vi, giới hạn của model
  2. Conversation history: Toàn bộ lịch sử tin nhắn user/assistant trong session
  3. Tool results: Kết quả từ các function calls đã thực thi
  4. Current user message: Yêu cầu hiện tại

Claude không có "bộ nhớ" thực sự giữa các API call. Mỗi request là một slate trắng — nhưng bạn có thể cung cấp toàn bộ lịch sử cần thiết trong context. Đây là cả cơ hội lẫn trách nhiệm của Context Engineering.

Token cost và tradeoffs

Input tokens (những gì bạn gửi) thường rẻ hơn output tokens (những gì Claude tạo ra). Tuy nhiên, với context window 200K tokens, chi phí input có thể tích lũy nhanh chóng trong production systems. Context Engineering là về việc đưa vào context đúng thông tin, không phải nhiều thông tin nhất có thể.

Information Hierarchy — Thứ tự ưu tiên trong context

Không phải tất cả thông tin trong context đều có trọng số bằng nhau. Nghiên cứu về attention patterns của LLM cho thấy mô hình có xu hướng chú ý nhiều hơn đến:

  • Thông tin ở đầu context (primacy effect)
  • Thông tin ở cuối context, gần với message hiện tại (recency effect)
  • Thông tin được nhấn mạnh bằng cấu trúc rõ ràng (headers, lists, code blocks)

Hàm ý thực tế: Đặt thông tin quan trọng nhất ở đầu system prompt hoặc ở cuối conversation (ngay trước câu hỏi). Thông tin ở giữa một context dài có thể bị "lãng quên" — hiện tượng này được gọi là lost in the middle.

System Prompt Design — Nền tảng của mọi ứng dụng

System prompt là nơi bạn định nghĩa "con người" của Claude trong ứng dụng của bạn. Một system prompt được thiết kế tốt có thể biến Claude thành chuyên gia domain cụ thể mà không cần fine-tuning.

Cấu trúc system prompt hiệu quả

# Role Definition
Bạn là [tên/vai trò], chuyên gia về [domain].

# Context
[Mô tả ngắn về ứng dụng/business context]

# Capabilities
Bạn có thể:
- [Capability 1]
- [Capability 2]

# Constraints
Bạn KHÔNG được:
- [Constraint 1]
- [Constraint 2]

# Output Format
Luôn trả lời theo format:
[Mô tả format mong muốn]

# Examples (optional)
[1-2 ví dụ input/output nếu cần]

System prompt cho nhiều ngôn ngữ

Khi build ứng dụng cho người dùng Việt Nam, system prompt nên chỉ định rõ ngôn ngữ:

Luôn trả lời bằng tiếng Việt, trừ khi user explicitly yêu cầu
tiếng Anh. Giữ nguyên các thuật ngữ kỹ thuật tiếng Anh khi
không có bản dịch tốt (ví dụ: API, token, context window).

Few-shot Examples — Dạy bằng ví dụ thực tế

Few-shot prompting là kỹ thuật đặt 2-5 ví dụ input/output trong context để Claude hiểu chính xác format và style bạn mong muốn. Đây là một trong những kỹ thuật có ROI cao nhất trong Context Engineering.

Khi nào dùng few-shot

  • Khi output cần format đặc biệt (JSON schema cụ thể, table format, etc.)
  • Khi tone/style cần nhất quán với brand voice
  • Khi task phức tạp và khó mô tả bằng lời
  • Khi zero-shot cho kết quả không ổn định

Vị trí đặt few-shot examples

Có hai chiến lược:

  • Trong system prompt: Phù hợp khi examples tương đối ngắn và ít thay đổi
  • Đầu conversation (user turn đầu tiên): Linh hoạt hơn, dễ cập nhật dynamic

RAG Integration — Mở rộng knowledge base vô hạn

Retrieval-Augmented Generation (RAG) là pattern phổ biến nhất để vượt qua giới hạn của context window: thay vì nhét toàn bộ knowledge base vào context, bạn chỉ retrieve những đoạn relevant nhất tại runtime.

RAG pipeline cơ bản

  1. Chunk tài liệu thành đoạn nhỏ (500-1000 tokens mỗi chunk)
  2. Embed từng chunk thành vector (dùng embedding model)
  3. Lưu vào vector database (Pinecone, Weaviate, pgvector...)
  4. Khi có query, embed query và tìm top-K chunks tương đồng nhất
  5. Inject chunks vào context của Claude kèm theo câu hỏi
// Ví dụ context injection pattern
const relevantChunks = await vectorDB.search(userQuery, topK=5);

const systemPrompt = "Bạn là trợ lý hỗ trợ khách hàng.
" +
  "Trả lời dựa trên tài liệu được cung cấp bên dưới.
" +
  "Nếu không tìm thấy thông tin liên quan, hãy nói rõ.

" +
  "--- TÀI LIỆU THAM CHIẾU ---
" +
  relevantChunks.map(c => c.text).join('

') +
  "
---";

Tối ưu RAG context

Một số kỹ thuật nâng cao:

  • Contextual chunking: Thêm metadata (title, section, date) vào mỗi chunk
  • Hybrid search: Kết hợp semantic search (embedding) với keyword search (BM25)
  • Re-ranking: Dùng cross-encoder để re-rank kết quả trước khi inject vào context
  • Self-querying: Để Claude tự phân tích query và generate sub-queries tốt hơn

Context Compression — Nén thông tin mà không mất ý nghĩa

Khi conversation dài ra, context window đầy dần. Context compression là tập hợp kỹ thuật để giữ lại information density cao nhất trong không gian token giới hạn.

Summarization của conversation history

Thay vì giữ toàn bộ conversation cũ, định kỳ yêu cầu Claude tóm tắt:

// Khi conversation vượt ngưỡng token
if (conversationTokens > THRESHOLD) {
  const summary = await claude.complete({
    messages: oldMessages,
    system: "Tóm tắt cuộc trò chuyện này thành bullet points
             ngắn gọn, giữ lại các quyết định và thông tin
             quan trọng. Tối đa 500 từ."
  });

  // Thay thế old messages bằng summary
  messages = [{ role: 'user', content: '[TÓM TẮT TRƯỚC ĐÓ]: ' + summary }];
}

Structured context format

Thông tin có cấu trúc tốt được compress hiệu quả hơn văn xuôi. Thay vì:

"User đã đề cập rằng họ đang làm việc tại một công ty startup ở Hà Nội, team có 5 người, budget khoảng 10 triệu mỗi tháng, và họ đang tìm giải pháp CRM..."

Hãy dùng:

USER_PROFILE:
- Company: Startup, Hà Nội
- Team size: 5 người
- Budget: 10M VND/tháng
- Need: CRM solution

Chunking Strategies — Chia nhỏ thông tin đúng cách

Khi xử lý tài liệu dài, cách bạn chunk ảnh hưởng trực tiếp đến chất lượng retrieval và inference.

Các chiến lược chunking

  • Fixed-size chunking: Chia theo số token cố định — đơn giản nhưng có thể cắt giữa ý
  • Semantic chunking: Chia theo paragraph/section — tự nhiên hơn nhưng size không đều
  • Hierarchical chunking: Lưu cả chunk lớn (context) và chunk nhỏ (precision) — search chunk nhỏ nhưng inject chunk lớn vào context
  • Sliding window: Overlap giữa các chunks để tránh mất thông tin ở ranh giới

Tool Use như cách mở rộng context

Tool use (function calling) không chỉ là cách để Claude thực hiện hành động — nó còn là cơ chế để inject thông tin động vào context mà không cần pre-load tất cả lên front.

// Thay vì inject toàn bộ database vào context:
const tools = [
  {
    name: "get_customer_info",
    description: "Lấy thông tin khách hàng theo ID",
    input_schema: {
      type: "object",
      properties: {
        customer_id: { type: "string" }
      }
    }
  },
  {
    name: "search_orders",
    description: "Tìm kiếm đơn hàng theo các tiêu chí",
    input_schema: { /* ... */ }
  }
];

Claude sẽ chủ động gọi tool khi cần thông tin, chỉ inject đúng data cần thiết vào context tại thời điểm cần — đây là dạng "lazy loading" cho context.

Memory và Persistence Patterns

Claude không có memory native giữa các session. Nhưng bạn có thể build memory layer bên ngoài:

User memory pattern

// Đầu mỗi session, load memory của user
const userMemory = await db.getUserMemory(userId);

const systemPrompt = BASE_SYSTEM_PROMPT +
  "

--- BỘ NHỚ VỀ USER ---
" +
  userMemory.preferences + "
" +
  userMemory.history_summary + "
" +
  userMemory.key_facts + "
---";

// Cuối session, extract và save new facts
const newFacts = await claude.extractFacts(conversation);
await db.updateUserMemory(userId, newFacts);

Entity memory pattern

Theo dõi các entities quan trọng (người, dự án, khái niệm) và lưu trữ riêng để inject có chọn lọc vào context khi liên quan.

Đo lường chất lượng context

Context Engineering tốt cần được đo lường, không phải chỉ cảm nhận. Các metrics cần theo dõi:

  • Relevance score: % thông tin trong context thực sự được dùng trong response
  • Grounding rate: % claims trong response có thể trace về context (không hallucinate)
  • Token efficiency: Quality của output / số input tokens sử dụng
  • Task success rate: % requests được hoàn thành đúng theo yêu cầu

Real Architectures — Từ đơn giản đến phức tạp

Architecture 1: Simple Q&A với tài liệu

System prompt (role + instructions)
  + Retrieved document chunks (RAG)
  + User question
= Claude response

Architecture 2: Multi-turn conversation agent

System prompt (persona + tools definition)
  + Compressed history (summary of old messages)
  + Recent messages (last 10-20 turns)
  + Tool results (if any)
  + Current user message
= Claude response (possibly with tool calls)

Architecture 3: Complex agentic pipeline

Orchestrator system prompt
  + Task definition
  + Memory (user + project + session)
  + Available sub-agents (descriptions)
  + Previous agent outputs
  + Current step instructions
= Orchestrator decision → sub-agent call

Context Engineering là kỹ năng kết hợp giữa khoa học (token counting, information theory, attention patterns) và nghệ thuật (structure, clarity, emphasis). Khi bạn master k�� năng này, bạn sẽ xây dựng được các ứng dụng AI không chỉ hoạt động đúng, mà còn hoạt động tốt — nhất quán, chính xác, và có chi phí tối ưu.


Bài viết liên quan

Tính năng liên quan:System promptsProjectsTool useExtended thinking

Bai viet co huu ich khong?

Bản quyền thuộc về tác giả. Vui lòng dẫn nguồn khi chia sẻ.

Bình luận (2)
Ảnh đại diện
Đăng nhập để bình luận...
Đăng nhập để bình luận
  • Đang tải bình luận...

Đăng ký nhận bản tin

Nhận bài viết hay nhất về sản phẩm và vận hành, gửi thẳng vào hộp thư của bạn.

Bảo mật thông tin. Hủy đăng ký bất cứ lúc nào. Chính sách bảo mật.