Trong capstone vibe-coding của khóa Kaggle 5-Day AI Agents, mình xây Olist Ecommerce Analytics Agent để thử một câu hỏi thực tế: hệ thống nhiều tác tử có thể giúp phân tích dữ liệu thương mại điện tử mà vẫn giữ truy vấn BigQuery trong giới hạn kiểm soát hay không?
Mình dùng Google ADK, framework tác tử chính thức, mã nguồn mở và code-first của Google, làm nền cho hệ thống. Phần quy trình build và eval đi qua google/agents-cli, bộ CLI và skills chính thức hỗ trợ các workflow build, eval và deploy. Dự án này không triển khai production; phạm vi dừng ở một sản phẩm chạy được, có guardrail và có bằng chứng kiểm thử cục bộ.
Mình chọn ADK để kiểm tra routing, tool và guardrail trong một workflow có dữ liệu thật. Repo chính thức vẫn được duy trì, nhưng mức độ hoạt động của framework không phải bằng chứng về độ sẵn sàng cho production.
Bài toán và ranh giới dữ liệu
Bài toán không phải tạo thêm một chatbot biết viết SQL. Mình muốn người dùng đặt câu hỏi phân tích về dữ liệu Olist, còn hệ thống tự chọn specialist phù hợp, truy vấn BigQuery và đưa kết quả trở lại theo đúng ngữ cảnh câu hỏi.
Kiến trúc multi-agent tách phần điều phối khỏi phần xử lý chuyên môn. Tác tử điều phối nhận yêu cầu và định tuyến đến specialist thay vì cố làm mọi việc trong một prompt lớn. Cách chia này giúp mình nhìn rõ ba lớp trách nhiệm: hiểu câu hỏi, chọn năng lực phù hợp và chạm vào dữ liệu.
BigQuery là ranh giới quan trọng nhất. Một agent phân tích dữ liệu không chỉ cần trả lời đúng; nó còn phải tránh tạo chi phí hoặc thay đổi dữ liệu ngoài ý muốn. Vì vậy, luồng truy vấn có ba giới hạn cụ thể:
- chỉ chấp nhận câu lệnh
SELECT; - đặt mức trần billing 10 GB cho mỗi truy vấn;
- dừng truy vấn sau 30 giây.
Ba guardrail này không làm SQL tự nhiên trở nên đúng. Chúng thu hẹp hậu quả khi routing hoặc sinh truy vấn sai: không ghi dữ liệu, không để một truy vấn quét vô hạn theo ý hệ thống, không chờ vô thời hạn.
Điều đã đứng vững khi kiểm thử
Điểm hợp với build này ở ADK là mô hình code-first. Routing, tool và guardrail nằm trong code có thể đọc, chạy và kiểm tra, thay vì chỉ tồn tại trong một sơ đồ kiến trúc. Repo ADK chính thức cũng giúp đối chiếu trực tiếp cách framework được duy trì.
agents-cli bổ sung một lớp workflow thực dụng hơn quanh quá trình làm agent. Mình dùng nó cho đường build và eval, không xem CLI như bằng chứng rằng sản phẩm đã được deploy. Phân biệt này quan trọng: một lệnh hỗ trợ deploy không đồng nghĩa dự án đã qua vận hành thật.
Bằng chứng cục bộ hiện có gồm:
- 17/17 ADK eval vượt qua;
- 12/12 agents-cli eval vượt qua.
Hai con số cho thấy các tình huống đã mã hóa đang chạy đúng theo tiêu chí của dự án. Chúng chưa chứng minh mọi câu hỏi Olist đều được hiểu đúng, nhưng đã cho thấy hệ thống vượt qua những tình huống được mã hóa thay vì chỉ trông thuyết phục trong vài đoạn hội thoại được chọn thủ công.
Mình giữ toàn bộ mã nguồn trong repo dự án. Video walkthrough trình bày luồng sản phẩm và cách các phần nối với nhau. Đây là bằng chứng có thể kiểm tra lại, không phải tuyên bố giải thưởng hay chiến thắng cuộc thi.
Khoảng trống sau eval
Khoảng trống lớn nhất nằm giữa eval cục bộ và hành vi ngoài thực tế. Bộ kiểm thử hiện tại xác nhận 17 trường hợp ADK và 12 trường hợp qua agents-cli, nhưng chưa bao phủ hết cách người dùng diễn đạt câu hỏi, schema thay đổi, truy vấn hợp lệ nhưng tốn kém, hoặc câu trả lời đúng SQL nhưng sai ý nghĩa kinh doanh.
Guardrail cũng có giới hạn rõ. SELECT-only ngăn ghi dữ liệu, không ngăn mọi truy vấn đọc kém. Trần 10 GB và timeout 30 giây kiểm soát mức tiêu thụ, không thay thế việc rà soát SQL, theo dõi chi phí và kiểm tra chất lượng câu trả lời. Specialist routing giúp chia trách nhiệm, nhưng thêm một điểm có thể sai: chọn nhầm specialist vẫn có thể dẫn đến một câu trả lời trông hợp lý.
Kết luận của mình: Google ADK đủ rõ và đủ thực dụng để xây một hệ thống multi-agent có thể kiểm tra; agents-cli giúp vòng build/eval bớt rời rạc. Olist Ecommerce Analytics Agent đã vượt qua toàn bộ eval hiện có và giữ BigQuery sau các giới hạn cụ thể. Tuy vậy, đây vẫn là sản phẩm thử nghiệm cho challenge, chưa phải hệ thống đã chứng minh ở production. Giá trị lớn nhất của build này nằm ở chỗ mọi tuyên bố quan trọng đều có thứ để mở ra xem: code, guardrail, eval và walkthrough.
