Kiến trúc một agent đơn chạm trần. Agent viết code thì viết được —nhưng không thể tự xem lại đầu ra của mình. Agent thanh toán thì giải quyết được —nhưng không nói chuyện được với bộ phận vận chuyển. Cùng một góc nhìn, cùng những điểm mù.
Bạn chất thêm càng nhiều công cụ. Độ trễ phình to. Cửa sổ ngữ cảnh tràn. Cái trần này mang tính cấu trúc, không phải thứ đào sâu prompt là qua được.
Giải pháp: agent chuyên biệt —chuyên môn hẹp, thực thi song song, giao thức rõ ràng.
Bạn sẽ ra về với ba mẫu điều phối (Supervisor-Worker, Peer-to-Peer, Hierarchical) kèm code Python, ánh xạ vai trò-model cắt giảm 50–70% chi phí, và topo trace biến danh sách span phẳng thành bản đồ hệ thống.
Khi nào một agent đơn phá sản?
Trần phức tạp
Agent đơn thất bại theo cách dự đoán được trong bốn tình huống:
Chuyên môn đa lĩnh vực. Một agent bị yêu cầu đồng thời là chuyên gia code, người xem xét pháp lý và nhà phân tích tài chính. Prompt phình to —system prompt phải lớn lên để chứa cả ba lĩnh vực. Nhầm lẫn vai trò —model pha trộn giọng điệu và thứ tự ưu tiên. Một bản xem xét pháp lý viết bằng tiếng lóng kỹ thuật suồng sã. Một phân tích tài chính bỏ qua kiểm tra tuân thủ vì persona “chuyên gia code” lấn át.
Thực thi song song. Ba tác vụ con độc lập có thể chạy đồng thời —nghiên cứu giá đối thủ, phân tích đánh giá người dùng, tóm tắt thông số sản phẩm —bị một agent đơn xử lý tuần tự. Tổng độ trễ bằng tổng của cả ba. Với ba agent chuyên biệt chạy song song, độ trễ bằng giá trị lớn nhất trong ba.
Tự phê bình. Một agent đơn tạo đầu ra rồi tự đánh giá đầu ra của mình. Cùng quy trình nhận thức đã tạo ra câu trả lời được yêu cầu tìm lỗi của chính nó. Nó không làm được. Xem xét ngang hàng —một agent riêng với prompt khác, model khác, góc nhìn khác— bắt được lỗi mà agent tạo sinh không thấy.
Bùng nổ phạm vi công cụ. Mười lăm công cụ thì ổn. Hai mươi lăm công cụ thì độ chính xác chọn công cụ của model giảm rõ rệt —chọn nhầm công cụ thường hơn, bỏ lỡ công cụ đúng, hoặc gọi công cụ sai thứ tự. Agent chuyên biệt mỗi cái 5–8 công cụ vượt trội một agent đa năng với 25 công cụ.
Đa agent không phải lúc nào cũng là đáp án
Hệ thống đa agent thêm chi phí thực: độ trễ giao tiếp giữa agent, chi phí token cho tin nhắn giữa agent, rủi ro nhất quán khi hai agent đưa câu trả lời mâu thuẫn, và độ phức tạp gỡ lỗi khi bạn không biết agent nào trong chuỗi 5 agent tạo đầu ra sai. Nếu tác vụ của bạn xử lý được bằng một agent được prompt tốt với 5–10 công cụ được giới hạn rõ, đừng đưa phức tạp đa agent vào. Bắt đầu một agent. Chỉ chuyển đa agent khi một agent thất bại rõ ràng —nhầm công cụ, bất nhất vai trò, hoặc độ trễ tuần tự mà thực thi song song loại bỏ được.
Hướng dẫn kiến trúc một agent của chúng tôi bao quát nền tảng. Bài viết này giả định bạn đã đẩy thiết kế một agent đến giới hạn và giờ đang chạm trần.
Ba mẫu điều phối
Mẫu 1: Supervisor-Worker
Một agent giám sát điều phối. Nó chia nhỏ tác vụ, giao tác vụ con cho worker, tổng hợp kết quả và chạy cổng chất lượng trước khi trả đầu ra. Worker chuyên biệt —mỗi cái có system prompt, bộ công cụ và model riêng. Worker không nói chuyện với nhau. Chúng chỉ giao tiếp với supervisor.
class SupervisorAgent:
def __init__(self, model: str, workers: list[WorkerAgent]):
self.model = model
self.workers = {w.name: w for w in workers}
async def execute(self, task: str) -> dict:
plan = await self._decompose(task)
results = {}
for subtask in plan["subtasks"]:
worker = self.workers[subtask["assigned_to"]]
results[subtask["id"]] = await worker.execute(subtask)
synthesis = await self._synthesize(task, results)
quality = await self._quality_gate(synthesis)
if quality["passed"]:
return synthesis
else:
return await self._retry_or_escalate(task, quality["issues"])
Phù hợp nhất cho: tác vụ phân rã sạch thành tác vụ con độc lập, cần kiểm soát chất lượng tập trung và có cấu trúc đội ngũ tương đối cố định. Đánh đổi: supervisor trở thành nút thắt cổ chai và điểm lỗi đơn. Không phù hợp khi worker cần thương lượng động với nhau.
Mẫu 2: Peer-to-Peer
Không có phân cấp. Mọi agent đều ngang hàng. Bất kỳ agent nào cũng khởi xướng giao tiếp với bất kỳ agent nào qua bus thông điệp dùng chung. Agent khám phá năng lực của nhau và thương lượng bàn giao tác vụ một cách động.
class PeerAgent:
def __init__(self, name: str, role: str, model: str, message_bus: MessageBus):
self.name = name
self.role = role
self.model = model
self.bus = message_bus
self.bus.subscribe(self.name, self._handle_message)
async def _handle_message(self, msg: Message):
if msg.type == "request":
result = await self._execute_task(msg.content)
await self.bus.send(Message(
to=msg.from_agent,
type="response",
content=result,
correlation_id=msg.correlation_id
))
Phù hợp nhất cho: thương lượng động —agent xem xét code phát hiện bug và trực tiếp nhắn cho agent viết code kèm bản sửa, không supervisor trong vòng lặp. Không nút thắt. Quy trình linh hoạt. Đánh đổi: gỡ lỗi khó hơn —đồ thị hội thoại có thể phức tạp, và vòng lặp thông điệp vô hạn hoặc đầu ra mâu thuẫn giữa ngang hàng đòi hỏi cơ chế phát hiện vòng lặp và giải quyết xung đột tường minh.
Mẫu 3: Hierarchical
Leo thang nhiều tầng. Agent tuyến đầu xử lý ca thường. Ca phức tạp hoặc bất thường leo lên agent cấp cao. Ca khó nhất chạm tới agent chính hoặc con người. Chất lượng và chi phí model tăng theo tầng —Tier 1 dùng model rẻ, Tier 2 dùng tầng giữa, Tier 3 dùng frontier.
class TieredAgentSystem:
def __init__(self, tiers: list[AgentTier]):
self.tiers = sorted(tiers, key=lambda t: t.level)
async def execute(self, task: str) -> dict:
for tier in self.tiers:
result = await tier.agent.execute(task)
if result["confidence"] >= tier.confidence_threshold:
return result
return await self._escalate_to_human(task)
Phù hợp nhất cho: quy trình hỗ trợ có tầng phức tạp tự nhiên, kiểm duyệt nội dung với tự động lọc —xem xét cấp cao —leo lên con người, và bất kỳ lĩnh vực nào đa số yêu cầu đơn giản còn thiểu số cần chuyên môn sâu. Đánh đổi: logic leo thang cần tinh chỉnh từ dữ liệu sản xuất —bạn cần vòng phản hồi để hiệu chỉnh confidence threshold mỗi tầng.
Giao thức giao tiếp giữa agent
Function calling làm giao thức liên agent
Cách đơn giản nhất: Agent A gọi công cụ send_message_to_agent_b. Công cụ được định nghĩa trong schema function calling của Agent A. Tương thích hạ tầng hiện có. Không giao thức mới phải học. Giới hạn: chặn đồng bộ. Mỗi tin nhắn là một vòng khứ hồi gọi công cụ đầy đủ. Trong hội thoại đa lượt giữa agent, độ trễ tích lũy tuyến tính. Khi bản thân định nghĩa công cụ cần trải nhiều nhà cung cấp với schema không nhất quán, hướng dẫn function calling và dùng công cụ của chúng tôi bao quát lớp chuẩn hóa khiến lời gọi công cụ liên agent di động được giữa các model.
MCP cho giao tiếp agent
Mỗi agent phơi năng lực của mình thành một MCP server. Các agent khác, đóng vai MCP client, khám phá và gọi những năng lực đó. Hướng dẫn MCP của chúng tôi bao quát nền tảng giao thức. Trong hệ thống đa agent, MCP cung cấp khám phá năng lực chuẩn hóa —agent không cần biết trước các agent khác làm được gì. Nó truy vấn hệ sinh thái MCP và khám phá năng lực một cách động.
Google A2A
Được xây chuyên biệt cho giao tiếp agent-đến-agent (đặc tả A2A). Agent Cards cho khám phá năng lực. Vòng đời Task có cấu trúc: submitted —working —completed hoặc failed. Cập nhật streaming trong lúc thực thi tác vụ. Trao đổi nội dung đa phương thức. Xuyên framework —agent xây bằng framework khác có thể tương tác nếu chúng nói A2A. Phù hợp nhất cho hệ thống đa agent không đồng nhất nơi các đội dùng stack khác nhau.
Bus thông điệp tùy chỉnh
Redis Pub/Sub hoặc NATS với schema thông điệp có cấu trúc. Kiểm soát tối đa định tuyến, lưu trữ bền, retry và khả năng quan sát. Công sức triển khai tối đa. Schema: {agent_id, correlation_id, message_type, payload, timestamp}. Chọn cái này khi mẫu giao tiếp liên agent của bạn độc đáo đến mức không giao thức chuẩn nào khớp —hoặc khi bạn cần đảm bảo (giao đúng một lần, giao theo thứ tự) mà giao thức bậc cao không cung cấp.
Ánh xạ vai trò-model
Cái bẫy chi phí lớn nhất trong hệ thống đa agent: mọi agent đều dùng model frontier. Agent phân loại của bạn chỉ định tuyến “thanh toán” so với “hỗ trợ kỹ thuật” không cần Claude Opus giá $15/M token đầu vào. Nó cần GPT-4o Mini giá $0.15 —và độ chính xác phân loại y hệt.
| Vai trò agent | Model đề xuất | Cost/1M Input | Lý do |
|---|---|---|---|
| Phân loại/Định tuyến | DeepSeek V3.2 / GPT-4o Mini | $0.14-0.15 | Phân loại đơn giản. Model rẻ có hiệu năng tương đương model frontier. |
| Hỏi đáp cơ bản / FAQ | GPT-4o Mini / Claude Haiku | $0.15-0.25 | Phản hồi dựa trên retrieval. Năng lực tầng giữa, giá sàn. |
| Tạo nội dung | GPT-4o / Claude Sonnet 4 | $2.50-3.00 | Giọng điệu, cấu trúc, sáng tạo đều quan trọng. Đáng giá phần phí tầng giữa. |
| Tạo code | Claude Sonnet 4 / DeepSeek V4 Pro | $0.42-3.00 | Dữ liệu SWE-bench thúc đẩy lựa chọn này. Hiệu năng lập trình trên mỗi đô la của DeepSeek vượt trội. |
| Xem xét code / Cổng chất lượng | Claude Opus 4 / GPT-5.5 | $10-15.00 | Tìm bug đòi hỏi suy luận frontier. Một bug sót lại tốn kém hơn phần phí model. |
| Tổng hợp cuối | Claude Opus 4 | $15.00 | Đầu ra mà người dùng nhìn thấy. Đáng trả phí cao cho giọng điệu, độ chính xác và khả năng làm theo chỉ dẫn. |
Theo dõi chi phí từng agent —gen_ai.cost.total trên mỗi span LLM với agent_id là thuộc tính span— cho bạn báo cáo chi phí từng agent. Bạn sẽ nhanh chóng nhận ra agent tiêu thụ 40% ngân sách đa agent. Hạ nó từ Opus xuống Sonnet và xem chất lượng đầu ra có thực sự đổi không. Thường là không. Ngoài chọn model từng agent, hướng dẫn tối ưu chi phí LLM API 12 cách của chúng tôi bao quát prompt caching, xử lý hàng loạt và mẫu semantic caching cộng dồn khắp đội agent của bạn.
Gỡ lỗi và giám sát hệ thống đa agent
Vấn đề topo trace
Một yêu cầu người dùng có thể kích hoạt: Agent A (phân loại) —Agent B (nghiên cứu) + Agent C (code) song song —Agent A (tổng hợp) —sáu lần gọi LLM, mười lần gọi công cụ, ba tin nhắn liên agent. Một danh sách span phẳng 19 mục không thể gỡ lỗi. Bạn không thấy được đồ thị thực thi.
Giải pháp: kind span AGENT OpenInference với mô hình hóa phân cấp. Span gốc: phiên người dùng. Cấp 1: quyết định điều phối. Cấp 2: thực thi từng agent. Cấp 3: lời gọi công cụ từng agent. Trình xem trace của bạn vẽ đồ thị thực thi, không phải danh sách phẳng. Khi lời gọi công cụ của Agent C lỗi, bạn thấy nó trong ngữ cảnh —agent nào, bước nào, điều gì xảy ra trước và sau.
Xem hướng dẫn khả năng quan sát của chúng tôi cho thiết lập OpenTelemetry đầy đủ.
Chế độ lỗi đa agent thường gặp
Vòng lặp thông điệp vô hạn. Agent A —Agent B —Agent A —Agent B. Phòng ngừa: giới hạn độ sâu hội thoại và phát hiện vòng lặp ở tầng bus thông điệp. Ở tầng API, giới hạn tốc độ từng agent thêm trần ngân sách —khi agent vượt hạn mức yêu cầu, vòng lặp dừng bất kể logic bus thông điệp cho phép gì.
Đầu ra mâu thuẫn. Agent A nói hoàn tiền. Agent B nói không hoàn tiền. Không có cơ chế giải quyết. Phòng ngừa: mẫu supervisor với giải quyết xung đột tường minh, hoặc cơ chế bỏ phiếu giữa các agent.
Rò rỉ quyền công cụ. Agent viết code vô tình có quyền truy cập công cụ hoàn tiền của agent thanh toán qua registry công cụ cấu hình sai. Phòng ngừa: danh sách cho phép công cụ từng agent. Danh tính agent trong mọi vết kiểm toán công cụ.
Agent lỗi thầm lặng. Một agent ném lỗi chưa xử lý. Điều phối không nhận ra. Người dùng nhận phản hồi một phần thiếu thông tin quan trọng. Phòng ngừa: báo lỗi có cấu trúc trong giao thức liên agent. Kiểm tra sức khỏe tầng điều phối trước khi tổng hợp.
Câu hỏi thường gặp
Khi nào KHÔNG nên dùng kiến trúc đa agent?
Nếu một agent được prompt tốt với 10 công cụ định nghĩa rõ trở xuống xử lý được tác vụ, đừng đưa phức tạp đa agent vào. Chi phí giao tiếp, khó gỡ lỗi và giá tin nhắn liên agent vượt xa lợi ích. Một agent trước. Đa agent chỉ khi một agent thất bại rõ ràng —nhầm công cụ, bất nhất vai trò, hoặc độ trễ tuần tự mà thực thi song song sửa được.
Hệ thống nên bắt đầu với bao nhiêu agent?
Hai đến ba, bao phủ vai trò khác biệt rõ. Đừng bắt đầu với sáu. Độ phức tạp phối hợp tăng phi tuyến —hệ 6 agent không khó gấp 3 hệ 2 agent. Nó gần 9 lần. Chỉ thêm agent khi một agent hiện có thất bại liên tục ở một tác vụ con cụ thể đòi hỏi chuyên môn riêng.
Nên bắt đầu với mẫu điều phối nào?
Supervisor-Worker. Kiểm soát tập trung, quản lý trạng thái rõ, gỡ lỗi đơn giản nhất. Nâng lên Peer-to-Peer chỉ khi worker thực sự cần thương lượng động với nhau. Nâng lên Hierarchical chỉ khi bạn có tầng phức tạp rõ với confidence threshold đo được. Bắt đầu đơn giản. Chỉ thêm phức tạp khi dữ liệu chứng minh bạn cần.
Xử lý agent liên tục mắc lỗi thế nào?
Đừng bắt đầu bằng việc sửa prompt của nó. Đầu tiên: phân tích trace. Tìm mẫu lỗi —đầu vào nào kích hoạt lỗi? Bước nào trong thực thi của nó đi sai? Thứ hai: thu hẹp phạm vi agent. Nó có thể đang xử lý quá nhiều loại tác vụ. Thứ ba: thêm agent cổng chất lượng —người xem xét kiểm tra đầu ra trước khi chúng đến người dùng. Thứ tư: nếu agent thiếu kiến thức lĩnh vực, thêm RAG —không fine-tuning, không thêm prompt.
Chi phí vận hành thực của hệ 5 agent chạy trên 3 tầng model là bao nhiêu?
Chi phí vận hành không nằm ở token —mà ở sự phân mảnh. Mỗi tầng agent có khả năng chạm nhà cung cấp khác nhau. Nghĩa là API key riêng, theo dõi giới hạn tốc độ riêng, dashboard chi phí riêng. Khi agent phân loại của bạn (DeepSeek Flash $0.14/M) và người xem code (Claude Opus $15/M) chạy qua nhà cung cấp khác nhau, bạn dành nhiều thời gian quản lý thông tin đăng nhập hơn tối ưu hành vi agent. Giải pháp mang tính kiến trúc: một endpoint cho mọi agent bất kể model. Quy chiếu chi phí từng agent thành thuộc tính span, không phải bài tập bảng tính xuyên nhà cung cấp. Cho khả năng quan sát và tinh chỉnh độ trễ giúp cách tiếp cận một endpoint này sẵn sàng sản xuất, hướng dẫn tối ưu sản xuất của TokSpan bao quát connection pooling, hàng đợi yêu cầu và cấu hình timeout từng model khắp đội agent của bạn.
Kiến trúc đa agent không tinh vi hơn —nó là phản ứng trước các chế độ lỗi cụ thể. Khi một agent của bạn nhầm công cụ giữa các lĩnh vực, khi thực thi tuần tự khiến độ trễ không thể chấp nhận, khi tự xem xét không bắt được lỗi của chính nó —đó là những tín hiệu. Không phải trước đó.
Bắt đầu với Supervisor-Worker. Ánh xạ vai trò-model không nương tay —agent phân loại của bạn không cần Opus. Cài agent_id vào span của mọi agent. Theo dõi báo cáo chi phí từng agent một tuần. Bạn sẽ tìm ra ít nhất một agent đang dùng model thừa và có thể hạ tầng mà không ảnh hưởng chất lượng.
Mẫu điều phối ít quan trọng hơn kỷ luật biết khi nào không nên thêm một agent nữa.
Báo cáo chi phí đội agent của bạn không nên đòi ghép nối các bản xuất CSV từ bốn dashboard nhà cung cấp khác nhau. Triển khai agent của bạn trên TokSpan —quy chiếu chi phí từng agent, giới hạn tốc độ tập trung, và mọi model agent của bạn cần đều sau một endpoint.