Phạm Văn Thư
AI agents và ứng dụng · Nội dung có hỗ trợ AI

AutoGen ở chế độ bảo trì: kiến trúc agent hướng sự kiện và lộ trình chuyển đổi

Đăng ngày 12/10/2026

Mục lục bài nghiên cứu
Hình đại diện AutoGen — AI agent mã nguồn mở

AutoGen còn đáng dùng cho ai trong năm 2026?

Điều đầu tiên người đọc cần biết về AutoGen là trạng thái của nó: README tại commit nghiên cứu ghi rõ dự án đã chuyển sang chế độ bảo trì, sẽ không nhận tính năng hay cải tiến mới và từ nay do cộng đồng quản lý. Microsoft khuyến nghị người dùng mới bắt đầu với Microsoft Agent Framework, còn người dùng hiện hữu được khuyến khích chuyển đổi theo hướng dẫn di trú. [1]

Dù vậy, AutoGen vẫn là framework phân tầng rõ ràng để xây ứng dụng nhiều agent, tức chương trình dùng mô hình ngôn ngữ lớn để lập kế hoạch, gọi công cụ và nhắn tin cho nhau. Tầng Core xử lý truyền thông điệp và runtime, tầng AgentChat cung cấp API dựng nhanh các mẫu hội thoại, còn Extensions chứa các bộ kết nối mô hình và khả năng thực thi mã. [1][2]

Khuyến nghị của bài viết vì thế khá dứt khoát. Đơn vị đã có ứng dụng AutoGen nên ổn định hóa và lập kế hoạch chuyển đổi, không mở rộng. Người muốn học thiết kế hệ đa agent hướng sự kiện vẫn nên đọc tài liệu khái niệm của nó. Còn dự án sản phẩm mới thì cần lý do rất cụ thể mới nên chọn một thư viện đã ngừng phát triển tính năng.

Bài toán gốc: cho nhiều agent nói chuyện mà không tự viết hạ tầng nhắn tin

Gọi mô hình một lần thì dễ quản lý. Khó khăn xuất hiện khi công việc cần nhiều vai trò, như đọc tài liệu, viết mã, kiểm tra và người duyệt: ai gửi thông điệp cho ai, agent được tạo khi nào, trạng thái nằm đâu và vòng lặp dừng ở đâu.

AutoGen được Microsoft Research khởi xướng để thử nghiệm chính những mẫu điều phối đó. Tài liệu Responsible AI của dự án mô tả nó là framework giúp định nghĩa tập agent có năng lực và vai trò riêng, rồi định nghĩa hành vi tương tác giữa chúng, tức agent trả lời gì khi nhận thông điệp từ agent khác. [1][6]

Cùng tài liệu đó cũng nói rõ phạm vi: AutoGen là thư viện dành cho mục đích nghiên cứu và không nên đưa vào ứng dụng hạ nguồn khi chưa đánh giá thêm về độ bền, an toàn và nguy cơ thiên lệch. [6] Đây là một điểm hay bị bỏ qua khi người ta nhắc đến AutoGen như một nền tảng doanh nghiệp. Bài toán nó giải là tổ chức hội thoại giữa các agent; bài toán vận hành an toàn trong môi trường thật vẫn thuộc về đội triển khai.

Ba tầng Core, AgentChat, Extensions và hai kiểu runtime

README mô tả thiết kế phân tầng, mỗi tầng dựa trên tầng bên dưới. Core API hiện thực truyền thông điệp, agent hướng sự kiện và runtime cục bộ lẫn phân tán, đồng thời hỗ trợ liên ngôn ngữ giữa .NET và Python. AgentChat API là lớp có quan điểm thiết kế sẵn, gần với phong cách của phiên bản 0.2, hỗ trợ các mẫu như hội thoại hai agent hay group chat. Extensions API chứa các bộ kết nối mô hình như OpenAI, Azure OpenAI và khả năng thực thi mã. [1]

Ở nền móng là runtime, môi trường chịu trách nhiệm chuyển thông điệp giữa agent, quản lý danh tính và vòng đời agent, và áp đặt ranh giới bảo mật, quyền riêng tư. Có hai loại. Runtime độc lập phù hợp ứng dụng một tiến trình, ví dụ lớp SingleThreadedAgentRuntime trong Python. Runtime phân tán gồm một host servicer giữ trạng thái kết nối và nhiều worker chạy agent, giao tiếp với host qua gateway. [2]

Điểm kiến trúc đáng chú ý là hai loại runtime dùng chung một bộ API, nên tài liệu khẳng định có thể chuyển giữa chúng mà không phải sửa phần cài đặt agent. [2] Trong thực tế, điều này cho phép bắt đầu bằng một tiến trình trên máy phát triển rồi tách worker ra nhiều máy khi tải tăng. Tuy nhiên bài viết không kiểm chứng mức độ trơn tru của việc chuyển đổi đó; nó là thiết kế được tài liệu mô tả, không phải kết quả đã đo. Bên cạnh framework còn có AutoGen Studio để dựng nhóm agent bằng giao diện và AutoGen Bench để đánh giá agent. [1]

AutoGen — hình minh họa 1, AI agent mã nguồn mở
Hình 1. Minh họa trong kho mã nguồn chính thức của AutoGen. Nguồn: microsoft/autogen @027ecf0. Hình ảnh và nhãn hiệu thuộc về chủ sở hữu tương ứng.

Thông điệp đi qua topic và subscription như thế nào

Runtime của AutoGen có hai cách giao thông điệp. Nhắn trực tiếp là một đối một, người gửi phải biết ID của agent nhận. Phát quảng bá là một đối nhiều, người gửi không cần biết ai sẽ xử lý. Cách thứ hai được hiện thực bằng mô hình publish-subscribe: mỗi thông điệp được phát lên một topic, và runtime dùng danh sách subscription để quyết định agent nào nhận. [3]

Một topic gồm hai phần là topic type và topic source. Type thường do mã ứng dụng đặt để đánh dấu loại thông điệp, còn source là định danh cụ thể trong loại đó, thường lấy từ dữ liệu ứng dụng. Nếu một topic không có subscription nào, thông điệp phát lên đó sẽ không đến được agent nào. [3]

Cơ chế được khuyên dùng là type-based subscription, ánh xạ topic type tới agent type. Khi thông điệp đến topic có source mới, runtime tạo agent với khóa bằng giá trị source nếu chưa tồn tại, nên ứng dụng nhiều tenant có agent riêng cho mỗi phiên, một cách cô lập dữ liệu riêng tư mà tài liệu nêu rõ. [3]

Diễn giải theo hướng ứng dụng, một sự kiện đầu vào được chuẩn hóa thành thông điệp, phát lên topic gắn với mã hồ sơ, agent phân loại xử lý rồi phát kết quả sang topic của agent soạn thảo. Vì mọi bước đi qua runtime, đây cũng là điểm tự nhiên để ghi nhật ký. Đó là cách hiểu của bài viết, không phải sơ đồ chính thức.

Những gì mã nguồn tại commit 027ecf0 thực sự cung cấp

Ở mức cài đặt, README yêu cầu Python 3.10 trở lên và hướng dẫn cài gói autogen-agentchat cùng phần mở rộng OpenAI. Ví dụ khởi đầu tạo một AssistantAgent với client mô hình OpenAI và gọi phương thức run bất đồng bộ. [1]

Về công cụ, README minh họa McpWorkbench để agent dùng một máy chủ MCP, giao thức chuẩn để nối mô hình với công cụ bên ngoài, ví dụ máy chủ Playwright cho duyệt web. Kèm theo là cảnh báo chỉ nên nối với máy chủ MCP tin cậy vì chúng có thể chạy lệnh trên môi trường cục bộ hoặc làm lộ thông tin nhạy cảm. Tham số max_tool_iterations giới hạn số vòng gọi công cụ của một agent. [1]

Về điều phối, AgentTool cho phép bọc một agent thành công cụ để agent khác gọi, tạo mẫu một agent tổng quát giao việc cho các agent chuyên môn. [1] Mức cao hơn là Magentic-One: một Orchestrator lập kế hoạch, giao việc, theo dõi tiến độ và sửa kế hoạch khi cần, điều phối WebSurfer để duyệt web, FileSurfer để đọc tệp, Coder để viết mã và ComputerTerminal để thực thi. Lớp MagenticOneGroupChat nay là một team chuẩn của AgentChat. [4]

AutoGen Studio có Team Builder để khai báo nhóm agent bằng JSON hoặc kéo thả, Playground để chạy thử, Gallery để nhập thành phần cộng đồng và Deployment để xuất nhóm thành mã Python hoặc chạy trong Docker. [5] Repository còn có phần .NET với các gói NuGet riêng. [1]

AutoGen — hình minh họa 2, AI agent mã nguồn mở
Hình 2. Minh họa trong kho mã nguồn chính thức của AutoGen. Nguồn: microsoft/autogen @027ecf0. Hình ảnh và nhãn hiệu thuộc về chủ sở hữu tương ứng.

Ai còn hưởng lợi khi dự án không nhận tính năng mới

Nhóm thứ nhất là các đội đã có mã AutoGen chạy ổn định. Chế độ bảo trì không buộc họ viết lại ngay: README nói người dùng hiện hữu vẫn có thể tiếp tục dùng, và đóng góp sửa lỗi, vá bảo mật vẫn được nhận. [1]

Nhóm thứ hai là giảng viên, sinh viên và kỹ sư muốn hiểu hệ đa agent: tài liệu về runtime, topic và subscription trình bày mạch lạc các bài toán định tuyến, vòng đời và cô lập tenant. [2][3]

Nhóm thứ ba là người làm nghiên cứu cần tái lập các thí nghiệm đã công bố trên AutoGen hoặc Magentic-One. Tài liệu Responsible AI nhắc đến các ứng dụng được đánh giá như giải toán, hỏi đáp, ra quyết định trong môi trường văn bản và tối ưu chuỗi cung ứng, cùng kết quả trên GAIA tại thời điểm tháng 3 năm 2024. [6] Đây là số liệu dự án tự công bố, bài viết không tái kiểm.

Đề xuất cho một công ty giao nhận ở Hải Phòng đang có bản mẫu AutoGen

Tình huống giả định sau không phải dự án đã diễn ra. Một công ty giao nhận khoảng năm mươi nhân sự ở Hải Phòng có hai lập trình viên. Họ từng dựng bản mẫu bằng AgentChat để đọc vận đơn, hóa đơn thương mại, trích tên hàng, mã HS đề xuất, số kiện, cảng đến và lập bản nháp dữ liệu khai báo cho nhân viên chứng từ kiểm tra. Nay họ phải quyết định sau thông báo bảo trì.

Đề xuất đầu tiên là không mở rộng bản mẫu, mà ghim phiên bản các gói và lập danh sách API AutoGen đang dùng, làm đầu vào ước lượng công sức di trú sang Microsoft Agent Framework theo hướng dẫn README chỉ tới. [1]

Đề xuất thứ hai tận dụng cơ chế topic. Dùng mã hồ sơ lô hàng làm topic source để runtime tạo agent riêng cho từng lô, tránh ngữ cảnh khách hàng này lẫn sang khách hàng khác, đúng kiểu cô lập nhiều tenant mà tài liệu mô tả. [3] Mọi bản nháp chỉ dừng ở trạng thái chờ duyệt; nhân viên chứng từ là người nhập liệu vào hệ thống khai báo hải quan, agent không có quyền gửi.

Đề xuất thứ ba là bỏ tác nhân thực thi mã nếu có. Trích xuất trường từ chứng từ chỉ cần các hàm định nghĩa trước, đúng khuyến nghị dùng function call thay cho mã tự do. [6] Đồng thời, đội ngũ dựng bộ kiểm thử hành vi độc lập với framework để sau này so sánh bản AutoGen với bản di trú trên cùng dữ liệu.

Vận hành một thư viện ở chế độ bảo trì: ghim phiên bản, sandbox, nhật ký

Với AutoGen, vận hành bắt đầu từ quản lý phụ thuộc. Vì README nói đóng góp chỉ giới hạn ở sửa lỗi, vá bảo mật và tài liệu, đội triển khai nên theo dõi trang release và thông báo bảo mật thay vì chờ tính năng. [1] Nên ghim phiên bản trong tệp khóa phụ thuộc, dựng môi trường tái lập được và có quy trình kiểm thử hồi quy trước mỗi lần nâng cấp, kể cả bản vá nhỏ.

Môi trường chạy cần tách bạch. Tài liệu Magentic-One khuyến nghị chạy mọi tác vụ trong container Docker, dùng môi trường ảo, theo dõi nhật ký trong và sau khi chạy, có người giám sát, hạn chế truy cập Internet và không cho agent tiếp cận dữ liệu nhạy cảm. [4] Nên áp dụng chúng cho mọi ứng dụng có công cụ tác động ra ngoài.

AutoGen Studio chỉ là công cụ dựng mẫu; nhà phát triển phải tự xây xác thực và bảo mật khi triển khai. [1][5] Có thể dùng nó để thảo luận thiết kế với bộ phận nghiệp vụ, không mở cho người dùng cuối.

Về quan sát, nên ghi ở lớp runtime: topic, agent gửi, agent nhận, số vòng gọi công cụ và lý do kết thúc. Với runtime phân tán, cần giám sát thêm kết nối giữa worker và host servicer, nơi giữ trạng thái kết nối. [2]

Thực thi mã, MCP và trang web độc hại: ba bề mặt rủi ro chính

Rủi ro lớn nhất là cho agent tác động ra ngoài. Tài liệu Responsible AI cảnh báo việc để agent thay đổi môi trường qua thực thi mã hoặc gọi hàm, như cài gói phần mềm, có thể gây rủi ro đáng kể, và khuyên giữ con người trong vòng quyết định. [6]

Bề mặt thứ hai là MCP. README cảnh báo máy chủ MCP có thể chạy lệnh trên môi trường cục bộ hoặc làm lộ thông tin nhạy cảm, nên chỉ kết nối máy chủ tin cậy. [1] Trong doanh nghiệp, điều đó có nghĩa là lập danh mục máy chủ MCP được phép, ghim phiên bản và rà soát quyền mà từng máy chủ nhận được.

Bề mặt thứ ba là nội dung web. Tài liệu Magentic-One nói thẳng rằng hệ thống có thể bị tấn công prompt injection từ trang web, và agent đôi khi thử những hành động rủi ro như chấp nhận thỏa thuận cookie mà không có con người tham gia. [4] Mọi văn bản lấy từ web hay tệp đính kèm vì thế phải được coi là dữ liệu, không được phép thay đổi quyền hoặc đích gửi.

Về quyền riêng tư, AutoGen Studio nói rõ chưa hiện thực kiểm thử chống jailbreak hay cơ chế bảo đảm mô hình chỉ truy cập dữ liệu theo quyền người dùng cuối. [5] Lỗ hổng cần được báo qua MSRC của Microsoft, không mở issue công khai. [7]

Hai giấy phép trong một repository: CC BY 4.0 cho tài liệu, MIT cho mã

Trường giấy phép mà GitHub API hiển thị cho repository này là CC BY 4.0, nhưng đó chỉ là cách GitHub nhận diện tệp LICENSE ở thư mục gốc. Đọc trực tiếp thì tệp LICENSE chứa văn bản Creative Commons Attribution 4.0 International, còn mã nguồn được cấp phép riêng theo tệp LICENSE-CODE với nội dung MIT License, bản quyền thuộc Microsoft Corporation. [8][9]

Phần Legal Notices trong README xác nhận cách chia này: tài liệu và nội dung khác dùng CC BY 4.0, còn mọi mã trong repository dùng MIT. README cũng lưu ý giấy phép không trao quyền dùng tên, logo hay nhãn hiệu của Microsoft, và Microsoft giữ mọi quyền khác không được trao rõ. [1] Như vậy, nếu kết luận toàn bộ AutoGen theo CC BY 4.0 chỉ vì trường API thì sẽ sai.

Nhiều gói con có tệp LICENSE-CODE riêng và một mẫu trong samples có LICENSE riêng; bài viết chỉ đọc hai tệp ở thư mục gốc, nên cần mở đúng tệp của gói trước khi tái phân phối.

Phạm vi của giấy phép cũng cần nói rõ. MIT ở đây áp dụng cho mã tại commit này. Nó không bao trùm các mô hình được gọi qua API, điều khoản dịch vụ của nhà cung cấp mô hình, các máy chủ MCP bên ngoài, các thư viện phụ thuộc với giấy phép riêng, hay Microsoft Agent Framework là một dự án khác.

Nguồn lực thực tế: người hiểu lập trình bất đồng bộ quan trọng hơn máy chủ

Bài viết không đưa giá vì nguồn không có. Chi phí nên được nhìn theo bốn loại nguồn lực. Thứ nhất là con người: một kỹ sư Python quen lập trình bất đồng bộ, vì các ví dụ trong README đều dùng asyncio, cùng một người nghiệp vụ để chấm đầu ra. [1]

Thứ hai là lượt gọi mô hình: một yêu cầu có thể sinh nhiều lượt gọi mô hình và công cụ, và tham số giới hạn số vòng gọi công cụ là đòn bẩy chặn chi phí ngoài dự kiến. [1] Nên đo token trên mỗi hồ sơ hoàn thành.

Thứ ba là hạ tầng: runtime độc lập chỉ cần một tiến trình, runtime phân tán cần thêm host servicer, worker và gateway. [2] Thực thi mã hay duyệt web thì cần thêm máy chạy container cô lập. [4]

Thứ tư, đặc thù của AutoGen, là chi phí rủi ro bảo trì: công theo dõi bản vá cộng đồng và ngân sách cho một lần di trú, nên ghi vào kế hoạch ngay từ đầu. README mô tả framework kế nhiệm có bản 1.0 với API ổn định và cam kết hỗ trợ dài hạn; đó là lời nhà phát triển, bài viết không đánh giá độc lập. [1]

Giữ AutoGen, chuyển sang kế nhiệm hay chọn cách tiếp cận khác

Phương án thứ nhất là giữ AutoGen ở phiên bản ghim: không tốn công viết lại nhưng phụ thuộc cộng đồng cho bản vá. Hợp với công cụ nội bộ nhỏ, ít thay đổi, không mở ra Internet.

Phương án thứ hai là chuyển sang Microsoft Agent Framework theo khuyến nghị của chính README. [1] Đây là lựa chọn tự nhiên cho đội đã quen hệ sinh thái Microsoft và muốn một lộ trình có cam kết hỗ trợ, đổi lại là công sức di trú và việc học API mới.

Phương án thứ ba là framework agent khác trong hệ Python như LangGraph hay CrewAI, mỗi cái có mô hình trừu tượng riêng. Bài viết không so sánh hiệu năng vì không có dữ liệu đo; tiêu chí nên là độ khớp với cách đội ngũ mô tả quy trình và độ rõ của tài liệu về ranh giới bảo mật.

Phương án thứ tư, thường bị quên, là không dùng framework agent: một lời gọi mô hình với đầu ra có cấu trúc cộng quy tắc kiểm tra viết tay có thể đủ cho việc trích xuất chứng từ. Nếu cách đơn giản đạt tiêu chí, hệ nhiều agent là chi phí thừa.

Khi nào không nên bắt đầu dự án mới bằng AutoGen

Không nên chọn AutoGen cho sản phẩm mới cần vòng đời dài nhiều năm, vì dự án đã tuyên bố không bổ sung tính năng và việc hỗ trợ cộng đồng có thể chậm. README thừa nhận thời gian phản hồi có thể khác nhau khi dự án do cộng đồng quản lý. [1]

Không nên coi AutoGen hay Studio là sản phẩm đóng gói sẵn cho người dùng cuối; chính tài liệu của dự án nói như vậy. [5][6]

Không nên để agent tự đăng nội dung ra ngoài. Tài liệu Responsible AI lấy đúng ví dụ không dùng AutoGen để tự động đăng nội dung do mô hình sinh lên mạng xã hội, và nhấn mạnh quyết định sử dụng đầu ra phải có con người. [6] Với các lĩnh vực như tài chính, pháp lý hay y tế, yêu cầu này càng chặt.

Cuối cùng, hạn chế của mô hình ngôn ngữ lớn vẫn còn nguyên, từ thiên lệch dữ liệu đến nội dung thiếu căn cứ, và tài liệu lưu ý hệ nhiều agent có thể khuếch đại rủi ro về trách nhiệm giải trình. [6]

Thử nghiệm bốn tuần với tiêu chí dừng rõ ràng

Kế hoạch dưới đây dành cho đơn vị đã có bản mẫu AutoGen, như công ty giao nhận trong tình huống giả định. Tuần thứ nhất dành cho kiểm kê và đóng băng: ghim phiên bản, viết danh sách API phụ thuộc, gỡ các công cụ thực thi mã không cần thiết, chuyển phần còn lại vào container. Tiêu chí hoàn thành là dựng lại được môi trường từ đầu chỉ bằng tệp cấu hình.

Tuần thứ hai xây bộ đánh giá từ vài chục bộ chứng từ đã xử lý, che thông tin khách hàng. Đo tỷ lệ trường trích đúng, số hồ sơ phải sửa tay hoàn toàn và số lượt gọi mô hình mỗi hồ sơ; ngưỡng chấp nhận do trưởng bộ phận chứng từ đặt trước.

Tuần thứ ba chạy song song với cách làm cũ, ghi lại mọi lần agent vượt số vòng công cụ hoặc sinh trường không có trong chứng từ gốc. Tuần thứ tư dựng bản nhỏ trên framework kế nhiệm với cùng bộ đánh giá để ước lượng công sức di trú.

Điều kiện dừng: tỷ lệ trường đúng dưới ngưỡng, hoặc dữ liệu lô này xuất hiện trong bản nháp lô khác; khi đó rà lại thiết kế topic. Nếu cả hai bản đều đạt, quyết định giữ hay chuyển dựa trên công sức di trú đo được ở tuần thứ tư.

Kết luận: một kiến trúc đáng học, một nền tảng cần thận trọng

AutoGen để lại một di sản kỹ thuật rõ ràng: tách runtime khỏi agent, dùng topic và subscription để định tuyến, và cho phép cùng một agent chạy trong một tiến trình hay trên nhiều máy. [2][3] Những ý tưởng này hữu ích cho bất kỳ ai thiết kế hệ đa agent, bất kể dùng framework nào.

Nhưng trạng thái bảo trì thay đổi cách ra quyết định. Với dự án mới, câu hỏi không còn là AutoGen làm được gì mà là ai sẽ duy trì phụ thuộc này sau vài năm. Với hệ thống đang chạy, ưu tiên là ổn định hóa, giảm bề mặt rủi ro và chuẩn bị di trú có đo lường.

Với người xây kho tri thức hay bộ não thứ hai, như hướng mà phamvanthu.com theo đuổi, bài học từ AutoGen nằm ở cách định tuyến và cô lập ngữ cảnh theo hồ sơ. Đây là nhận định của bài viết, không ngụ ý BDSG đang dùng AutoGen.

Nguồn, commit và giới hạn của phương pháp

AutoGen được đưa vào loạt bài từ kho lưu trữ GitHub Trending do cộng đồng duy trì. Dự án xuất hiện một lần, ngày 2026-02-04, ở vị trí 13 trong danh sách ngôn ngữ Python. [10] Kho lưu trữ này chỉ gồm các danh sách Python, Go, JavaScript và Swift, thiếu dữ liệu ngày 2026-09-03 và 2026-10-12, và loạt bài không phải bảng xếp hạng top 100 chính thức của GitHub.

Toàn bộ phân tích dựa trên commit 027ecf0a379bcc1d09956d46d12d44a3ad9cee14, có ngày commit 2026-04-06, được kiểm tra vào ngày 2026-10-12. Các tệp đã đọc gồm README, LICENSE, LICENSE-CODE, SECURITY.md, TRANSPARENCY_FAQS.md, tài liệu khái niệm về kiến trúc runtime và về topic, subscription, tài liệu Magentic-One và trang giới thiệu AutoGen Studio. [1][2][3][4][5][6][7][8][9]

Đây là nghiên cứu tài liệu: bài viết không cài đặt, chạy, đo hiệu năng hay triển khai AutoGen; số liệu đánh giá nhắc đến là do dự án tự công bố; tình huống Việt Nam là giả định. Bài viết không phải công trình khoa học đã qua bình duyệt.

Xem mã nguồn AutoGen trên GitHub

Khám phá nghiên cứu của BDSG Foundation

Trao đổi về ứng dụng công nghệ cho doanh nghiệp