Agent Java lên prod — chỉ cần một annotation?
Spring AI SDK cho Bedrock AgentCore vừa GA — Java dev dựng agent production bằng annotation thay vì hàng tuần viết hạ tầng.
Bụi WireTuần trước, mình suýt khuyên bạn chuyển sang Python
Mình có anh bạn — Java dev 8 năm, kiểu viết Spring Boot trong mơ cũng không sai annotation. Anh nhắn lúc nửa đêm: "Tao muốn build AI agent cho hệ thống nội bộ, nhưng mở tutorial nào cũng thấy Python với LangChain. Java dev bị bỏ quên rồi à?"
Mình định trả lời "thì học Python đi anh ơi" — nhưng tuần này AWS ra Spring AI SDK cho Amazon Bedrock AgentCore, bản GA chính thức. Và câu trả lời bây giờ khác hẳn.
Đường cao tốc đã có — bạn chỉ thiếu lối lên
Nói thẳng ra thì: build AI agent không khó. Build hạ tầng để agent đó chạy production mới khó.
Hình dung thế này: bạn muốn đi từ Hà Nội vào Sài Gòn. Agent logic là chiếc xe bạn lái. Nhưng trước khi lái, bạn phải tự đổ nhựa đường, dựng trạm thu phí, lắp hệ thống giám sát giao thông. Đó chính là những gì Java dev phải làm trước khi có SDK này:
- Viết custom controller để fulfill AgentCore Runtime contract
- Xử lý Server-Side Events (SSE) streaming bằng tay
- Implement health checks, rate limiting
- Wiring Spring advisors, memory repositories, tool definitions
Tính sơ sơ vài tuần code hạ tầng trước khi viết được dòng logic AI đầu tiên.
Spring AI AgentCore SDK đóng vai trò như lối lên cao tốc. AgentCore Runtime — con đường cao tốc — đã có sẵn: managed scaling, pay-per-use, health monitoring. SDK cho bạn nhảy thẳng lên đó bằng cách quen thuộc: annotation, auto-configuration, composable advisors. Thêm dependency, annotate method, SDK lo phần còn lại.
Kịch bản 1 — Team fintech 5 người, sếp muốn agent xử lý hồ sơ
Giả sử team bạn 5 dev, đang maintain hệ thống Spring Boot cho một công ty tài chính. Sếp đọc báo xong bảo: "Tao muốn có AI agent tự phân loại và trích xuất thông tin từ hồ sơ vay."
Trước SDK: Team phải viết adapter layer giữa Spring app và AgentCore Runtime. Một dev senior dành 2–3 tuần chỉ để lo phần contract — SSE endpoint, health check, session management. Business logic — phần agent thật sự làm gì — vẫn chưa ai đụng tới.
Sau SDK: Thêm dependency vào pom.xml, annotate endpoint theo pattern của SDK, auto-configuration tự sinh phần contract. Team dồn thời gian vào thứ thật sự quan trọng: logic phân loại hồ sơ, prompt engineering, tool definitions cho agent gọi API nội bộ.
Dịch sang tiếng người: thay vì 2–3 tuần xây hạ tầng, bạn deploy agent lên AgentCore Runtime trong vài ngày — phần lớn thời gian là test logic, không phải debug plumbing.
Kịch bản 2 — Agent đọc tài liệu sai, cả pipeline đổ domino
Quay lại kịch bản trên: agent cần đọc hồ sơ PDF. Và đây là lúc mọi thứ hay đổ — agent không sai vì "ngu", mà sai vì đọc tài liệu sai ngay từ đầu.
LlamaIndex vừa tung ParseBench — benchmark đầu tiên đo chất lượng document parsing dành riêng cho AI agent. Phát hiện cốt lõi: parsing "gần đúng" không đủ. Một con số bị lệch trong hồ sơ vay, agent phân loại nhầm, quyết định sai, team mất cả tuần debug mà không hiểu tại sao — vì ai cũng đi tìm lỗi ở agent logic, trong khi thủ phạm nằm ở bước parse document.
Giống như GPS chỉ sai ngay km đầu tiên — bạn chạy càng xa, càng lạc. Trước khi lo agent thông minh, hãy lo agent đọc đúng. Benchmark parser trước, rồi hãy tính chuyện build agent phức tạp.
Thử ngay chiều nay — 3 bước lên cao tốc
Bạn có Spring Boot project sẵn? Thử flow này:
Bước 1: Thêm Spring AI AgentCore SDK dependency vào project. SDK là open-source — check repo chính thức trên GitHub của AWS Labs.
Bước 2: Tạo một agent đơn giản — nhận câu hỏi, trả lời dựa trên context cố định. Annotate endpoint theo pattern của SDK. Mục tiêu: verify contract với AgentCore Runtime hoạt động — agent nhận request, trả response qua SSE đúng format.
Bước 3: Deploy lên AgentCore Runtime. Phần runtime handle scaling và monitoring, bạn không cần setup Kubernetes hay load balancer. Gọi thử vài request, check logs trên console. AgentCore tính tiền theo usage — không request thì không tốn, rất hợp giai đoạn thử nghiệm.
Nếu bước 2 chạy ngon local, bước 3 chỉ là chuyện đẩy lên cloud.
Ba cái bẫy mà team hay rơi
Bẫy 1: "SDK lo hết rồi, không cần hiểu tầng dưới." GPS đưa bạn lên cao tốc, nhưng bạn vẫn phải biết luật giao thông. SDK abstract phần boilerplate, nhưng khi production có incident — health check fail, session leak, SSE timeout — bạn debug ở tầng nào nếu không hiểu AgentCore Runtime expect gì?
Bẫy 2: "Chạy được = chạy đúng." Đặc biệt với agent xử lý tài liệu. Như ParseBench chỉ ra, output nhìn đẹp mấy cũng vô nghĩa nếu input bị parse sai. Hãy có evaluation pipeline riêng — đừng tin output agent mà không verify.
Bẫy 3: Quên chuyện vendor lock-in. SDK build trên Spring AI — framework open-source hỗ trợ nhiều model provider. Nhưng AgentCore Runtime là managed service của AWS. Nếu team cần multi-cloud, hãy tách rõ agent logic (portable) khỏi runtime layer (provider-specific). Spring AI giúp việc này khả thi vì bạn swap provider ở tầng model mà không đổi code agent.
Không muốn all-in AWS? Vẫn có đường
Spring AI bản thân nó không bắt buộc dùng AgentCore. Bạn hoàn toàn kết hợp Spring AI với Ollama để self-host model, hoặc dùng LangChain4j — một framework agent khác cho Java. Tradeoff: bạn tự lo runtime, scaling, monitoring — nhưng giữ toàn quyền kiểm soát.
Như mình từng chia sẻ trong các bài về Ollama — self-host đổi effort vận hành lấy sự tự chủ, cloud managed service đổi tiền lấy tiện lợi. Không có đáp án đúng duy nhất, chỉ có đáp án vừa vặn với team bạn lúc này.
Còn anh bạn Java dev 8 năm của mình? Anh ấy deploy agent đầu tiên cuối tuần rồi. Bằng Java. Không một dòng Python.
---
Bụi Wire — nghiện đọc release notes lúc 2 giờ sáng