Các giao thức và giao tiếp agent

Kiến trúc hệ thống đã được xây dựng vững chắc. Framework cũng đã được lựa chọn. Nhưng đây chính là điểm mà hầu hết các hệ thống multi-agent thực sự thất bại: Những agent giao tiếp với nhau.

🔄 Tóm tắt nhanh: Trong Bài học 3, bạn đã thấy cách CrewAI, LangGraph và AutoGen xử lý việc phối hợp agent theo những cách khác nhau. Nhưng bất kể framework nào, có một sự thật vẫn luôn đúng — nếu các agent không thể giao tiếp một cách đáng tin cậy, thì mọi thứ khác đều vô nghĩa. Nghiên cứu cho thấy 36,94% các lỗi của hệ thống multi-agent xuất phát từ sự cố phối hợp.

Vấn đề giao tiếp

Đây là điều xảy ra sai sót. Bạn xây dựng 2 agent: Researcher và Writer. Researcher tìm dữ liệu và chuyển cho Writer. Đơn giản phải không?

Ngoại trừ việc Researcher trả về thông tin này vào thứ Hai:

📍 Nơi để dán: Mở ChatGPT (chat.openai.com), Claude (claude.ai) hoặc Gemini (gemini.google.com) và bắt đầu một cuộc trò chuyện mới.

📋 Cách sao chép prompt này: Nhấp vào bất kỳ đâu bên trong khối màu xám, nhấn Cmd+A rồi Cmd+C (Mac) hoặc Ctrl+A rồi Ctrl+C (Windows). Hoặc sử dụng biểu tượng sao chép xuất hiện.

Tìm thấy 3 đối thủ cạnh tranh. Acme có giá 50 USD/tháng, Beta có giá 75 USD/tháng, Gamma có giá 30 USD/tháng.

✏️ Cách điền thông tin chi tiết của bạn: Thay thế mỗi dấu ngoặc vuông [] và trình giữ chỗ trong ngoặc bằng thông tin cụ thể từ tình huống thực tế của bạn. Thông tin đầu vào mơ hồ sẽ tạo ra kết quả mơ hồ — hãy cụ thể.

👀 Những gì bạn sẽ thấy: Trong vòng vài giây, AI sẽ trả về một phản hồi có cấu trúc dựa trên prompt ở trên. Hãy đọc kỹ và coi đó là bản nháp, không phải là câu trả lời cuối cùng.

📌 Nên làm gì với kết quả: Lưu phản hồi vào file Notes. Chọn gợi ý có tác động cao nhất và thực hiện nó trong tuần này — đừng cố gắng làm tất cả mọi thứ cùng một lúc.

⚠️ Nếu thấy không ổn: Nếu các đề xuất có vẻ chung chung, hãy dán nội dung tiếp theo này: "Hãy cụ thể hơn với ngữ cảnh thực tế của tôi. Bỏ những lời khuyên chung chung đi." Nếu bỏ qua các chi tiết quan trọng bạn đã cung cấp, hãy hỏi: "Bạn đã bỏ sót [X] trong ngữ cảnh của tôi — hãy thực hiện lại với đó là ràng buộc chính."

Và đây là vào thứ Ba — cùng một truy vấn, cùng một prompt:

"Phân tích đối thủ cạnh tranh đã hoàn tất. Xem bên dưới:
- Acme Inc: 50 USD/tháng (gói cơ bản)
- Beta Corp: 75 USD/tháng (gói chuyên nghiệp)
- Gamma Ltd: Có gói miễn phí, gói trả phí bắt đầu từ 30 USD"

Cùng một thông tin. Cấu trúc khác nhau. Writer phải xử lý cả hai định dạng — và mọi biến thể khác mà Researcher có thể tạo ra. Điều đó rất dễ bị lỗi. Và nó càng trở nên tồi tệ hơn với mỗi agent bạn thêm vào chuỗi.

Sơ đồ cấu trúc: Cách khắc phục

Giải pháp rất đơn giản: Xác định chính xác những gì agent gửi và nhận.

{
  "task": "competitor_analysis",
  "competitors": [
    {
      "name": "Acme Inc",
      "monthly_price": 50.00,
      "tier": "basic",
      "key_features": ["feature_a", "feature_b"]
    }
  ],
  "metadata": {
    "sources_checked": 5,
    "confidence": 0.9,
    "timestamp": "2026-03-13T10:00:00Z"
  }
}

Giờ đây, Writer agent biết chính xác nơi tìm thấy từng mẩu dữ liệu. Không cần phân tích cú pháp. Không cần đoán mò. Không còn kiểu "50 USD hay 50 USD/tháng?"

Cách thực thi schema:

  1. Xác định schema trong prompt hệ thống của agent. Nói với agent: "Trả về kết quả của bạn dưới dạng đối tượng JSON với các trường chính xác này."
  2. Thêm bước xác thực. Trước khi chuyển kết quả cho agent tiếp theo, hãy kiểm tra xem JSON có hợp lệ và chứa các trường bắt buộc hay không.
  3. Hãy thêm ví dụ. Cho agent thấy kết quả chính xác trông như thế nào — các ví dụ đơn giản giúp giảm đáng kể lỗi định dạng.

Kiểm tra nhanh: Research Agent của bạn trả về ngôn ngữ tự nhiên 20% thời gian thay vì schema JSON bạn đã chỉ định. Cách khắc phục nhanh nhất là gì?

Câu trả lời: Thêm một vài ví dụ về đầu ra JSON chính xác vào prompt hệ thống của agent và thêm một lệnh rõ ràng: "Bạn PHẢI trả về JSON hợp lệ khớp với schema này. KHÔNG được bao gồm bất kỳ văn bản nào bên ngoài đối tượng JSON." Nếu điều đó vẫn chưa đủ, hãy thêm một trình xác thực nhẹ giữa các agent để bắt lỗi định dạng và gửi lại đầu ra để thử lại.

MCP: Cách AI agent giao tiếp với các công cụ

Model Context Protocol - MCP là tiêu chuẩn của Anthropic để kết nối các AI agent với những tài nguyên bên ngoài — cơ sở dữ liệu, API, file, dịch vụ web. Hãy coi nó như một bộ chuyển đổi phổ quát.

Trước MCP, mọi sự tích hợp công cụ đều được tùy chỉnh. Muốn agent của bạn truy vấn cơ sở dữ liệu? Viết một hàm tùy chỉnh. Bạn muốn nó tìm kiếm trên web không? Cần một hàm tùy chỉnh khác. Muốn nó đọc file? Một hàm khác nữa. Mọi sự tích hợp đều được thiết kế riêng.

MCP chuẩn hóa điều này. Nhà cung cấp công cụ sẽ cung cấp một MCP server. Bất kỳ agent nào tương thích với MCP đều có thể phát hiện và sử dụng công cụ đó — bất kể đó là Claude, GPT, Gemini hay một mô hình mã nguồn mở.

Tại sao điều này quan trọng đối với các hệ thống multi-agent:

  • Các agent có thể khám phá những công cụ trong runtime thay vì phải hardcode các công cụ
  • Nhiều agent có thể chia sẻ cùng một máy chủ công cụ
  • Việc chuyển đổi nhà cung cấp AI không làm gián đoạn quá trình tích hợp công cụ của bạn
  • 97 triệu lượt tải xuống SDK MCP hàng tháng — đó là tiêu chuẩn

A2A: Cách các agent giao tiếp với nhau

Giao thức agent-to-agent của Google giải quyết một vấn đề khác: Làm thế nào các agent tìm thấy và cộng tác với những agent khác?

MCP = agent ↔ công cụ. A2A = agent ↔ agent.

Với A2A, các agent có thể:

  • Khám phá các agent khác và khả năng của chúng
  • Thương lượng ai xử lý phần nào của một nhiệm vụ
  • Chuyển giao công việc với ngữ cảnh có cấu trúc
  • Báo cáo trạng thái và kết quả

Cả hai giao thức hiện đều được quản lý bởi Agentic AI Foundation của Linux Foundation, được đồng sáng lập bởi OpenAI, Anthropic, Google, Microsoft và AWS. Chúng không cạnh tranh, mà là các lớp bổ sung cho nhau.

Kiểm tra nhanh: Hệ thống multi-agent của bạn cần (1) truy vấn cơ sở dữ liệu Postgres và (2) ủy quyền một nhiệm vụ phụ cho một agent chuyên trách xem xét pháp lý. Giao thức nào xử lý từng việc?

Đáp án: MCP xử lý việc truy vấn cơ sở dữ liệu — đó là kết nối giữa agent và công cụ. A2A xử lý việc ủy ​​quyền cho agent pháp lý — đó là giao tiếp giữa các agent. Bạn sẽ sử dụng cả hai giao thức trong cùng một hệ thống.

Các mô hình giao tiếp hiệu quả

Mô hình 1: Hợp đồng rõ ràng giữa các agent

Xác định những gì mỗi agent gửi và nhận trước khi bạn xây dựng bất cứ điều gì. Hãy lập tài liệu như một hợp đồng API:

Research Agent
  INPUT:  { query: string, max_sources: int }
  OUTPUT: { findings: Finding[], confidence: float }

Writer Agent
  INPUT:  { findings: Finding[], style: string, word_count: int }
  OUTPUT: { draft: string, sections: Section[] }

Khi cả hai agent đều biết hợp đồng, việc giao tiếp sẽ đáng tin cậy.

Mô hình 2: Đối tượng trạng thái được chia sẻ

Thay vì các agent truyền tin nhắn cho nhau, tất cả đều đọc và ghi vào một đối tượng trạng thái được chia sẻ. LangGraph thực hiện điều này theo mặc định — mỗi agent đều nhận được trạng thái hiện tại và có thể cập nhật các trường cụ thể.

state = {
    "research": None,      # Research agent viết ở đây
    "analysis": None,      # Analyst đọc các nghiên cứu, viết tại đây
    "draft": None,          # Writer đọc bài phân tích, viết ở đây
    "review_status": None   # Editor đọc bản nháp, viết tại đây
}

Lợi ích: Không có sự mơ hồ trong việc truyền thông điệp.

Nhược điểm: Xung đột trạng thái nếu hai agent cố gắng cập nhật cùng một trường.

Mô hình 3: Hàng đợi tin nhắn

Đối với các hệ thống bất đồng bộ, các agent xuất bản tin nhắn vào một hàng đợi. Các agent khác đăng ký những loại tin nhắn có liên quan. Điều này tách rời các agent — Researcher không cần biết Writer tồn tại. Họ chỉ xuất bản kết quả nghiên cứu. Bất kỳ agent nào đăng ký sự kiện "hoàn thành nghiên cứu" sẽ nhận được nó.

Mô hình này có khả năng mở rộng tốt nhưng làm tăng độ phức tạp của cơ sở hạ tầng. Chỉ sử dụng nó khi bạn thực sự cần xử lý bất đồng bộ.

Các mô hình giao tiếp phản tác dụng

Mô hình phản tác dụngChuyện gì xảy raSửa lỗi
Không có schemaĐịnh dạng có thể thay đổi giữa các lần chạyXác định schema JSON trong prompt hệ thống
Tin tưởng mà không cần xác minhLỗi đầu ra lan truyền xuống các khâu tiếp theoXác thực giữa mỗi lần chuyển giao giữa các agent
Chuyển giao ngôn ngữ tự nhiênLỗi phân tích cú pháp, mất dữ liệuSử dụng dữ liệu có cấu trúc, chứ không phải văn xuôi
Các bản ghi ngữ cảnh khổng lồAgent tiếp theo bị choáng ngợpChỉ chuyển những thông tin mà agent tiếp theo cần
Không có thông báo lỗi nàoThất bại diễn ra âm thầmBao gồm mã trạng thái và trường lỗi

Lỗi "các bản ghi ngữ cảnh khổng lồ" đặc biệt phổ biến. Khi Researcher chuyển toàn bộ quá trình suy nghĩ, nguồn tài liệu thô và phân tích của mình cho Writer, ngữ cảnh của Writer sẽ bị phình to với những thông tin không cần thiết. Hãy chuyển kết quả, chứ không phải quy trình.

Kiểm tra nhanh: Agent A đưa ra một bản phân tích chi tiết dài 2.000 từ và chuyển toàn bộ cho Agent B, người chỉ cần ba kết luận chính. Vấn đề nằm ở đâu và làm thế nào để khắc phục?

Đáp án: Đây là kiểu mô hình phản tác dụng "các bản ghi ngữ cảnh khổng lồ". Ngữ cảnh của Agent B chứa đầy các chi tiết không liên quan, làm giảm hiệu suất của nó. Cách khắc phục: hoặc yêu cầu Agent A thêm một trường tóm tắt có cấu trúc chỉ với những kết luận, hoặc thêm một agent nén giữa A và B để chỉ trích xuất những gì B cần.

Những điểm chính cần ghi nhớ

  • 36,94% lỗi multi-agent đến từ sự cố giao tiếp — đây là điều quan trọng nhất cần làm đúng
  • Các schema JSON có cấu trúc giữa những agent loại bỏ sự mơ hồ về định dạng và ngăn ngừa lỗi dây chuyền
  • MCP chuẩn hóa kết nối giữa agent và công cụ (hơn 97 triệu lượt tải xuống hàng tháng, tất cả các nhà cung cấp lớn)
  • A2A chuẩn hóa việc khám phá và ủy quyền giữa các agent — bổ sung cho MCP
  • Xác định hợp đồng đầu vào/đầu ra cho mỗi agent trước khi xây dựng
  • Xác thực đầu ra giữa các lần chuyển giao agent — không tin tưởng, hãy xác minh
  • Chỉ truyền những gì agent tiếp theo cần — không đưa ra tất cả ngữ cảnh
  • Câu 1:

    Một agent gửi đầu ra này: 'Phân tích đã hoàn tất. Doanh thu tăng 15% và chi phí giảm khoảng 8%. Tôi khuyên bạn nên đầu tư nhiều hơn vào tiếp thị'. Nên cấu trúc lại như thế nào cho agent tiếp theo?

    GIẢI THÍCH:

    JSON có cấu trúc với các trường được chỉ định rõ ràng có nghĩa là agent tiếp theo không cần phải phân tích ngôn ngữ tự nhiên để tìm ra những con số. Nó có thể truy cập trực tiếp vào revenue_change và cost_change dưới dạng số, so sánh chúng theo chương trình và thực hiện hành động dựa trên khuyến nghị. Trường confidence bổ sung siêu dữ liệu hữu ích. Điều này loại bỏ sự mơ hồ trong phân tích cú pháp gây ra các lỗi dây chuyền.

  • Câu 2:

    Sự khác biệt giữa giao thức MCP và A2A là gì?

    GIẢI THÍCH:

    MCP và A2A giải quyết các vấn đề khác nhau. MCP = cách một agent kết nối với các công cụ, cơ sở dữ liệu và API (agent-tài nguyên). A2A = cách các agent tìm thấy nhau, thương lượng khả năng và chuyển giao nhiệm vụ (agent-với-agent). Chúng bổ sung cho nhau — một hệ thống multi-agent được thiết kế tốt sẽ sử dụng cả hai. MCP hiện được hỗ trợ bởi tất cả các nhà cung cấp lớn, không chỉ Anthropic.

  • Câu 3:

    Tại sao hệ thống multi-agent bị lỗi khi các agent giao tiếp bằng ngôn ngữ tự nhiên không có cấu trúc?

    GIẢI THÍCH:

    Vấn đề cốt lõi là tính nhất quán. Agent A có thể trả về {"price": "$50"} trong một lần chạy và {"cost": 50, "currency": "USD"} trong một lần khác. Agent B, vốn mong đợi một định dạng cụ thể, sẽ bị lỗi. Lược đồ cấu trúc với tên trường, kiểu dữ liệu và quy tắc xác thực rõ ràng sẽ loại bỏ tính ngẫu nhiên này. Đó là lý do tại sao nghiên cứu cho thấy các lỗi phối hợp chiếm 36,94% tổng số lỗi của hệ thống multi-agent.

Thứ Năm, 21/05/2026 15:26
51 👨 13
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
    ❖ AI Agents