Quyết định kỹ thuật và những lần vấp ngã thật khi build sản phẩm AI.
Tuần trước tôi dựng một tầng tri thức dùng chung và bật bộ nhớ ngữ nghĩa (RAG) thật cho sáu con bot spa cùng một đêm — 274 mẩu kiến thức, vector 768 chiều trong Postgres. Nhưng phần ngốn thời gian nhất không phải dựng RAG. Mà là dạy bot một ranh giới: khi nào được phép suy luận, và khi nào BẮT BUỘC tra cứu chính xác. Vì với khách, một con bot "nhớ mang máng" về giá còn tệ hơn một con bot ngu thật thà.
Hậu trường buildMột con bot tư vấn spa và một con bot bán tour du lịch nghe chẳng liên quan gì nhau. Vậy mà tuần trước tôi dựng con bot tour mới gần như không viết lại lõi — chủ yếu là khai báo. Đây là chuyện về cái hoá đơn tôi trả mấy tháng trước khi tách lõi con bot, và lần đầu tiên nó trả lại tiền cho tôi bằng tốc độ.
Hậu trường buildCon bot tư vấn spa của tôi "biết" hơn 370 dịch vụ và sản phẩm. Nhưng có một luật tôi không bao giờ phá — giá tiền không được phép đến từ câu trả lời của Claude, chỉ từ cơ sở dữ liệu. Đây là câu chuyện vì sao, và kiến trúc hai lớp tôi dựng để ép điều đó không bị lách.
Hậu trường buildKhi một con bot phục vụ nhiều spa cùng lúc, có một loại lỗi không nằm ở dòng code nào cả — mà ở chỗ bạn để chung cái gì. Tuần trước tôi phát hiện một mẩu tài liệu tĩnh đang lọt vào não của MỌI con bot spa, nghĩa là dữ liệu spa này có thể rò sang câu trả lời cho khách spa khác. Đây là câu chuyện vì sao "rò chéo tenant" là cơn ác mộng của ai làm bot nhiều khách, và cách tôi cô lập lại từng con.
Hậu trường buildTính năng oách nhất mọi người muốn ở bot CSKH là tự đặt lịch hẹn. Tôi đã chủ động không làm — và để một nhân viên xác nhận tay. Đây là chuyện vì sao "viết code cho cái thực tại đang có" thắng "viết code cho cái demo đẹp", và một mẹo kiến trúc để sau này nâng cấp mà không phải đập đi xây lại.
Hậu trường buildTháng Sáu tôi xóa một file code đã mất cả buổi để viết — không phải vì nó hỏng, mà vì con bot thứ hai cho thấy nó không thể nhân lên được. Đây là chuyện về cái giả định sai mà mọi người build bot đầu đều mắc, tại sao nó cần thiết lúc bắt đầu, và cái refactor mà chỉ thực tế mới dạy được.
Hậu trường buildCon bot của tôi lưu mọi thứ vào một file duy nhất — gọn, nhanh, không cần cài gì. Đúng tới ngày tôi muốn nó chạy trên hai máy cùng lúc thì cái file đó hoá ra là một sợi xích vô hình. Đây là chuyện tôi tháo xích — đổi nền lưu trữ giữa lúc bot đang phục vụ khách thật, và lần đầu làm hỏng nó như thế nào.
Hậu trường buildTôi thêm một server thứ hai để bot chịu tải tốt hơn. Kết quả ngược đời — bot bắt đầu "mất trí nhớ" giữa cuộc trò chuyện. Đây là câu chuyện về một chữ tưởng khô khan nhưng tách con bot chạy-trên-laptop khỏi một dịch vụ thật: *stateless*.
Hậu trường buildAi cũng cố làm bot trả lời được mọi thứ. Nhưng quyết định khiến bot CSKH của tôi đáng tin lại đi ngược: dạy nó biết lúc nào nên ngừng nói và chuyển cho người thật.
Hậu trường buildMột buổi tối, bảy nâng cấp lõi và một lần deploy. Con bot CSKH cho spa của tôi vừa vượt qua ranh giới khó nhất của mọi sản phẩm AI — từ bản demo nghe hay sang thứ dám giao cho khách thật.
Hậu trường buildNhiều người nghĩ làm bot AI phải biết máy học, vector database, hạ tầng phức tạp. Không. Một con bot biết trò chuyện và tra cứu dữ liệu thật chỉ cần vài chục dòng Python.
Hậu trườngKiến trúc, những quyết định quan trọng, chi phí thật, và cả những lần tôi tự làm sập cả site khi deploy.