Internet đã quyết định rằng đây là năm của các agent. LangGraph, CrewAI và AutoGen là những cái tên xuất hiện trên mọi lộ trình phát triển kỹ thuật. Các đội ngũ đang kiểm tra sức chịu tải của các lớp điều phối (orchestration layers), tranh luận giữa máy trạng thái (state machines) so với nhập vai (role-play), và tự hỏi thư viện nào cuối cùng sẽ giúp các mô hình ngôn ngữ lớn trở nên tự chủ.
Đây là một sự thật khó chấp nhận: hầu hết những so sánh đó đều là quá sớm. Các framework không phải là phần khó nhất. Phần khó nhất là chúng ta đã ngừng định nghĩa các thuật ngữ của mình. Giờ đây, mọi người gọi mọi thứ là agent. Một lệnh gọi công cụ (tool call) không phải là một agent. Một chatbot không phải là một agent. Định nghĩa cẩu thả đó dẫn trực tiếp đến kỹ thuật kém, các hệ thống được xây dựng quá mức, và các sự cố vận hành (production outages) lẽ ra có thể tránh được chỉ bằng một script đơn giản.
Trước khi bạn chọn một framework, hãy định nghĩa thứ mà bạn thực sự đang xây dựng.
Bản chất thực sự của một Agent
Một agent không được định nghĩa bởi mô hình mà nó chạy trên đó hay số lượng lệnh gọi API mà nó thực hiện. Một agent được định nghĩa bởi hành vi của nó. Nó phải có một mục tiêu rõ ràng. Nó phải tự quyết định bước tiếp theo là gì mà không cần con người lập bản đồ lộ trình trước. Nó phải xử lý thất bại khi bước đó bị lỗi. Và nó phải biết khi nào nên dừng lại.
Hãy nghĩ về một hệ thống hỗ trợ đọc một email gửi đến, phân loại nó là yêu cầu hoàn tiền, trích xuất mã số đơn hàng, truy vấn cơ sở dữ liệu vận chuyển, kiểm tra thời hạn chính sách đổi trả, soạn thảo phản hồi và đánh dấu ticket đã giải quyết. Nếu cơ sở dữ liệu hết thời gian phản hồi (timeout), nó sẽ đợi và thử lại. Nếu thời hạn chính sách không rõ ràng, nó sẽ báo cho con người. Khi phản hồi được gửi đi, nó dừng lại. Đó là một agent. Một lớp bao quanh (wrapper) một lệnh gọi LLM duy nhất để trả về JSON thì không phải, bất kể đội ngũ marketing có dán bao nhiêu nhãn "agent" lên nó đi chăng nữa.
Sự phân biệt này quan trọng vì sự phức tạp luôn đi kèm với chi phí. Một hệ thống không cần sự tự chủ thì không nên phải trả giá cho nó.
Hình thái thực sự của AI trong vận hành
Hầu hết các hệ thống AI đang chạy trong môi trường production hiện nay đều có phạm vi hẹp. Chúng làm tốt một việc duy nhất. Chúng phân loại các ticket hỗ trợ vào các hàng đợi. Chúng trích xuất ngày hết hạn từ các tài liệu đã quét. Chúng khớp các truy vấn của khách hàng với các bài viết trong cơ sở tri thức hiện có. Chúng không phải là các công cụ suy luận tổng quát, và việc giả vờ rằng chúng là như vậy sẽ dẫn đến kiểu kỹ thuật quá mức (overengineering) tồi tệ nhất.
Nó cũng dẫn đến một sự ám ảnh mang tính hủy hoại đối với việc ra mắt các mô hình mới. Các đội ngũ chạy theo mô hình nền tảng (foundation model) mới nhất như thể nó sẽ bù đắp cho kiến trúc cẩu thả. Nó sẽ không làm được điều đó. Một mô hình có năng lực hơn chạy trong một vòng lặp mong manh mà không có xử lý lỗi sẽ chỉ đơn giản là thất bại với sự tự tin cao hơn và những ảo giác (hallucinations) sáng tạo hơn. Hãy ngừng chạy theo các điểm chuẩn (benchmarks). Hãy bắt đầu chạy theo cấu trúc.
Framework không phải là Sản phẩm
LangGraph cung cấp cho bạn các máy trạng thái và chu trình rõ ràng. CrewAI thiên về điều phối dựa trên vai trò (role-based orchestration), nơi các agent đảm nhận các nhân vật (personas). AutoGen tập trung vào các agent hội thoại, chúng trò chuyện với nhau để giải quyết vấn đề. Tất cả đều là những công cụ có khả năng. Chúng cũng là những cách tiếp cận khác nhau về mặt cơ bản đối với luồng điều khiển (control flow).
Nhưng framework bạn chọn ít quan trọng hơn các pattern mà bạn áp dụng bên trong nó. Tôi đã chứng kiến các đội ngũ triển khai các hệ thống tự động hóa cực kỳ vững chắc chỉ bằng Python và Redis vì họ tôn trọng các ranh giới. Tôi cũng đã chứng kiến các đội ngũ khác sụp đổ dưới sức nặng của các hệ thống điều phối hào nhoáng vì họ coi framework là sự thay thế cho thiết kế.
Nếu việc bàn giao (handoffs) của bạn mơ hồ, các công cụ của bạn mong manh và logic thử lại (retry logic) của bạn không tồn tại, thì logo trên file requirements.txt của bạn cũng không cứu được bạn đâu.
Ba điều thực sự xứng đáng với thời gian của bạn
Nếu bạn đang xây dựng các hệ thống mang tính agent (agentic systems), hãy dồn nỗ lực vào ba lĩnh vực này.
Thiết kế công cụ (Tool design). Mỗi hàm mà agent của bạn có thể gọi là một rủi ro được bao bọc trong một giao diện (interface). Hãy thiết kế chúng một cách chặt chẽ. Kiểm tra đầu vào (validate inputs) một cách quyết liệt. Trả về các lỗi thực sự có thể đọc được, chứ không phải là các bản dump lỗi 500. Một công cụ tốt là công cụ mà agent có thể suy luận được khi có lỗi xảy ra.
Xử lý thất bại (Failure handling). Hãy giả định rằng mọi LLM
