API에서 AI로: NLWeb, GPT-4o, Microsoft Agent Framework를 사용하여 .NET + SQL 앱을 대화형 웹
요약
Microsoft의 NLWeb을 활용하여 기존 .NET 및 SQL 애플리케이션에 대화형 자연어 인터페이스를 추가하는 방법을 다룹니다. GPT-4o와 Microsoft Agent Framework, MCP 서버를 활용한 에이전트 웹 구축 가이드를 제공합니다.
핵심 포인트
- NLWeb은 웹 자산을 자연어 질의에 응답 가능하게 만드는 오픈 소스 프로토콜입니다.
- 모든 NLWeb 인스턴스는 MCP 서버 역할을 수행하여 에이전트 간 도구 호출을 지원합니다.
- GPT-4o와 .NET 11을 사용하여 기존 앱에 대화형 레이어를 소급 적용할 수 있습니다.
- Cloudflare의 AutoRAG를 통해 관리형 배포가 가능합니다.
2026년 업데이트 — Build 2025 이후 NLWeb의 진화, Semantic Kernel에서 Microsoft Agent Framework로의 전환, GPT-4o, 그리고 Cloudflare의 관리형 NLWeb 배포 경로를 다룹니다.
자연어 인터페이스 (Natural language interfaces)는 더 이상 새로움이 아니라 새로운 기본 기대치입니다. 사용자들은 점점 더 동료에게 말하는 것과 같은 방식으로 앱에 질문하기를 기대합니다. Microsoft의 NLWeb을 사용하면 기존의 .NET + SQL 애플리케이션을 처음부터 다시 구축하지 않고도 대화형 레이어를 소급 적용할 수 있습니다. 이 업데이트된 가이드에서는 2026년 중반에 사용 가능한 최신 도구들을 사용하여 전체 프로세스를 살펴봅니다.
NLWeb이란 무엇인가? (2026년 업데이트)
NLWeb은 R.V. Guha(RSS, RDF, Schema.org의 창시자)가 고안한 Microsoft의 오픈 소스 프로토콜로, 검색 엔진이 중개 역할을 하지 않고도 모든 웹 자산이 자연어 질의에 직접 응답할 수 있게 해줍니다. 이것을 HTML이 출판에 했던 역할로 생각하십시오. 즉, 귀하의 사이트를 떠오르는 **에이전트 웹 (agentic web)**의 일류 시민으로 만드는 보편적이고 개방된 표준입니다.
모든 NLWeb 인스턴스는 또한 모델 컨텍스트 프로토콜 (Model Context Protocol, MCP) 서버이기도 하며, 두 가지 핵심 엔드포인트를 통해 AI 에이전트에게 콘텐츠를 노출합니다:
/ask— 인간을 대상으로 하는 대화형 질의용/mcp— 에이전트 간의 발견 및 도구 호출 (tool calls) 용
Build 2025에서의 발표 이후, 생태계는 크게 성숙했습니다:
- Cloudflare는 2026년 초에 AutoRAG 인프라를 통해 네이티브 NLWeb 지원을 추가하여 완전히 관리되는 배포 경로를 제공합니다.
- Microsoft는 MCP 운영 위원회(Steering Committee)에 합류하였으며, 업데이트된 권한 부여 사양과 MCP 서버 레지스트리 설계를 기여했습니다.
- Build 2026에서는 .NET 11의 새로운 에이전트 웹 구축 블록과 함께 Agents and Apps 트랙에서 NLWeb을 눈에 띄게 다루었습니다.
NLWeb은 기술 중립적입니다. 모든 주요 LLM, 벡터 데이터베이스(vector databases), 운영 체제를 지원합니다.
기존 가이드 이후 변경된 사항
| 영역 | 기존 (2025년 5월) | 업데이트됨 (2026년 6월) |
|---|---|---|
| 모델 | GPT-4 | GPT-4o (기본값) |
| ... |
아키텍처 개요 (Architecture Overview)
사용자 (User)
└─► NLWeb UI (/ask 엔드포인트)
└─► ASP.NET Core (.NET 11) 컨트롤러 (Controller)
...
사전 요구 사항 (Prerequisites)
- .NET 11 Web API 프로젝트 (ASP.NET Core)
- Microsoft SQL Server
- Node.js (NLWeb UI 데모용)
- Azure OpenAI 액세스 (GPT-4o + text-embedding-3-small)
- 벡터 데이터베이스 (vector database): Azure AI Search (권장), Qdrant, Pinecone 또는 Weaviate
- Docker (선택 사항, 배포용)
단계별 설정 (Step-by-Step Setup)
1단계: NLWeb 클론 (Clone)
git clone https://github.com/microsoft/NLWeb.git
cd NLWeb
주요 폴더:
code/— Python 참조 구현 (reference implementation) 및/ask엔드포인트 로직demo/— 임베드 가능한 프론트엔드 UI (frontend UI)docs/— MCP 프로토콜 및 Schema.org 응답 사양 (specs)
2단계: NLWeb UI 실행
cd demo
npm install
npm start
이 명령은 로컬 채팅 인터페이스를 실행합니다. 쿼리(Queries)는 백엔드의 /ask 엔드포인트로 POST 방식으로 전송됩니다. UI 스니펫(snippet)을 모든 웹페이지에 직접 임베드할 수도 있습니다.
3단계: NLWeb 요청/응답 규약 (Request/Response Contract) 이해하기
API로 들어오는 요청 (Incoming request):
{
"query": "이번 달 가장 많이 팔린 제품은 무엇인가요?",
"context": []
...
예상 응답 (Schema.org JSON-LD):
{
"@context": "https://schema.org",
"@type": "ItemList",
...
NLWeb은 이 구조화된 응답을 UI에서 대화형 답변으로 렌더링합니다.
4단계: Microsoft Agent Framework (MAF) 설치
MAF는 Semantic Kernel의 에이전트 레이어(agent layer)를 잇는 프로덕션 준비 완료(production-ready)된 후속 제품으로, 2026년 2분기에 GA(General Availability)에 도달했습니다. 이는 AutoGen과 Semantic Kernel의 장점을 하나의 더 깔끔한 SDK로 통합합니다.
dotnet add package Microsoft.Extensions.AI
dotnet add package Microsoft.SemanticKernel
dotnet add package Microsoft.Agents.AI.OpenAI
...
기존 SK 사용자 참고 사항: Semantic Kernel v1.x는 MAF GA(General Availability) 이후 최소 1년 동안 지원됩니다. 사용 중인 플러그인(Plugins)과 벡터 저장소(Vector store) 통합 기능은 깔끔하게 마이그레이션되며, 사고 모델(Mental model)은 동일하되 API 표면(API surface)만 더 정돈된 형태입니다.
Step 5: .NET 11 API 업데이트하기
쿼리 모델(Query Model) 정의
public class NLWebQuery
{
public string Query { get; set; } = string.Empty;
...
컨트롤러(Controller) 생성
[ApiController]
[Route("api")]
public class NLWebController : ControllerBase
...
Step 6: MAF를 사용하여 에이전트 서비스(Agent Service) 구축하기
이 부분이 2026년의 접근 방식이 크게 달라지는 지점입니다. 프롬프트(Prompt) → 벡터 검색(Vector search) → SQL을 수동으로 체이닝(Chaining)하는 대신, Microsoft Agent Framework가 오케스트레이션(Orchestration)을 처리합니다.
using Microsoft.Extensions.AI;
using Microsoft.Agents.AI;
using Azure.AI.OpenAI;
...
Program.cs (.NET 11)에 서비스 등록하기
var builder = WebApplication.CreateBuilder(args);
// MAF: Layer 1 - IChatClient (공급자 불가지론적/Provider-agnostic)
...
Step 7: 벡터 검색을 위한 SQL 데이터 준비하기
앱이 시맨틱 검색(Semantic retrieval)을 수행하기 전에, SQL 데이터를 임베딩(Embed)하고 이를 벡터 데이터베이스(Vector database)에 저장해야 합니다.
// 일회성 인제스션(Ingestion) 파이프라인
public async Task IngestProductsAsync()
{
...
2026년 베스트 프랙티스(Best practices):
- 최상의 재현율(Recall)을 위해 Azure AI Search에서 하이브리드 검색 (Hybrid search) (키워드 + 시맨틱)을 사용하세요.
- 적절한 입도(Granularity)로 임베딩하세요 — 제품은 행(Row) 단위로, FAQ는 단락(Paragraph) 단위로 수행합니다.
- 추적 가능성(Traceability)과 디버깅을 위해 메타데이터에
SourceTable및RowId를 저장하세요.
Step 8: 응답을 Schema.org 형식으로 포맷팅하기
private object FormatAsSchemaOrg(DataTable table)
{
return new
...
Step 9: 전체 흐름 테스트하기
- .NET API 시작:
dotnet run - NLWeb UI 시작:
demo/폴더에서npm start실행 - 입력: "이번 달 가장 많이 팔린 제품은 무엇인가요?" (What are the top-selling products this month?)
- 전체 파이프라인 관찰: 쿼리(Query) → 임베딩(Embed) → 벡터 검색(Vector search) → GPT-4o → SQL → Schema.org JSON → UI의 대화형 답변
보너스: 메모리 및 컨텍스트 지속성(Context Persistence) 추가
다회차 대화 (Multi-turn conversations)를 위해서는 Redis 또는 SQL을 사용하여 채팅 기록을 유지(persist)하고, 각 요청과 함께 이를 다시 전달해야 합니다:
// Redis에 대화 기록 저장
await _cache.SetStringAsync($"chat:{sessionId}", JsonSerializer.Serialize(history));
MAF는 세션/대화 스레드 (session/conversation thread) 개념을 기본적으로 처리합니다. MAF의 에이전트 추상화 (agent abstraction)를 사용한다면 수동으로 기록을 연결할 필요가 없습니다.
대안: Cloudflare AutoRAG를 통한 관리형 배포 (Managed Deployment)
NLWeb 인프라를 직접 관리하고 싶지 않다면, 이제 Cloudflare에서 클릭 한 번으로 가능한 관리형 경로를 제공합니다:
- Cloudflare Dashboard → AI → AI Search로 이동합니다.
- Create AI Search → Website를 선택합니다.
- NLWeb Worker를 선택합니다 — Cloudflare가
/ask및/mcp엔드포인트를 자동으로 배포합니다. - NLWeb UI가 Cloudflare Worker URL을 가리키도록 설정합니다.
이 방식은 벡터 DB (vector DB) 인프라를 관리하거나 NLWeb 서버 업데이트를 수동으로 수행하지 않고, NLWeb을 프로덕션 환경에서 실행하고자 하는 팀에게 이상적입니다.
리소스 (Resources)
- NLWeb GitHub
- Microsoft Agent Framework Docs
- Semantic Kernel → MAF Migration Guide
- Cloudflare NLWeb Integration
- Azure AI Search (Vector + Hybrid)
- Schema.org
- .NET 11 at Build 2026
마치며
NLWeb 발표로부터 1년이 지난 지금, 생태계는 유망한 실험 단계에서 견고한 표준으로 성장했습니다. Cloudflare의 관리형 경로, .NET 11의 네이티브 에이전트 기반 웹 지원 (native agentic web support), 그리고 더 파편화되었던 Semantic Kernel 에이전트 API를 대체하는 Microsoft Agent Framework 덕분에, 2026년의 통합 시나리오는 훨씬 더 깔끔해졌습니다.
핵심 아이디어는 동일합니다. 기존의 .NET + SQL 데이터는 전통적인 REST 인터페이스를 통해 노출하고 있는 것보다 훨씬 더 가치가 높습니다. NLWeb, GPT-4o, 그리고 벡터 검색 (vector search)은 사용자가 질문을 입력하는 인간이든, 자율적인 요청을 수행하는 AI 에이전트 (AI agents)이든 관계없이 해당 데이터에 접근할 수 있는 자연어 프런트 도어 (natural language front door)를 제공합니다.
에이전트 중심의 웹 (agentic web) 시대가 도래했습니다. 당신의 앱도 그 일부가 되어야 합니다.
Jino R Krishnan 작성 | 2026년 6월 업데이트
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기