Bài học thực tế khi xây dựng hệ thống đa tác nhân từ con số không

Phần mềm13 tháng 5, 2026·6 phút đọc

Paulo Arruda chia sẻ hành trình của Shopify trong việc chuyển đổi từ các công cụ chat đơn giản sang hệ thống các tác nhân AI chuyên biệt. Ông giải thích cách việc thay thế các prompt "tất cả trong một" bằng các vi dịch vụ tác nhân giúp giảm thời gian xử lý từ hàng giờ xuống còn vài phút. Bài viết cũng đề xuất giả thuyết sử dụng bộ điều hợp hệ thống tệp để giải quyết vấn đề ngữ cảnh phình to trong tương lai.

Bài học thực tế khi xây dựng hệ thống đa tác nhân từ con số không

Bài học thực tế khi xây dựng hệ thống đa tác nhân từ con số không

Paulo Arruda, Staff Engineer tại Shopify, đã chia sẻ câu chuyện thú vị về sự tiến hóa của AI tại công ty này, từ những công cụ chat đơn giản ban đầu đến một hệ thống phức tạp gồm nhiều tác nhân (agents) chuyên biệt làm việc cùng nhau. Bài thuyết trình không chỉ đi sâu vào kỹ thuật mà còn mang đến những góc nhìn thực tế về việc xây dựng và vận hành các hệ thống đa tác nhân trong môi trường sản xuất.

Hệ thống đa tác nhânHệ thống đa tác nhân

Hành trình AI tại Shopify: Từ tò mò đến áp dụng

Mọi thứ bắt đầu khi Shopify cấp quyền truy cập vào GPT-3.5 cho nhân viên. Mặc dù có các công cụ như LibreChat, VS Code Copilot và Cursor, nhưng một lượng lớn kỹ sư vẫn chưa sử dụng AI hàng ngày do sự hoài nghi hoặc trải nghiệm không tốt trong quá khứ. Tuy nhiên, văn hóa "hacker" tại Shopify, nơi sự tò mò được khuyến khích, đã tạo điều kiện cho các thử nghiệm mới.

Ban đầu, Arruda tập trung vào việc tạo test tự động cho các codebase khổng lồ. Ông đã thử nghiệm việc xây dựng đồ thị phụ thuộc giữa các tệp mã nguồn bằng cách sử dụng GPT để tóm tắt từng tệp. Mặc dù thú vị, phương pháp này quá tốn kém và khó duy trì với hàng trăm pull request mỗi ngày.

Bước ngoặt với Claude Code và ý tưởng về Swarm

Sự thay đổi lớn đến khi Anthropic ra mắt Claude Code dưới dạng bản xem trước nghiên cứu. Thay vì lập chỉ mục (indexing) toàn bộ codebase như Cursor, Claude Code sử dụng "tác nhân tìm kiếm" (agentic search) để duyệt qua mã nguồn. Arruda nhận thấy hiệu quả của phương pháp này và bắt đầu tự hỏi: Điều gì sẽ xảy ra nếu ta cung cấp cho Claude Code các công cụ để tự do điều hướng cây cú pháp trừu tượng (AST)?

Trong một cuộc thi Hackday, ông đã thử kết nối nhiều instance Claude Code với nhau. Một instance nằm trong thư viện mã nguồn để học cách sử dụng nó, sau đó hướng dẫn instance chính xây dựng thư viện mong muốn. Kết quả đáng kinh ngạc: trong khi một mình Claude Code hoặc chính Arruda không thể giải quyết vấn đề, nhưng hai instance Claude Code làm việc cùng nhau thì lại thành công.

Điều này dẫn đến sự ra đời của Claude Swarm – một công cụ cho phép tạo ra các cấu trúc cây gồm nhiều instance Claude Code chuyên biệt, mỗi cái chịu trách nhiệm một phần của codebase.

Thành công nhờ sự chuyên biệt hóa

Khi mô hình này được áp dụng rộng rãi hơn tại Shopify, các nhóm bắt đầu nhận ra lợi ích to lớn của việc chia nhỏ nhiệm vụ. Trước đây, họ thường sử dụng một LLM duy nhất với một prompt khổng lồ chứa tất cả các quy tắc và hướng dẫn. Cách tiếp cận này thường thất bại do quá nhiều token không liên quan làm LLM bị lạc hướng.

Một ví dụ điển hình là quy trình duyệt theme (theme reviews). Trước đây, việc này mất 22 giờ với một prompt duy nhất cố gắng bao quát mọi tiêu chuẩn tuân thủ. Khi chia nhỏ các tiêu chuẩn thành các tác nhân riêng biệt sử dụng Claude Swarm, thời gian xử lý đã giảm xuống chỉ còn 7 đến 20 phút.

Tương tự, việc đánh giá ứng viên cho các vị trí nội bộ cũng được rút ngắn từ nhiều giờ xuống dưới một giờ nhờ các tác nhân chuyên biệt hóa.

Thách thức và giải pháp SwarmSDK

Mặc dù thành công, việc sử dụng YAML để cấu hình các tác nhân quá phức tạp đối với người không phải lập trình viên và đôi khi cả với các nhà phát triển. Hơn nữa, sự phân mảnh bắt đầu xuất hiện khi các đội nhóm tự xây dựng các hệ thống pipeline và workflow riêng của họ, sử dụng nhiều framework khác nhau như LangChain.

Để giải quyết vấn đề này, Arruda đã phát triển SwarmSDK. Đây là một chiến lược điều phối thống nhất cho phép mọi người định nghĩa tác nhân theo cùng một cách. Thay vì sử dụng kiến trúc vi dịch vụ (microservices) phức tạp với các vấn đề về mạng lưới, SwarmSDK chạy mọi thứ trong một quy trình duy nhất, tận dụng khả năng xử lý I/O của Ruby fibers.

SwarmSDK hỗ trợ đa nhà cung cấp (multi-provider), cho phép định nghĩa tác nhân bằng YAML hoặc Ruby DSL, hỗ trợ workflow, hook sự kiện và có khả năng quan sát (observability) tích hợp sẵn.

Bài học kinh nghiệm

Từ hành trình này, Paulo Arruda đúc kết được ba bài học quan trọng:

  1. Giải quyết nỗi đau của chính mình: Giải pháp tốt nhất thường bắt nguồn từ việc bạn cố gắng giải quyết vấn đề mà mình đang gặp phải.
  2. Tác nhân là những công cụ chuyên biệt: Đừng cố xây dựng các tác nhân tổng quát với những "persona" hay tiểu sử dài dòng. Hãy coi chúng như những chuyên gia gầy gò, tập trung vào một nhiệm vụ hẹp. Ít token hơn có nghĩa là hiệu quả hơn.
  3. Trao quyền thay vì xây dựng đội SWAT: Đừng tạo ra một đội nhóm AI trung tâm xử lý mọi việc. Hãy xây dựng các công cụ để trao quyền cho những người đam mê AI (linchpins) trong từng đội nhóm, vì họ hiểu rõ lĩnh vực của mình nhất.

Tương lai: Giải quyết vấn đề ngữ cảnh với llm-fuse

Nhìn về tương lai, Arruda đặt ra câu hỏi về việc làm thế nào để phơi bày dữ liệu cho các tác nhân một cách tối ưu, tránh tình trạng "phình to ngữ cảnh" (context bloat) hiện nay khi sử dụng MCP (Model Context Protocol).

Ông đưa ra một giả thuyết thú vị gọi là llm-fuse. Ý tưởng là tạo ra một lớp bộ điều hợp giả lập hệ thống tệp. Thay vì cung cấp cho LLM hàng tá công cụ với các mô tả tham số dài dòng, ta chỉ cung cấp các công cụ cơ bản của hệ thống tệp: Read, Grep, Glob, Search, Write, Edit, Delete và Defrag.

Lớp bộ điều hợp này sẽ chuyển đổi các lệnh đọc/ghi tệp thành các truy vấn thực tế tới cơ sở dữ liệu hoặc bất kỳ nguồn dữ liệu nào khác. Điều này tận dụng khả năng hiểu mã nguồn cực tốt của các mô hình tiên tiến. Ngoài ra, ông còn giới thiệu công cụ "Defrag" để tối ưu hóa bộ nhớ của tác nhân, gộp các ký ức tương tự lại với nhau để giữ cho ngữ cảnh luôn gọn gàng và hiệu quả.

Mặc dù vẫn đang trong giai đoạn thử nghiệm, giả thuyết này mở ra một hướng đi mới mẻ để giải quyết một trong những thách thức lớn nhất của AI hiện nay: Quản lý ngữ cảnh hiệu quả.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗