Một lập trình viên vừa công khai kiến trúc hệ thống AI agent trực inbox Instagram cho chuỗi nhà hàng sushi 7 chi nhánh, nơi khoảng 90% đơn hàng đến từ tin nhắn riêng. Điều đáng học không nằm ở chỗ AI biết trả lời khách, mà ở chỗ anh ta chạy model cao cấp trên từng tin nhắn mà chi phí vẫn thấp tới mức chủ quán không bao giờ phải nghĩ tới. Bí quyết tên là prompt caching, và nó liên quan trực tiếp tới mọi shop Việt đang bán hàng qua inbox.

Chuyện gì vừa xảy ra

Trên diễn đàn r/artificial, một bài chia sẻ có tiêu đề “I built a Claude agent that runs Instagram DM ordering for a 7-location sushi chain” thu về 37 upvote và 39 bình luận. Con số upvote không lớn, nhưng tỉ lệ bình luận trên upvote thì rất cao, dấu hiệu quen thuộc của một bài mà dân kỹ thuật đọc xong muốn hỏi cho ra nhẽ chứ không chỉ lướt qua.

Bối cảnh của chuỗi sushi này quen thuộc đến mức khó chịu với bất kỳ ai từng bán hàng online ở Việt Nam. Khoảng 90% đơn hàng đến từ Instagram DM. Trước khi có hệ thống, một nhân viên phải ngồi gõ tay từng câu trả lời: món này có gì, có gluten không, giao tới quận này không, giờ này còn bán không, khuyến mãi tuần này ra sao. Nhân lên bảy chi nhánh, mỗi chi nhánh menu và giờ mở cửa lệch nhau một chút, và bạn có một cái hố đen thời gian.

Giải pháp: một AI agent chạy Claude Sonnet 4.6, kết nối qua Meta API, nhận mọi tin nhắn đến, tư vấn thật cho khách, cảnh báo dị ứng, upsell khi hợp lý, và khi khách chốt thì đẩy đơn thẳng vào bếp, CRM và bảng điều khiển của chủ quán.

90%
đơn hàng của chuỗi sushi đến từ Instagram DM

97%
tin nhắn đọc khối menu từ cache thay vì gửi lại từ đầu

1/10
giá input khi token được đọc từ cache

Bên trong hệ thống: agent làm gì và cố tình không làm gì

Phần kỹ thuật không có gì huyền bí. Meta API bắn webhook mỗi khi có tin nhắn mới. Hệ thống đẩy tin đó vào hàng đợi, gọi Claude Sonnet 4.6 kèm theo toàn bộ knowledge base, nhận câu trả lời, gửi lại cho khách. Stack được tác giả mô tả gồm SvelteKit, Meta API, Claude Sonnet 4.6, pg-boss chạy trên Postgres để quản lý hàng đợi, và một lớp CRM.

Điểm đáng chép lại là nội dung của knowledge base. Không phải một file FAQ mười câu. Nó chứa menu đầy đủ, thành phần từng món, lượng calo, danh sách chất gây dị ứng, khu vực giao hàng, giờ mở cửa, thời gian chuẩn bị và chương trình khuyến mãi của cả bảy điểm bán. Agent không đoán. Nó tra.

Nhưng phần khiến giới kỹ thuật gật gù nhất lại là danh sách những việc agent bị cấm làm. Nó không xử lý cuộc gọi thoại. Không xử lý voice note. Không xử lý ảnh. Ba loại đầu vào này được chuyển thẳng cho người thật. Lý do rất tỉnh táo: để model đoán nội dung một tấm ảnh chụp tờ đơn viết tay là cách nhanh nhất để ship ra một lỗi xấu hổ trước mặt khách hàng.

“Để AI làm 80% cuộc hội thoại lặp đi lặp lại. 20% còn lại cần con người thì bàn giao cho con người.”

Triết lý thiết kế của tác giả, lược dịch từ thảo luận trên r/artificial

Bảng điều khiển của chủ quán lưu lại toàn bộ cuộc chat kèm chuỗi lý luận của agent. Khi có tình huống trả lời sai, chủ quán không phải ngồi đoán tại sao. Anh ta đọc lại được agent đã tra thông tin nào, suy luận ra sao, rồi vá lại knowledge base. Đây là chi tiết mà 90% người dựng chatbot bỏ qua, và cũng là lý do 90% chatbot chết sau ba tuần.

Prompt caching: vì sao chi phí gần như bằng không

Đây là chỗ bài học thật sự nằm. Hãy tính nhẩm cùng nhau.

Khối menu và quy tắc của bảy chi nhánh là một văn bản dài. Giả sử nó chiếm 20.000 token. Vấn đề: mỗi tin nhắn khách gửi tới, bạn phải gửi lại toàn bộ khối đó cho model, vì model không có trí nhớ giữa các lần gọi API. Một khách hàng nhắn qua nhắn lại mười lượt là bạn đã gửi 200.000 token chỉ riêng phần menu. Nhân với vài trăm khách mỗi ngày, hóa đơn API biến thành một cơn ác mộng.

Prompt caching giải quyết đúng vấn đề này. Bạn đánh dấu phần nội dung tĩnh, tức là phần lặp lại y hệt ở mọi lần gọi. Lần gọi đầu tiên, hệ thống ghi phần đó vào cache và tính phí cao hơn một chút. Mọi lần gọi sau trong khoảng thời gian sống của cache, model đọc thẳng từ cache.

📊 Con số cần nhớ: Theo tài liệu chính thức của Anthropic, token đọc từ cache chỉ tính 10% giá input tiêu chuẩn. Với Claude Sonnet, cache read rơi vào khoảng 0,30 USD cho mỗi triệu token. Ghi cache 5 phút tốn 1,25 lần giá input, ghi cache 1 giờ tốn 2 lần. Nghĩa là chỉ cần một lần đọc lại, bạn đã có lãi.

Trong case sushi, khoảng 97% tin nhắn đọc khối menu từ cache. Nói cách khác, 97 trên 100 lượt gọi API chỉ trả một phần mười giá cho phần nặng nhất của prompt. Chạy một model flagship trên từng DM bỗng trở nên rẻ ngang chạy một chatbot rule-based.

Đây không phải hiệu ứng cá biệt. Các phép đo độc lập cho kết quả tương đồng. LangChain báo cáo prompt caching cắt từ 49% tới 80% chi phí token trong các agent hội thoại dài, và càng dài thì càng lời. Klaws liệt kê bảy kỹ thuật giảm chi phí agent, trong đó riêng prompt caching tiết kiệm tới 80% trên một tác vụ, và xếp chồng cả bảy có thể kéo tổng chi phí xuống 70% tới 85%.

🔵 Nguyên tắc số 1: xếp phần tĩnh lên trước

Cache hoạt động theo tiền tố. Nếu bạn nhét tên khách hàng vào đầu prompt rồi mới tới menu, cache vỡ ngay ở token đầu tiên. Thứ tự đúng là: hướng dẫn hệ thống, knowledge base, quy tắc trả lời, rồi mới tới lịch sử hội thoại và tin nhắn mới.

🔵 Nguyên tắc số 2: đừng sửa knowledge base giữa giờ cao điểm

Mỗi lần bạn sửa một ký tự trong phần được cache, cache cũ thành vô dụng và bạn trả lại phí ghi. Gom mọi thay đổi menu vào một khung giờ vắng khách trong ngày.

🔵 Nguyên tắc số 3: chọn đúng thời gian sống của cache

Cache 5 phút hợp với shop có luồng tin nhắn liên tục. Cache 1 giờ đắt gấp đôi khi ghi nhưng đáng tiền nếu tin nhắn tới thưa và rải rác, ví dụ shop ngách hoặc dịch vụ giá trị cao.

Vì sao điều này quan trọng đặc biệt với người bán hàng Việt Nam

Ở phương Tây, bán hàng qua DM vẫn còn là một kênh phụ bên cạnh website và giỏ hàng. Ở Việt Nam thì ngược lại. Inbox chính là quầy thu ngân. Khách nhắn Facebook Messenger hỏi giá, nhắn Zalo xin ảnh thật, nhắn Instagram hỏi còn size không. Cả một nền thương mại chạy trên hộp thư đến.

Con số toàn cầu cho thấy quy mô của kênh này. Khoảng 150 triệu người mỗi tháng nhắn tin cho một doanh nghiệp trên Instagram. Tỷ lệ mở tin nhắn DM đạt tới 90%, cao hơn hẳn email. Và đây là con số khiến mọi chủ shop nên dừng lại đọc kỹ: các phân tích ngành năm 2026 ghi nhận thương hiệu phản hồi trong vòng một phút có tỷ lệ chuyển đổi cao hơn nhiều lần so với thương hiệu để khách chờ quá 30 phút. Một nguồn ghi mức chênh lệch lên tới 391%, một nguồn khác nói tốc độ trả lời dưới 30 giây tăng khả năng bán tới 400%.

Bạn không cần tin chính xác con số nào. Bạn chỉ cần chấp nhận hướng của nó: khách nhắn lúc 11 giờ đêm mà 8 giờ sáng hôm sau bạn mới trả lời thì đơn đó đã đi mua chỗ khác. Và con người thì phải ngủ.

⚠️ Cảnh báo: Rất nhiều shop Việt đang giải bài toán này bằng cách thuê thêm người trực inbox ca đêm, hoặc dùng chatbot kịch bản cứng kiểu bấm phím 1, bấm phím 2. Cách thứ nhất tốn tiền và không bền. Cách thứ hai làm khách bực và bỏ đi, vì khách hỏi “món này ăn cay không” chứ không hỏi “cho tôi xem menu”.

Khoảng trống nằm ở giữa: một agent hiểu ngôn ngữ tự nhiên, tra đúng dữ liệu của bạn, và biết lúc nào phải gọi người thật.

Dựng phiên bản của bạn: sáu bước cụ thể

Bạn không cần biết code ở mức viết được cả stack như tác giả bài gốc. Nhưng bạn cần hiểu đủ để tự dựng, hoặc để biết mình đang mua cái gì. Sáu bước dưới đây là bộ khung tối thiểu.

🔵 Bước 1: Viết knowledge base trước, nghĩ tới AI sau

Mở một file văn bản. Liệt kê toàn bộ sản phẩm, giá, size, màu, chất liệu, thời gian giao, phí ship theo khu vực, chính sách đổi trả, khuyến mãi đang chạy. Viết như thể bạn đang bàn giao cho một nhân viên mới toanh vào sáng mai. Nếu bước này làm cẩu thả, không model nào cứu được bạn.

🔵 Bước 2: Định nghĩa ranh giới người và máy

Viết ra danh sách những gì agent tuyệt đối không được tự quyết: duyệt hoàn tiền, hứa giảm giá ngoài bảng, xác nhận đơn có ảnh đính kèm, xử lý khiếu nại. Mọi thứ trong danh sách này chuyển cho người, kèm một tin nhắn giữ chân khách kiểu “bên em đang kiểm tra lại, ít phút nữa trả lời anh chị ngay”.

🔵 Bước 3: Nối webhook

Meta API cho Instagram và Messenger, Zalo Official Account API cho Zalo. Cả hai đều gửi webhook khi có tin nhắn mới. Nếu bạn ngại code, các nền tảng làm sẵn phần này cũng nhiều, nhưng hãy hỏi rõ họ có cho bạn cắm API key model riêng và tùy chỉnh system prompt hay không. Nếu không, bạn đang mua một hộp đen.

🔵 Bước 4: Bật prompt caching ngay từ ngày đầu

Đừng để tới lúc hóa đơn API tăng vọt mới đi tối ưu. Đánh dấu knowledge base và system prompt là phần được cache, đặt chúng lên đầu, và giữ chúng bất biến trong suốt giờ bán hàng.

🔵 Bước 5: Đẩy đơn ra khỏi hộp chat

Một agent chỉ biết chat là một agent nửa vời. Khi khách chốt, đơn phải tự chảy vào nơi bạn xử lý thật: một Google Sheet, một phần mềm bán hàng, một kênh Zalo nội bộ cho bếp hoặc kho. Đây là chỗ giá trị thật sự được tạo ra, vì nó cắt luôn công đoạn chép tay.

🔵 Bước 6: Lưu log và đọc log

Mỗi tuần, ngồi đọc 20 cuộc hội thoại ngẫu nhiên. Tìm chỗ agent trả lời sai, trả lời lòng vòng, hoặc bỏ lỡ cơ hội upsell. Vá knowledge base. Lặp lại. Sau tám tuần bạn sẽ có một hệ thống mà đối thủ không sao chép được, vì thứ họ thiếu không phải model, mà là tám tuần đó.

Bốn cái bẫy khiến dự án chết yểu

Bẫy thứ nhất: để agent tự chế thông tin. Nếu knowledge base không có câu trả lời, model sẽ bịa ra một câu nghe rất hợp lý. Cách chữa là ghi thẳng vào system prompt một quy tắc cứng: khi không chắc chắn, nói không chắc chắn và chuyển cho người.

Bẫy thứ hai: cho agent quyền hứa hẹn. Một agent hào phóng sẽ giảm giá cho mọi khách hàng biết mặc cả. Giá, khuyến mãi và chính sách đổi trả phải nằm trong dữ liệu chứ không nằm trong quyền phán đoán của model.

Bẫy thứ ba: quên mất giọng thương hiệu. Agent trả lời đúng nhưng nghe như một cỗ máy tiếng Anh dịch sang tiếng Việt thì khách vẫn quay lưng. Hãy đưa vào system prompt vài đoạn hội thoại mẫu do chính bạn viết, đúng cách bạn nói chuyện với khách. Model sẽ bắt giọng theo.

Bẫy thứ tư: nghĩ rằng bật lên là xong. Case sushi thành công không phải nhờ chọn đúng model. Nó thành công vì có bảng điều khiển lưu chuỗi lý luận, có ranh giới rõ ràng, và có người ngồi đọc lại. Tự động hóa không xóa bỏ công việc, nó dịch chuyển công việc từ trả lời tin nhắn sang thiết kế hệ thống trả lời tin nhắn.

📊 Việc cần làm trong tuần này: Mở hộp thư Facebook hoặc Zalo của bạn, đọc 50 tin nhắn khách gần nhất, và đếm xem bao nhiêu tin nhắn hỏi đúng một trong năm câu quen thuộc. Con số đó chính là phần trăm công việc bạn có thể giao cho agent ngay tháng này.

Điều đọng lại

Bài học từ chuỗi sushi bảy chi nhánh không phải là “AI thay thế nhân viên bán hàng”. Bài học là: rào cản chi phí để chạy một model cao cấp trên từng tin nhắn khách hàng đã sụp đổ, và thứ ngăn bạn không còn là tiền, mà là dữ liệu.

Nếu bạn có một knowledge base sạch, chi tiết, cập nhật, bạn có thể để AI trực inbox cả đêm với chi phí thấp hơn một bữa sáng. Nếu bạn không có, thì mọi model mạnh nhất thế giới cũng chỉ giúp bạn trả lời sai nhanh hơn.

Việc khó nhất trong dự án này không nằm ở API. Nó nằm ở việc ngồi xuống viết cho xong cái file mô tả sản phẩm của chính bạn. Và đó là việc không ai làm hộ được.


📚 Về bài viết này

Bài viết được đội ngũ Thiên Minh Quân tổng hợp từ case study trên r/artificial, tài liệu prompt caching chính thức của Anthropic, báo cáo đo lường chi phí của LangChain và Klaws, cùng dữ liệu ngành về Instagram DM năm 2026.

Phần phân tích là góc nhìn của chúng tôi từ thực tiễn thị trường Việt Nam.