Skip to content
Lesson 10/11 · AI Agent cho người mới bắt đầu (Microsoft)

Dùng các giao thức agentic (MCP, A2A và NLWeb)

Model Context Protocol giúp agent truy cập tool và dữ liệu, A2A giúp các agent giao tiếp với nhau, NLWeb đưa giao diện ngôn ngữ tự nhiên vào website.

This content is currently available in Vietnamese only.

Beginner@shine190413 min read

Khi việc dùng AI agent tăng lên, nhu cầu về các giao thức đảm bảo tính chuẩn hoá, bảo mật và hỗ trợ đổi mới mở cũng tăng theo. Trong bài này, chúng ta sẽ tìm hiểu 3 giao thức hướng tới nhu cầu đó: Model Context Protocol (MCP), Agent to Agent (A2A) và Natural Language Web (NLWeb).

Video của bài: Agentic Protocols.

Giới thiệu

Trong bài này, chúng ta sẽ tìm hiểu:

  • Cách MCP cho phép AI agent truy cập tool và dữ liệu bên ngoài để hoàn thành tác vụ của người dùng.
  • Cách A2A cho phép giao tiếp và cộng tác giữa các AI agent khác nhau.
  • Cách NLWeb đưa giao diện ngôn ngữ tự nhiên vào bất kỳ website nào, giúp AI agent khám phá và tương tác với nội dung.

Mục tiêu học tập

  • Xác định mục đích cốt lõi và lợi ích của MCP, A2A và NLWeb trong bối cảnh AI agent.
  • Giải thích cách mỗi giao thức hỗ trợ giao tiếp và tương tác giữa LLM, tool và các agent khác.
  • Nhận ra vai trò riêng của từng giao thức khi xây hệ thống agentic phức tạp.

Model Context Protocol

Model Context Protocol (MCP) là một chuẩn mở cung cấp cách chuẩn hoá để ứng dụng cung cấp ngữ cảnh và tool cho LLM. Nhờ đó có một "bộ chuyển đổi đa năng" tới các nguồn dữ liệu và tool khác nhau mà AI agent có thể kết nối theo cách nhất quán.

Chúng ta hãy xem các thành phần của MCP, lợi ích so với dùng API trực tiếp và ví dụ về cách AI agent có thể dùng một MCP server.

Các thành phần cốt lõi của MCP

MCP hoạt động theo kiến trúc client-server với các thành phần cốt lõi:

  • Host là các ứng dụng LLM (ví dụ một trình soạn code như VSCode) khởi tạo kết nối tới MCP server.
  • Client là các thành phần trong ứng dụng host, duy trì kết nối một-một với server.
  • Server là các chương trình gọn nhẹ cung cấp những khả năng (capability) cụ thể.

Giao thức có ba primitive cốt lõi, là các khả năng của một MCP server:

  • Tools: các hành động hoặc hàm riêng lẻ mà AI agent có thể gọi để thực hiện hành động. Ví dụ, một dịch vụ thời tiết có thể cung cấp tool "get weather", hoặc một server thương mại điện tử có thể cung cấp tool "purchase product". MCP server công bố tên, mô tả và schema đầu vào/đầu ra của từng tool trong danh sách khả năng của nó.
  • Resources: các mục dữ liệu hoặc tài liệu chỉ đọc mà MCP server cung cấp, và client có thể lấy về khi cần. Ví dụ nội dung file, bản ghi cơ sở dữ liệu hay file log. Resource có thể là văn bản (như code hoặc JSON) hoặc nhị phân (như ảnh hoặc PDF).
  • Prompts: các template định sẵn cung cấp prompt gợi ý, cho phép các quy trình phức tạp hơn.

Lợi ích của MCP

MCP mang lại những lợi thế đáng kể cho AI agent:

  • Khám phá tool linh hoạt: agent có thể nhận động danh sách tool có sẵn từ server cùng mô tả việc chúng làm. Điều này trái ngược với API truyền thống, thường cần code tĩnh cho từng tích hợp, nghĩa là mỗi thay đổi API đòi hỏi cập nhật code. MCP mang lại cách tiếp cận "tích hợp một lần", giúp dễ thích nghi hơn.
  • Khả năng tương tác giữa các LLM: MCP hoạt động với nhiều LLM khác nhau, cho phép linh hoạt đổi model lõi để đánh giá tìm hiệu năng tốt hơn.
  • Bảo mật chuẩn hoá: MCP có một phương thức xác thực chuẩn, cải thiện khả năng mở rộng khi thêm quyền truy cập vào các MCP server khác. Cách này đơn giản hơn so với quản lý nhiều loại key và kiểu xác thực khác nhau cho các API truyền thống.

Ví dụ MCP

Sơ đồ MCP

Hãy tưởng tượng người dùng muốn đặt vé máy bay bằng một trợ lý AI chạy MCP.

  1. Kết nối: trợ lý AI (MCP client) kết nối tới một MCP server do hãng hàng không cung cấp.
  2. Khám phá tool: client hỏi MCP server của hãng: "Bạn có những tool nào?" Server trả lời với các tool như "search flights" và "book flights".
  3. Gọi tool: sau đó bạn yêu cầu trợ lý AI: "Hãy tìm chuyến bay từ Portland đến Honolulu." Trợ lý AI, dùng LLM của nó, xác định cần gọi tool "search flights" và truyền các tham số liên quan (điểm đi, điểm đến) cho MCP server.
  4. Thực thi và phản hồi: MCP server, đóng vai lớp bọc, thực hiện lời gọi thật tới API đặt chỗ nội bộ của hãng. Nó nhận thông tin chuyến bay (ví dụ dữ liệu JSON) và gửi lại cho trợ lý AI.
  5. Tương tác tiếp: trợ lý AI trình bày các lựa chọn chuyến bay. Khi bạn chọn một chuyến, trợ lý có thể gọi tool "book flight" trên cùng MCP server để hoàn tất việc đặt vé.

Agent-to-Agent Protocol (A2A)

Trong khi MCP tập trung kết nối LLM với tool, giao thức Agent-to-Agent (A2A) tiến thêm một bước bằng cách cho phép giao tiếp và cộng tác giữa các AI agent khác nhau. A2A kết nối các AI agent thuộc các tổ chức, môi trường và nền tảng công nghệ khác nhau để hoàn thành một tác vụ chung.

Chúng ta sẽ xem các thành phần và lợi ích của A2A, cùng ví dụ áp dụng vào ứng dụng du lịch.

Các thành phần cốt lõi của A2A

A2A tập trung vào việc cho phép các agent giao tiếp và cùng làm việc để hoàn thành một tác vụ con của người dùng. Mỗi thành phần của giao thức đóng góp vào điều này:

Agent Card

Giống như MCP server chia sẻ danh sách tool, một Agent Card có:

  • Tên của agent.
  • Một mô tả các tác vụ chung mà agent làm.
  • Một danh sách kỹ năng cụ thể kèm mô tả, giúp agent khác (hoặc cả người dùng) hiểu khi nào và vì sao muốn gọi agent đó.
  • URL endpoint hiện tại của agent.
  • Phiên bản và khả năng của agent, như phản hồi streaming và push notification.

Agent Executor

Agent Executor chịu trách nhiệm chuyển ngữ cảnh cuộc trò chuyện của người dùng tới agent ở xa (remote agent); agent ở xa cần ngữ cảnh này để hiểu tác vụ cần hoàn thành. Trong một A2A server, agent dùng Large Language Model (LLM) của riêng nó để phân tích yêu cầu đến và thực thi tác vụ bằng tool nội bộ của chính nó.

Artifact

Khi agent ở xa hoàn thành tác vụ được yêu cầu, sản phẩm công việc của nó được tạo thành một artifact. Artifact chứa kết quả công việc của agent, mô tả những gì đã hoàn thành và ngữ cảnh văn bản được gửi qua giao thức. Sau khi artifact được gửi, kết nối với agent ở xa được đóng cho đến khi cần lại.

Event Queue

Thành phần này dùng để xử lý cập nhật và chuyển tin nhắn. Nó đặc biệt quan trọng trên production cho các hệ thống agentic, để tránh kết nối giữa các agent bị đóng trước khi tác vụ hoàn thành, nhất là khi tác vụ có thể mất nhiều thời gian.

Lợi ích của A2A

  • Tăng cường cộng tác: cho phép agent từ các nhà cung cấp và nền tảng khác nhau tương tác, chia sẻ ngữ cảnh và cùng làm việc, giúp tự động hoá liền mạch giữa các hệ thống vốn tách rời.
  • Linh hoạt chọn model: mỗi A2A agent có thể quyết định dùng LLM nào để phục vụ yêu cầu của nó, cho phép dùng model được tối ưu hoặc fine-tuning riêng cho từng agent, khác với một kết nối LLM duy nhất trong một số kịch bản MCP.
  • Xác thực tích hợp sẵn: xác thực được tích hợp thẳng vào giao thức A2A, cung cấp một khung bảo mật vững chắc cho tương tác giữa các agent.

Ví dụ A2A

Sơ đồ A2A

Chúng ta hãy mở rộng kịch bản đặt chuyến du lịch, nhưng lần này dùng A2A.

  1. Yêu cầu của người dùng tới hệ đa agent: người dùng tương tác với một A2A client/agent "Travel Agent", chẳng hạn nói: "Hãy đặt trọn chuyến đi Honolulu vào tuần sau, gồm vé máy bay, khách sạn và xe thuê".
  2. Travel Agent điều phối: Travel Agent nhận yêu cầu phức tạp này. Nó dùng LLM của mình để suy luận về tác vụ và xác định cần tương tác với các agent chuyên biệt khác.
  3. Giao tiếp giữa các agent: Travel Agent dùng giao thức A2A để kết nối tới các agent phía sau, như "Airline Agent", "Hotel Agent" và "Car Rental Agent" do các công ty khác nhau tạo ra.
  4. Thực thi tác vụ được giao: Travel Agent gửi các tác vụ cụ thể tới các agent chuyên biệt này (ví dụ "Tìm chuyến bay đến Honolulu", "Đặt khách sạn", "Thuê xe"). Mỗi agent chuyên biệt chạy LLM riêng và dùng tool riêng (bản thân chúng có thể là MCP server) để làm phần việc của mình trong việc đặt chỗ.
  5. Phản hồi tổng hợp: khi mọi agent phía sau hoàn thành tác vụ, Travel Agent tổng hợp kết quả (thông tin chuyến bay, xác nhận khách sạn, đặt xe) và gửi lại cho người dùng một câu trả lời đầy đủ theo kiểu trò chuyện.

Natural Language Web (NLWeb)

Từ lâu, website là cách chính để người dùng truy cập thông tin và dữ liệu trên internet.

Chúng ta hãy xem các thành phần của NLWeb, lợi ích của NLWeb và một ví dụ về cách NLWeb hoạt động trong ứng dụng du lịch.

Các thành phần của NLWeb

  • Ứng dụng NLWeb (code dịch vụ lõi): hệ thống xử lý câu hỏi bằng ngôn ngữ tự nhiên. Nó kết nối các phần khác nhau của nền tảng để tạo phản hồi. Bạn có thể nghĩ về nó như động cơ vận hành các tính năng ngôn ngữ tự nhiên của một website.
  • Giao thức NLWeb: một bộ quy tắc cơ bản cho tương tác bằng ngôn ngữ tự nhiên với website. Nó trả phản hồi ở định dạng JSON (thường dùng Schema.org). Mục đích là tạo một nền tảng đơn giản cho "AI Web", giống như HTML đã giúp chia sẻ tài liệu trực tuyến.
  • MCP server (endpoint Model Context Protocol): mỗi bản cài NLWeb cũng hoạt động như một MCP server. Nghĩa là nó có thể chia sẻ tool (như phương thức "ask") và dữ liệu với các hệ thống AI khác. Trong thực tế, điều này giúp nội dung và khả năng của website dùng được bởi AI agent, cho phép website trở thành một phần của "hệ sinh thái agent" rộng lớn hơn.
  • Model embedding: các model này dùng để chuyển nội dung website thành biểu diễn số gọi là vector (embedding). Các vector này nắm bắt ý nghĩa theo cách máy tính có thể so sánh và tìm kiếm. Chúng được lưu trong một cơ sở dữ liệu đặc biệt, và người dùng có thể chọn model embedding muốn dùng.
  • Vector database (cơ chế truy xuất): cơ sở dữ liệu này lưu embedding của nội dung website. Khi ai đó đặt câu hỏi, NLWeb kiểm tra vector database để nhanh chóng tìm thông tin liên quan nhất. Nó đưa ra nhanh một danh sách câu trả lời khả dĩ, xếp hạng theo độ tương đồng. NLWeb làm việc với nhiều hệ thống lưu trữ vector như Qdrant, Snowflake, Milvus, Azure AI Search và Elasticsearch.

NLWeb qua ví dụ

NLWeb

Xét lại website đặt chuyến du lịch, nhưng lần này nó chạy NLWeb.

  1. Nạp dữ liệu: các danh mục sản phẩm sẵn có của website du lịch (ví dụ danh sách chuyến bay, mô tả khách sạn, gói tour) được định dạng bằng Schema.org hoặc nạp qua RSS feed. Tool của NLWeb nạp dữ liệu có cấu trúc này, tạo embedding và lưu vào một vector database cục bộ hoặc ở xa.
  2. Câu hỏi bằng ngôn ngữ tự nhiên (con người): người dùng vào website và, thay vì duyệt menu, gõ vào giao diện chat: "Tìm cho tôi một khách sạn thân thiện với gia đình ở Honolulu có hồ bơi cho tuần sau".
  3. NLWeb xử lý: ứng dụng NLWeb nhận câu hỏi. Nó gửi câu hỏi tới một LLM để hiểu, đồng thời tìm trong vector database các khách sạn liên quan.
  4. Kết quả chính xác: LLM giúp diễn giải kết quả tìm kiếm từ cơ sở dữ liệu, xác định các lựa chọn phù hợp nhất theo tiêu chí "thân thiện với gia đình", "hồ bơi" và "Honolulu", rồi định dạng câu trả lời bằng ngôn ngữ tự nhiên. Điều quan trọng là câu trả lời nhắc đến các khách sạn có thật trong danh mục của website, tránh thông tin bịa đặt.
  5. Tương tác với AI agent: vì NLWeb đóng vai MCP server, một AI agent du lịch bên ngoài cũng có thể kết nối tới bản NLWeb của website này. AI agent đó có thể dùng phương thức MCP ask để hỏi thẳng website: ask("Are there any vegan-friendly restaurants in the Honolulu area recommended by the hotel?"). Bản NLWeb sẽ xử lý câu hỏi, tận dụng cơ sở dữ liệu thông tin nhà hàng (nếu đã nạp), và trả về một phản hồi JSON có cấu trúc.

Còn câu hỏi về MCP/A2A/NLWeb?

Tham gia Microsoft Foundry Discord để gặp gỡ những người cùng học, dự các buổi office hours và được giải đáp thắc mắc về AI agent.

Tài liệu

Nguồn