logo
0
0
WeChat Login
leestott<leestott@users.noreply.github.com>
🌐 Update translations via Co-op Translator

에이전틱 프로토콜 사용하기 (MCP, A2A 및 NLWeb)

에이전틱 프로토콜

AI 에이전트의 사용이 증가함에 따라 표준화, 보안, 그리고 개방형 혁신을 지원하는 프로토콜의 필요성도 커지고 있습니다. 이번 강의에서는 이러한 필요를 충족하기 위해 고안된 세 가지 프로토콜 - 모델 컨텍스트 프로토콜(MCP), 에이전트 간 통신(A2A), 자연어 웹(NLWeb)을 다룹니다.

소개

이번 강의에서 다룰 내용은 다음과 같습니다:

MCP가 AI 에이전트가 외부 도구와 데이터를 활용하여 사용자 작업을 완료할 수 있도록 지원하는 방법.

A2A가 서로 다른 AI 에이전트 간의 통신과 협업을 가능하게 하는 방법.

NLWeb이 자연어 인터페이스를 웹사이트에 도입하여 AI 에이전트가 콘텐츠를 탐색하고 상호작용할 수 있도록 하는 방법.

학습 목표

• AI 에이전트의 맥락에서 MCP, A2A, NLWeb의 핵심 목적과 이점을 파악합니다.

• 각 프로토콜이 LLM, 도구, 기타 에이전트 간의 통신과 상호작용을 어떻게 설명하는지 이해합니다.

• 복잡한 에이전틱 시스템을 구축하는 데 있어 각 프로토콜이 수행하는 고유한 역할을 인식합니다.

모델 컨텍스트 프로토콜

**모델 컨텍스트 프로토콜(MCP)**은 애플리케이션이 LLM에 컨텍스트와 도구를 제공하는 표준화된 방식을 제공하는 오픈 스탠다드입니다. 이를 통해 AI 에이전트가 다양한 데이터 소스와 도구에 일관된 방식으로 연결할 수 있는 "범용 어댑터" 역할을 합니다.

MCP의 구성 요소, 기존 API 사용과 비교한 이점, 그리고 AI 에이전트가 MCP 서버를 사용하는 예를 살펴보겠습니다.

MCP 핵심 구성 요소

MCP는 클라이언트-서버 아키텍처를 기반으로 하며, 핵심 구성 요소는 다음과 같습니다:

호스트(Hosts): LLM 애플리케이션(예: VSCode와 같은 코드 편집기)으로, MCP 서버와의 연결을 시작합니다.

클라이언트(Clients): 호스트 애플리케이션 내에서 서버와 1:1 연결을 유지하는 구성 요소입니다.

서버(Servers): 특정 기능을 노출하는 경량 프로그램입니다.

MCP 서버의 기능은 다음 세 가지 핵심 프리미티브로 구성됩니다:

도구(Tools): AI 에이전트가 작업을 수행하기 위해 호출할 수 있는 개별 작업 또는 함수입니다. 예를 들어, 날씨 서비스는 "날씨 조회" 도구를 제공하거나, 전자상거래 서버는 "상품 구매" 도구를 제공할 수 있습니다. MCP 서버는 각 도구의 이름, 설명, 입력/출력 스키마를 기능 목록에 광고합니다.

리소스(Resources): MCP 서버가 제공할 수 있는 읽기 전용 데이터 항목 또는 문서로, 클라이언트가 필요에 따라 이를 검색할 수 있습니다. 예로는 파일 내용, 데이터베이스 레코드, 로그 파일 등이 있습니다. 리소스는 텍스트(코드 또는 JSON 등) 또는 바이너리(이미지 또는 PDF 등)일 수 있습니다.

프롬프트(Prompts): 더 복잡한 워크플로를 가능하게 하는 제안된 프롬프트를 제공하는 사전 정의된 템플릿입니다.

MCP의 이점

MCP는 AI 에이전트에 다음과 같은 중요한 이점을 제공합니다:

동적 도구 검색: 에이전트는 서버로부터 사용 가능한 도구 목록과 그 설명을 동적으로 받을 수 있습니다. 이는 전통적인 API가 통합을 위해 정적 코딩을 요구하는 것과 대조적이며, API 변경 시 코드 업데이트가 필요합니다. MCP는 "한 번 통합" 접근 방식을 제공하여 더 큰 적응성을 제공합니다.

LLM 간 상호운용성: MCP는 다양한 LLM에서 작동하며, 더 나은 성능을 평가하기 위해 핵심 모델을 전환할 수 있는 유연성을 제공합니다.

표준화된 보안: MCP는 표준 인증 방법을 포함하여 추가 MCP 서버에 대한 액세스를 추가할 때 확장성을 향상시킵니다. 이는 다양한 전통적인 API의 키와 인증 유형을 관리하는 것보다 간단합니다.

MCP 예시

MCP 다이어그램

사용자가 MCP를 활용하는 AI 어시스턴트를 통해 항공편을 예약하고자 한다고 가정해봅시다.

  1. 연결: AI 어시스턴트(MCP 클라이언트)가 항공사에서 제공하는 MCP 서버에 연결합니다.

  2. 도구 검색: 클라이언트가 항공사의 MCP 서버에 "사용 가능한 도구가 무엇인가요?"라고 묻습니다. 서버는 "항공편 검색" 및 "항공편 예약"과 같은 도구를 응답합니다.

  3. 도구 호출: 사용자가 AI 어시스턴트에게 "포틀랜드에서 호놀룰루로 가는 항공편을 검색해 주세요."라고 요청합니다. AI 어시스턴트는 LLM을 사용하여 "항공편 검색" 도구를 호출해야 한다는 것을 인식하고 관련 매개변수(출발지, 목적지)를 MCP 서버에 전달합니다.

  4. 실행 및 응답: MCP 서버는 래퍼 역할을 하여 항공사의 내부 예약 API에 실제 호출을 수행합니다. 그런 다음 항공편 정보(예: JSON 데이터)를 받아 AI 어시스턴트에 다시 보냅니다.

  5. 추가 상호작용: AI 어시스턴트는 항공편 옵션을 제시합니다. 사용자가 항공편을 선택하면 어시스턴트는 동일한 MCP 서버에서 "항공편 예약" 도구를 호출하여 예약을 완료할 수 있습니다.

에이전트 간 통신 프로토콜 (A2A)

MCP가 LLM과 도구를 연결하는 데 중점을 둔다면, 에이전트 간 통신(A2A) 프로토콜은 한 걸음 더 나아가 서로 다른 AI 에이전트 간의 통신과 협업을 가능하게 합니다. A2A는 서로 다른 조직, 환경, 기술 스택에 걸쳐 AI 에이전트를 연결하여 공동 작업을 완료할 수 있도록 합니다.

A2A의 구성 요소와 이점, 그리고 여행 애플리케이션에서 이를 어떻게 적용할 수 있는지 살펴보겠습니다.

A2A 핵심 구성 요소

A2A는 에이전트 간의 통신을 가능하게 하고, 사용자 작업의 하위 작업을 완료하기 위해 협력하도록 설계되었습니다. 프로토콜의 각 구성 요소는 다음과 같은 역할을 합니다:

에이전트 카드

MCP 서버가 도구 목록을 공유하는 방식과 유사하게, 에이전트 카드는 다음을 포함합니다:     ◦ 에이전트의 이름
    ◦ 수행 가능한 일반 작업에 대한 설명
    ◦ 특정 기술 목록과 설명으로, 다른 에이전트(또는 인간 사용자)가 해당 에이전트를 호출해야 하는 이유를 이해할 수 있도록 돕습니다.
    ◦ 에이전트의 현재 엔드포인트 URL
    ◦ 스트리밍 응답 및 푸시 알림과 같은 에이전트의 버전기능

에이전트 실행기

에이전트 실행기는 사용자 대화의 컨텍스트를 원격 에이전트에 전달하는 역할을 합니다. 원격 에이전트는 이를 통해 완료해야 할 작업을 이해할 수 있습니다. A2A 서버에서 에이전트는 자체 LLM을 사용하여 들어오는 요청을 분석하고 자체 내부 도구를 사용하여 작업을 실행합니다.

아티팩트

원격 에이전트가 요청된 작업을 완료하면, 작업 결과물이 아티팩트로 생성됩니다. 아티팩트는 에이전트 작업의 결과, 완료된 작업에 대한 설명, 그리고 프로토콜을 통해 전달된 텍스트 컨텍스트를 포함합니다. 아티팩트가 전송된 후, 원격 에이전트와의 연결은 다시 필요할 때까지 닫힙니다.

이벤트 큐

이 구성 요소는 업데이트 처리 및 메시지 전달에 사용됩니다. 특히 작업 완료 시간이 길어질 수 있는 경우, 작업이 완료되기 전에 에이전트 간 연결이 닫히는 것을 방지하기 위해 프로덕션 환경에서 중요합니다.

A2A의 이점

향상된 협업: 서로 다른 벤더와 플랫폼의 에이전트가 상호작용하고, 컨텍스트를 공유하며, 협력할 수 있도록 하여 전통적으로 분리된 시스템 간의 원활한 자동화를 촉진합니다.

모델 선택 유연성: 각 A2A 에이전트는 요청을 처리하기 위해 사용할 LLM을 스스로 결정할 수 있어, MCP 시나리오의 단일 LLM 연결과 달리 최적화되거나 세부 조정된 모델을 에이전트별로 사용할 수 있습니다.

내장 인증: 인증이 A2A 프로토콜에 직접 통합되어 에이전트 간 상호작용을 위한 강력한 보안 프레임워크를 제공합니다.

A2A 예시

A2A 다이어그램

이번에는 여행 예약 시나리오를 A2A를 사용하여 확장해 보겠습니다.

  1. 사용자 요청: 사용자가 "다음 주에 호놀룰루로 가는 여행을 예약해 주세요. 항공편, 호텔, 렌터카를 포함해서요."라고 요청합니다.

  2. 여행 에이전트의 조율: 여행 에이전트는 이 복잡한 요청을 받고, LLM을 사용하여 작업을 분석한 후 다른 전문 에이전트와 상호작용해야 한다고 판단합니다.

  3. 에이전트 간 통신: 여행 에이전트는 A2A 프로토콜을 사용하여 항공사 에이전트, 호텔 에이전트, 렌터카 에이전트와 같은 하위 에이전트에 연결합니다.

  4. 위임된 작업 실행: 여행 에이전트는 각 전문 에이전트에 특정 작업(예: "호놀룰루행 항공편 찾기", "호텔 예약", "렌터카 대여")을 보냅니다. 각 전문 에이전트는 자체 LLM과 도구를 사용하여 작업을 수행합니다.

  5. 통합된 응답: 모든 하위 에이전트가 작업을 완료하면, 여행 에이전트는 결과(항공편 세부 정보, 호텔 확인, 렌터카 예약)를 통합하여 사용자에게 종합적인 대화형 응답을 제공합니다.

자연어 웹 (NLWeb)

웹사이트는 오랫동안 인터넷에서 정보와 데이터를 액세스하는 주요 수단이었습니다.

NLWeb의 다양한 구성 요소, 이점, 그리고 여행 애플리케이션에서 NLWeb이 어떻게 작동하는지 살펴보겠습니다.

NLWeb의 구성 요소

  • NLWeb 애플리케이션(핵심 서비스 코드): 자연어 질문을 처리하는 시스템입니다. 플랫폼의 다양한 부분을 연결하여 응답을 생성합니다. 웹사이트의 자연어 기능을 구동하는 엔진으로 생각할 수 있습니다.

  • NLWeb 프로토콜: 웹사이트와의 자연어 상호작용을 위한 기본 규칙 세트입니다. JSON 형식(종종 Schema.org 사용)으로 응답을 반환합니다. 이는 HTML이 온라인 문서 공유를 가능하게 했던 것처럼 "AI 웹"의 간단한 기반을 만듭니다.

  • MCP 서버(모델 컨텍스트 프로토콜 엔드포인트): 각 NLWeb 설정은 MCP 서버로도 작동합니다. 이를 통해 도구(예: "질문하기" 메서드)와 데이터를 다른 AI 시스템과 공유할 수 있습니다. 실제로 이는 웹사이트의 콘텐츠와 기능을 AI 에이전트가 사용할 수 있도록 하여 사이트가 더 넓은 "에이전트 생태계"의 일부가 되도록 합니다.

  • 임베딩 모델: 이 모델은 웹사이트 콘텐츠를 벡터라는 숫자 표현으로 변환하는 데 사용됩니다. 이 벡터는 컴퓨터가 비교하고 검색할 수 있는 의미를 캡처합니다. 벡터는 특수 데이터베이스에 저장되며, 사용자는 사용할 임베딩 모델을 선택할 수 있습니다.

  • 벡터 데이터베이스(검색 메커니즘): 이 데이터베이스는 웹사이트 콘텐츠의 임베딩을 저장합니다. 사용자가 질문을 하면 NLWeb은 벡터 데이터베이스를 확인하여 가장 관련성이 높은 정보를 빠르게 찾습니다. 유사성 순위에 따라 가능한 답변 목록을 제공합니다. NLWeb은 Qdrant, Snowflake, Milvus, Azure AI Search, Elasticsearch와 같은 다양한 벡터 저장 시스템과 함께 작동합니다.

NLWeb 예시

NLWeb

여행 예약 웹사이트를 다시 살펴보되, 이번에는 NLWeb이 구동하는 경우를 가정해봅시다.

  1. 데이터 수집: 여행 웹사이트의 기존 제품 카탈로그(예: 항공편 목록, 호텔 설명, 투어 패키지)는 Schema.org를 사용하여 포맷되거나 RSS 피드를 통해 로드됩니다. NLWeb의 도구는 이 구조화된 데이터를 수집하고, 임베딩을 생성하며, 이를 로컬 또는 원격 벡터 데이터베이스에 저장합니다.

  2. 자연어 쿼리(사용자): 사용자가 웹사이트를 방문하여 메뉴를 탐색하는 대신, 채팅 인터페이스에 "다음 주에 호놀룰루에서 수영장이 있는 가족 친화적인 호텔을 찾아주세요."라고 입력합니다.

  3. NLWeb 처리: NLWeb 애플리케이션은 이 쿼리를 수신합니다. 쿼리를 이해하기 위해 LLM에 전송하고, 동시에 벡터 데이터베이스를 검색하여 관련 호텔 목록을 찾습니다.

  4. 정확한 결과: LLM은 데이터베이스 검색 결과를 해석하고, "가족 친화적", "수영장", "호놀룰루" 기준에 따라 가장 적합한 항목을 식별한 후 자연어 응답을 형식화합니다. 중요한 점은 응답이 웹사이트의 실제 호텔 카탈로그를 참조하며, 허구의 정보를 생성하지 않는다는 것입니다.

  5. AI 에이전트 상호작용: NLWeb이 MCP 서버로 작동하기 때문에 외부 AI 여행 에이전트도 이 웹사이트의 NLWeb 인스턴스에 연결할 수 있습니다. AI 에이전트는 ask MCP 메서드를 사용하여 웹사이트에 직접 쿼리를 보낼 수 있습니다: ask("호텔에서 추천하는 호놀룰루 지역의 비건 친화적인 레스토랑이 있나요?"). NLWeb 인스턴스는 이를 처리하고, 데이터베이스에 로드된 레스토랑 정보를 활용하여 구조화된 JSON 응답을 반환합니다.

MCP/A2A/NLWeb에 대해 더 궁금한 점이 있나요?

Azure AI Foundry Discord에 참여하여 다른 학습자들과 만나고, 오피스 아워에 참석하며, AI 에이전트에 대한 질문에 답을 얻으세요.

리소스


면책 조항:
이 문서는 AI 번역 서비스 Co-op Translator를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.