Microsoft.Extensions.AI 사용하는 .NET용 통합 AI 구성 요소
.NET 에코시스템은 및 라이브러리를 사용하여 AI 서비스를 .NET 애플리케이션 및 라이브러리에 통합하기 위한 추상화 기능을 Microsoft.Extensions.AI
Microsoft.Extensions.AI.Abstractions
제공합니다. .NET 팀은 또한 .NET 생성 AI 애플리케이션 및 라이브러리에 대한 이러한 추상화로 핵심 Microsoft.Extensions.*
라이브러리를 향상시켰습니다. 앞의 섹션에서는 다음을 알아봅니다.
- 라이브러리의
Microsoft.Extensions.AI
핵심 개념 및 기능. - 앱에서 AI 추상화로 작업하는 방법 및 앱에서 제공하는 이점
- 필수 AI 미들웨어 개념입니다.
자세한 내용은 Microsoft.Extensions.AI소개를 참조하세요.
Microsoft.Extensions.AI 라이브러리란?
Microsoft.Extensions.AI
는 의미 체계 커널을 포함하여 .NET 에코시스템 전반의 개발자와 공동으로 만든 핵심 .NET 라이브러리 집합입니다. 이러한 라이브러리는 소형 및 대형 언어 모델(SLLM 및 LLM), 포함 및 미들웨어와 같은 AI 서비스와 상호 작용하기 위한 C# 추상화의 통합 계층을 제공합니다.
Microsoft.Extensions.AI
에서는 다양한 서비스에서 구현할 수 있는 추상화 기능을 제공하며, 모두 동일한 핵심 개념을 준수합니다. 이 라이브러리는 특정 공급자의 서비스에 맞게 조정된 API를 제공하기 위한 것이 아닙니다.
Microsoft.Extensions.AI
목표는 .NET 에코시스템 내에서 통합 계층 역할을 하여 개발자가 선호하는 프레임워크 및 라이브러리를 선택할 수 있게 하는 동시에 에코시스템 전체에서 원활한 통합 및 협업을 보장하는 것입니다.
일반적인 AI 서비스에 대한 추상화 작업
AI 기능은 빠르게 진화하고 있으며, 일반적인 기능에 대한 패턴이 등장하고 있습니다.
- 대화형으로 AI에 정보 또는 데이터 분석을 요청하는 채팅 기능입니다.
- 벡터 검색 기능과 통합할 생성 포함
- 다른 서비스, 플랫폼 또는 코드와 통합하기 위한 도구 호출입니다.
라이브러리는 Microsoft.Extensions.AI
이러한 유형의 작업에 대한 추상화 기능을 제공하므로 개발자는 특정 플랫폼 또는 공급자 구현보다는 개념적 AI 기능에 대한 코딩에 집중할 수 있습니다. 통합 추상화는 개발자가 여러 소스에서 효과적으로 작업하는 데 중요합니다.
예를 들어 인터페이스를 IChatClient
사용하면 Azure OpenAI 서비스에 연결하거나 로컬 Ollama 설치를 실행하는 등 다양한 공급자의 언어 모델을 사용할 수 있습니다. AI 클라이언트를 제공하는 모든 .NET 패키지는 인터페이스를 IChatClient
구현하여 .NET 코드 사용과 원활하게 통합할 수 있습니다.
IChatClient client =
environment.IsDevelopment ?
new OllamaChatClient(...) :
new AzureAIInferenceChatClient(...);
그런 다음 사용 중인 공급자에 관계없이 다음과 같이 요청을 보낼 수 있습니다.
var response = await chatClient.CompleteAsync(
"Translate the following text into Pig Latin: I love .NET and AI");
Console.WriteLine(response.Message);
이러한 추상화는 개발 및 프로덕션에 서로 다른 서비스를 사용하든, 하이브리드 시나리오를 해결하든, 다른 서비스 공급자를 탐색하든, 코드 변경을 최소화하면서 다양한 시나리오에 대해 Idiomatic C# 코드를 허용합니다.
이러한 추상성을 구현하는 라이브러리 작성자는 클라이언트를 더 광범위한 Microsoft.Extensions.AI
에코시스템과 상호 운용할 수 있도록 합니다. 서비스별 API는 필요한 경우 계속 액세스할 수 있으므로 소비자가 표준 추상화에 대해 코딩하고 필요한 경우에만 독점 API로 전달할 수 있습니다.
Microsoft.Extensions.AI
는 추가 패키지를 통해 다음 서비스에 대한 구현을 제공합니다.
나중에 이러한 Microsoft.Extensions.AI
추상화의 구현은 추가 패키지를 설치할 필요 없이 해당 클라이언트 라이브러리의 일부가 될 것입니다.
AI 서비스에 대한 미들웨어 구현
AI 서비스에 연결하고 사용하는 것은 강력한 애플리케이션을 빌드하는 한 가지 측면일 뿐입니다. 프로덕션 지원 애플리케이션에는 원격 분석, 로깅 및 도구 호출 기능과 같은 추가 기능이 필요합니다.
Microsoft.Extensions.AI
추상화에서는 친숙한 패턴을 사용하여 이러한 구성 요소를 애플리케이션에 쉽게 통합할 수 있습니다.
다음 샘플에서는 OpenAI IChatClient
를 등록하는 방법을 보여 줍니다.
IChatClient
를 사용하면 다양한 공급자 간에 일관된 방식으로 기능을 연결할 수 있습니다.
app.Services.AddChatClient(builder => builder
.UseLogging()
.UseFunctionInvocation()
.UseDistributedCache()
.UseOpenTelemetry()
.Use(new OpenAIClient(...)).AsChatClient(...));
이 코드 조각에 설명된 기능은 라이브러리에 Microsoft.Extensions.AI
포함되지만 이 방법을 사용하여 계층화할 수 있는 기능의 작은 하위 집합일 뿐입니다. .NET 개발자는 다양한 유형의 미들웨어를 노출하여 강력한 AI 기능을 만들 수 있습니다.
Microsoft.Extensions.AI 사용하여 빌드
다음과 같은 방법으로 빌드 Microsoft.Extensions.AI
를 시작할 수 있습니다.
- 라이브러리 개발자: AI 서비스에 대한 클라이언트를 제공하는 라이브러리를 소유한 경우 라이브러리에서 인터페이스를 구현하는 것이 좋습니다. 이를 통해 사용자는 추상화로 NuGet 패키지를 쉽게 통합할 수 있습니다.
- 서비스 소비자: AI 서비스를 사용하는 라이브러리를 개발하는 경우 특정 AI 서비스에 하드 코딩하는 대신 추상화 기능을 사용합니다. 이 접근 방식을 통해 소비자는 선호하는 서비스를 유연하게 선택할 수 있습니다.
- 애플리케이션 개발자: 추상화로 앱 통합을 간소화합니다. 이렇게 하면 모델 및 서비스 전반에서 이식성을 구현하고, 테스트 및 모의 작업을 용이하게 하고, 에코시스템에서 제공하는 미들웨어를 활용하며, 애플리케이션의 여러 부분에서 다른 서비스를 사용하더라도 앱 전체에서 일관된 API를 유지 관리합니다.
- 에코시스템 기여자: 에코시스템에 기여하려는 경우 사용자 지정 미들웨어 구성 요소를 작성하는 것이 좋습니다. 시작하려면 dotnet/ai-samples GitHub 리포지토리의 샘플을 참조하세요.
사용하는 엔드 투 엔드 샘플Microsoft.Extensions.AI
은 eShopSupport를 참조하세요.
다음 단계
.NET