Trước khi anh em gõ một chữ nào, Claude đã "đọc" rất nhiều thứ. Mỗi lần khởi tạo một phiên làm việc, hệ thống đẩy vào đầu context window một khối văn bản gọi là
system prompt, viết bằng tiếng Anh thông thường, không phải code, nhưng có vai trò như một bản tóm lược toàn diện trước khi cuộc hội thoại bắt đầu.
Hình dung thế này: anh em thuê một nhân viên mới, và trước khi họ gặp khách hàng lần đầu, bạn ngồi lại briefing: "anh là trợ lý pháp lý của công ty chúng tôi, chỉ trả lời câu hỏi liên quan đến hợp đồng, luôn giữ giọng điệu chuyên nghiệp, không đưa ra lời khuyên nếu chưa có đủ thông tin." System prompt hiểu nôm na là bản briefing đó và nó chạy lại mỗi phiên làm việc, trước mỗi câu bạn hỏi.
Trên claude.ai, Anthropic tự load system prompt mặc định ở phía backend, anh em không thấy nó, nhưng nó đang chạy. Nó set ngày giờ hiện tại, liệt kê các công cụ Claude được phép dùng như web search hay tạo file, và quy định cách format câu trả lời. Đó là lý do cùng một câu hỏi, Claude trả lời khác nhau tùy nơi bạn hỏi.
Context Windows đóng vai trò quan trọng trong cách vận hành của Claude
Ngoài ra, anh em nào dùng tính năng Projects trên claude.ai thực chất đang tự viết một phiên bản system prompt cho riêng mình: "bạn là trợ lý viết content của tôi, tôi viết cho TinhTe.vn, giọng văn tự nhiên không cần hoa mỹ." Viết một lần, Claude áp dụng cho mọi conversation trong project đó mà không cần nhắc lại. Còn developer dùng API thì sẽ có toàn quyền kiểm soát hơn khi Anthropic không thêm vào bất kì thứ gì và họ có thể thiết kế system prompt phức tạp đến mức inject cả ngữ cảnh nghiệp vụ, quyền hạn, và danh sách công cụ được phép dùng.
Chính vì thế, các công ty tự phát triển sản phẩm trên nền tảng của Claude như chatbot chăm sóc khách hàng ngân hàng, trợ lý đặt lịch khám bệnh, hay công cụ hỗ trợ pháp lý nội bộ, sẽ inject system prompt chứa toàn bộ ngữ cảnh nghiệp vụ của họ: Claude này chỉ được trả lời về sản phẩm của công ty, output phải theo format nhất định, không được thảo luận ngoài scope. Người dùng cuối chỉ thấy giao diện sản phẩm và họ không biết Claude đang chạy bên dưới, và càng không thấy system prompt đó.
System prompt của Claude Code, phiên bản agentic dành cho lập trình, chiếm khoảng 23.000 token mỗi phiên, tức hơn 11% toàn bộ context window. Điều thú vị là system prompt này giống nhau cho mọi người dùng cùng phiên bản, không thay đổi theo cá nhân. Lý do là yếu tố kinh tế: Anthropic cache phần này và dùng chung cho hàng triệu người, nếu system prompt thay đổi theo từng người, chi phí xử lý sẽ tăng theo cấp số nhân.
Vậy thông tin cá nhân hóa đi đâu? Anthropic giải quyết bằng một cơ chế tách biệt: thông tin riêng của từng người được gắn vào luồng hội thoại như một ghi chú ưu tiên cao, thay vì nhét vào system prompt chung. Model vẫn hiểu và tuân theo, nhưng phần cache dùng chung không bị ảnh hưởng. Đây là ví dụ điển hình của tư duy thiết kế hệ thống: giải quyết mâu thuẫn giữa cá nhân hóa và hiệu quả chi phí bằng cách thiết kế lại luồng dữ liệu chứ không phải bằng cách nâng cấp model.