Quản lý Context Window trong Ứng dụng AI Sản Xuất với Mô hình LLM

07 tháng 4, 2026·5 phút đọc

Quản lý số lượng token trong vùng ngữ cảnh (context window) khi phát triển ứng dụng AI, đặc biệt với các mô hình lớn như Claude-sonnet-4-6 hay GPT-4o, là thách thức lớn cần kỹ thuật chuyên sâu. Bài viết trình bày các chiến lược đếm token, cắt ngắn lịch sử hội thoại, tóm tắt cuộc trò chuyện, và tối ưu tài nguyên để ứng dụng AI hoạt động ổn định trong thực tế.

Quản lý Context Window trong Ứng dụng AI Sản Xuất với Mô hình LLM

Quản lý Context Window trong Ứng dụng AI Sản Xuất với Mô hình LLM

Các mô hình ngôn ngữ lớn (Large Language Models - LLM) như Claude-sonnet-4-6 với vùng ngữ cảnh lên đến 200.000 token hoặc GPT-4o với 128.000 token có vẻ rất lớn. Tuy nhiên khi xây dựng ứng dụng tích hợp AI thực tế, đặc biệt dạng RAG (retrieval-augmented generation), việc truyền tải đồng thời bối cảnh tài liệu, lịch sử hội thoại, câu lệnh hệ thống và định nghĩa công cụ dễ dẫn đến việc vượt quá giới hạn vùng ngữ cảnh. Đây là thách thức kỹ thuật đòi hỏi quản lý token một cách nghiêm ngặt để tránh lỗi không thể phục hồi giữa cuộc trò chuyện.

Vấn đề ngân sách token

Khi thực hiện các cuộc hội thoại phức tạp, nếu vùng context quá đầy, mô hình sẽ không thể xử lý tiếp, dẫn tới việc phải kết thúc hội thoại hoặc mất thông tin quan trọng. Do đó, quản lý "ngân sách token" là một nguyên tắc kỹ thuật quan trọng trong vận hành các ứng dụng AI sản xuất.

Đếm token hiệu quả

Với API của Anthropic, ta có thể dùng endpoint đếm token trực tiếp:

import Anthropic from '@anthropic-ai/sdk';

const anthropic = new Anthropic();

async function countTokens(messages) {
  const response = await anthropic.messages.countTokens({
    model: 'claude-sonnet-4-6',
    messages,
    system: 'You are a helpful assistant.',
  });
  return response.input_tokens;
}

Còn với OpenAI, có thể dùng thư viện tiktoken để đếm token tại client mà không cần gọi API, tiết kiệm tài nguyên và thời gian.

Quản lý lịch sử hội thoại

Phương pháp đơn giản là giữ tất cả tin nhắn trong vùng ngữ cảnh dễ dẫn đến tràn bộ nhớ token. Thay vào đó, nên cắt gọn lịch sử hội thoại dựa trên ngân sách token còn lại sau khi trừ đi token của câu lệnh hệ thống và câu hỏi hiện tại:

function truncateHistory(history, systemPrompt, newMessage) {
  const systemTokens = countOpenAITokens(systemPrompt);
  const newMessageTokens = countOpenAITokens(newMessage);
  const reservedForResponse = 4000;
  const budget = MAX_CONTEXT_TOKENS - systemTokens - newMessageTokens - reservedForResponse;
  let usedTokens = 0;
  const kept = [];

  for (const msg of [...history].reverse()) {
    const tokens = countOpenAITokens(msg.content);
    if (usedTokens + tokens > budget) break;
    usedTokens += tokens;
    kept.unshift(msg);
  }

  return kept;
}

Chiến lược tóm tắt hội thoại

Thay vì xóa tin nhắn cũ, có thể tóm tắt chúng thành một đoạn ngắn gọn nhằm tiết kiệm token mà vẫn giữ được ý nghĩa cốt lõi của cuộc trò chuyện, từ đó duy trì trải nghiệm liền mạch, ít bị đứt quãng.

async function summarizeHistory(messages) {
  const conversation = messages.map(m => `${m.role}: ${m.content}`).join('\n');

  const summary = await anthropic.messages.create({
    model: 'claude-haiku-4-5-20251001', // mô hình giá rẻ dùng cho tóm tắt
    max_tokens: 500,
    messages: [{ role: 'user', content: `Summarize this conversation concisely:\n\n${conversation}` }],
  });

  return summary.content[0].type === 'text' ? summary.content[0].text : '';
}

Khi lịch sử quá dài, ta có thể tóm tắt nửa phần cũ nhất, giữ lại các tin nhắn gần đây đầy đủ:

async function manageContext(history) {
  const totalTokens = history.reduce((sum, m) => sum + countOpenAITokens(m.content), 0);
  if (totalTokens < 80_000) return history;

  const midpoint = Math.floor(history.length / 2);
  const old = history.slice(0, midpoint);
  const recent = history.slice(midpoint);

  const summary = await summarizeHistory(old);

  return [
    { role: 'user', content: `[Earlier conversation summary: ${summary}]` },
    ...recent,
  ];
}

Quản lý ngân sách RAG

Trong ứng dụng RAG, ngân sách token được phân bổ cho các phần như câu lệnh hệ thống, lịch sử hội thoại, tài liệu truy xuất và phần dành cho câu trả lời. Ví dụ:

const CONTEXT_BUDGET = {
  system: 2000,
  history: 20000,
  retrieved: 40000,
  response: 4000,
};

Khi sinh prompt, ta chọn lọc tài liệu quan trọng, cắt ngắn lịch sử sao cho tổng token nằm trong ngân sách để đảm bảo hệ thống vận hành ổn định.

Streaming phản hồi dài

Thay vì chờ phản hồi hoàn chỉnh mới trả về, ta có thể stream từng phần nội dung khi mô hình sinh ra:

const stream = anthropic.messages.stream({
  model: 'claude-sonnet-4-6',
  max_tokens: 4096,
  messages,
});

for await (const event of stream) {
  if (event.type === 'content_block_delta' && event.delta.type === 'text_delta') {
    process.stdout.write(event.delta.text); // hoặc gửi lên SSE
  }
}

const finalMessage = await stream.finalMessage();
console.log(`Used ${finalMessage.usage.input_tokens} input tokens`);

ước tính chi phí sử dụng

Chi phí theo mỗi triệu token input/output đối với các mô hình cũng ảnh hưởng đến hiệu quả vận hành. Ví dụ:

const PRICING = {
  'claude-sonnet-4-6': { input: 3.00, output: 15.00 },
  'claude-haiku-4-5-20251001': { input: 0.25, output: 1.25 },
  'gpt-4o': { input: 2.50, output: 10.00 },
  'gpt-4o-mini': { input: 0.15, output: 0.60 },
};

function estimateCost(inputTokens, outputTokens, model) {
  const prices = PRICING[model];
  return (inputTokens / 1_000_000 * prices.input) + (outputTokens / 1_000_000 * prices.output);
}

Việc quản lý vùng ngữ cảnh là điều kiện tiên quyết để một ứng dụng AI không chỉ hoạt động tốt trong các bản demo mà còn vận hành bền vững với lượng hội thoại lớn. Những kỹ thuật này cũng tạo nền tảng để xây dựng các công cụ tích hợp AI phức tạp, hỗ trợ đa dụng trong sản phẩm cuối cùng.

Để tham khảo thêm về các mô hình tích hợp AI với quản lý context, RAG và streaming tự động, người dùng có thể xem dự án Whoff Agents cung cấp bộ công cụ MCP chuyên nghiệp.


Quản lý chính xác vùng context trong LLM là bài toán kỹ thuật quan trọng bậc nhất đối với nhà phát triển AI hiện nay, và các chiến lược trên sẽ giúp ứng dụng AI của bạn mạnh mẽ và ổn định hơn khi bước ra môi trường sản xuất thực tế.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗