Khi Claude Đổi Thay, Mọi Thứ Đều Đảo Lộn: Quản Lý 'Vùng Nổ' AI Trong Sản Xuất Là Thách Thức Thế Nào? 💥
Giới Thiệu: Bài Học Từ Sự Cố Claude 💡
Hệ thống của chúng tôi được thiết kế để làm một việc duy nhất và làm rất tốt: chuyển đổi các câu hỏi bằng ngôn ngữ tự nhiên thành các cuộc gọi API. Người dùng chính là các nhà phân tích, quản lý tài khoản và trưởng nhóm vận hành. Họ biết mình cần dữ liệu nào, nhưng việc tổng hợp thủ công đòi hỏi phải truy xuất từ bốn bảng điều khiển (dashboards), hai công cụ BI và một trình tạo báo cáo của Salesforce. Với hệ thống của chúng tôi, họ chỉ cần gõ yêu cầu bằng tiếng Anh đơn giản. Một yêu cầu như "Tổng hợp báo cáo về doanh số bán hàng từ tháng 1 đến tháng 3 năm 2026 cho khu vực Đông Bắc, phân chia theo thành phố" sẽ được dịch thành một cuộc gọi API mà hệ thống có thể thực hiện:
json { "description": "User requested sales volume for the given date range, here is the API call to get the response", "api_call": "/api/sales_volume", "post_body": { "start_date": "2026-01-01", "end_date": "2026-03-31", "region": "northeast" } }
Phần còn lại của quy trình là kỹ thuật truyền thống. Hệ thống sẽ gửi cuộc gọi đến phần phụ trợ phù hợp (chúng tôi có tích hợp với các cổng báo cáo nội bộ, Salesforce và một số dịch vụ tự phát triển), áp dụng một truy vấn JSON do mô hình ngôn ngữ lớn (LLM) tạo ra để lọc và định dạng phản hồi, sau đó gửi qua email, dưới dạng tài liệu Drive hoặc hiển thị dưới dạng biểu đồ trên trình duyệt. Đến giữa năm 2025, hệ thống đã tạo ra hàng trăm báo cáo mỗi tháng. Những báo cáo này được ban lãnh đạo và các nhà phân tích sử dụng, đồng thời được lưu hành đến các bên liên quan bên ngoài. Nó đã trở thành cách mặc định mà hầu hết các nhóm lấy dữ liệu ad-hoc.
Hợp đồng giữa LLM và phần còn lại của hệ thống là một đối tượng JSON có cấu trúc như ví dụ trên.
Khi Claude Thay Đổi, Mọi Thứ Đều Đảo Lộn 🤯
Chúng tôi xây dựng hệ thống này trên Claude Sonnet 3.5 vào đầu năm 2025. Việc nâng cấp lên 3.7 và 4.0 đều diễn ra mà không có sự cố nào. Đến khi Sonnet 4.5 ra mắt, chúng tôi đã trở nên chủ quan về sự ổn định và khả năng dự đoán của LLM trong việc giải quyết cái mà chúng tôi tin là một vấn đề đơn giản. Các bản nâng cấp mô hình đã trở thành thói quen, giống như việc tăng phiên bản nhỏ của một thư viện hoạt động tốt.
Sau đó, chúng tôi triển khai 4.5. Đối với một tỷ lệ đáng kể các yêu cầu, mô hình bắt đầu gộp nội dung của trường post_body vào trường description. Hai chế độ lỗi sau đó đã xảy ra:
1. Tham số lọc không đến được API: Hệ thống của chúng tôi đọc post_body là nguồn đáng tin cậy cho payload của yêu cầu, nhưng trường này lại trống rỗng. Cuộc gọi API được thực hiện mà không có bộ lọc phạm vi ngày hoặc khu vực. Tùy thuộc vào API cụ thể được gọi, phần phụ trợ có thể trả về doanh số bán hàng trong toàn bộ thời gian hoặc tất cả các khu vực, hoặc trả về lỗi 500. 2. Mô hình bắt đầu đặt câu hỏi làm rõ: Điều này hoàn toàn mới. Các phiên bản trước luôn cố gắng hết sức để xử lý một yêu cầu mơ hồ và trả về một đối tượng có cấu trúc. Sonnet 4.5, thận trọng hơn, đôi khi lại trả lời bằng một câu hỏi. Hệ thống của chúng tôi không có cơ chế xử lý điều này. Nó được xây dựng trên giả định rằng mọi lời gọi mô hình sẽ dẫn đến một cuộc gọi API. Không có thành phần "con người trong vòng lặp" (human-in-the-loop) và không có trạng thái để giữ một yêu cầu chưa hoàn thành. Điều này đã gây ra nhiều lỗi khác nhau cho các hệ thống tiếp theo.
Chúng tôi phải quay trở lại phiên bản 4.0. Điều này khó khăn hơn nhiều so với lẽ ra: Giữa các lần triển khai 4.0 và 4.5, đội ngũ của chúng tôi đã thêm các tích hợp API mới, tất cả đều được kiểm định với 4.5. Việc hoàn nguyên mô hình có nghĩa là phải kiểm định lại tất cả các tích hợp đó với 4.0 dưới áp lực thời gian.
Vì Sao Kỹ Thuật Truyền Thống Thất Bại? 🧐
Kỹ thuật phần mềm dựa trên khả năng giới hạn tác động của một thay đổi. Khi bạn nâng cấp một driver hoặc thư viện, bạn đọc các ghi chú phát hành để xem có nên mong đợi các thay đổi gây lỗi hay không. Các bài kiểm tra đơn vị (unit tests) giới hạn những gì có thể đã thay đổi. Bạn có thể tận dụng thuộc tính sau: Hệ thống đang được thay đổi đủ xác định (deterministic) để hành vi của nó có thể được dự đoán, hoặc ít nhất được lấy mẫu đủ dày đặc để mang lại sự tự tin. **