다음을 통해 공유


.NET .NET Aspire Community Toolkit Ollama 통합

포함:호스팅 통합Client 통합

메모

이 통합은 .NET.NET Aspire 커뮤니티 도구 키트 일부이며 .NET.NET Aspire 팀에서 공식적으로 지원하지 않습니다.

Ollama 지정된 프롬프트에 따라 텍스트를 생성하는 데 사용할 수 있는 강력한 오픈 소스 언어 모델입니다. .NET .NET Aspire Ollama 통합은 Ollama 모델을 호스트하기 위해 docker.io/ollama/ollama 컨테이너 이미지을 사용하고 OllamaSharpclient을 통해 액세스하는 방법을 제공합니다.

호스팅 통합

Ollama 호스팅 통합은 Ollama serverOllamaResource 형식으로 모델링하고 모델을 OllamaModelResource 형식으로 나타내는 AddModel 확장 메서드를 사용하여 server 모델을 추가하는 기능을 제공합니다. 📦 CommunityToolkit를 추가할 수 있는 이러한 형식 및 API에 액세스하려면Aspire. hosting.Ollama는 앱 호스트 프로젝트에서 NuGet 패키지를.

dotnet add package CommunityToolkit.Aspire.Hosting.Ollama

자세한 내용은 dotnet add package 또는 manage package dependencies in .NET applications.

Ollama 리소스 추가

앱 호스트 프로젝트에서는 AddOllama 확장 메서드를 사용하여 Ollama 통합을 등록하고, 이를 이용해 애플리케이션 빌더에 Ollama 컨테이너를 추가합니다. 그런 다음 AddModel 확장 메서드를 사용하여 컨테이너가 시작될 때 다운로드하고 실행되는 모델을 컨테이너에 추가할 수 있습니다.

var builder = DistributedApplication.CreateBuilder(args);

var ollama = builder.AddOllama("ollama");

var phi35 = ollama.AddModel("phi3.5");

var exampleProject = builder.AddProject<Projects.ExampleProject>()
                            .WithReference(phi35);

또는 Hugging Face 모델 허브에서 모델을 사용하려는 경우 AddHuggingFaceModel 확장 메서드를 사용할 수 있습니다.

var llama = ollama.AddHuggingFaceModel("llama", "bartowski/Llama-3.2-1B-Instruct-GGUF:IQ4_XS");

.NET .NET Aspire docker.io/ollama/ollama 이미지와 함께 이전 예제와 같이 앱 호스트에 컨테이너 이미지를 추가하면 로컬 머신에 새 Ollama 인스턴스가 만들어집니다. 자세한 내용은 컨테이너 리소스 수명 주기참조하세요.

LLM 다운로드

Ollama 컨테이너가 이 통합을 위해 처음으로 시작될 때, 구성된 LLM을 다운로드합니다. 이 다운로드의 진행 상황은 .NET.NET Aspire 대시보드에서 이 통합의 상태 열에 표시됩니다.

중요하다

다운로드가 완료될 때까지 .NET.NET Aspire 오케스트레이션 앱을 열어 두세요. 그렇지 않으면 다운로드가 취소됩니다.

LLM 캐시

하나 이상의 LLM이 Ollama가 실행 중인 컨테이너에 다운로드되며, 기본적으로 이 컨테이너는 임시입니다. 컨테이너를 다시 시작할 때 하나 이상의 LLM을 유지해야 하는 경우 WithDataVolume 메서드를 사용하여 컨테이너에 볼륨을 탑재해야 합니다.

var ollama = builder.AddOllama("ollama")
                    .WithDataVolume();

var llama = ollama.AddModel("llama3");

사용 가능한 경우 GPU 사용

하나 이상의 LLM이 Ollama가 실행 중인 컨테이너에 다운로드되며 기본적으로 이 컨테이너는 CPU에서 실행됩니다. GPU에서 컨테이너를 실행해야 하는 경우 컨테이너 런타임 인수에 매개 변수를 전달해야 합니다.

var ollama = builder.AddOllama("ollama")
                    .AddModel("llama3")
                    .WithContainerRuntimeArgs("--gpus=all");

자세한 내용은 GPU 지원을 Docker Desktop에서 참조하세요.

상태 점검을 위한 시스템 통합 호스팅

Ollama 호스팅 통합은 Ollama server 및 모델 리소스에 대한 상태 검사를 자동으로 추가합니다. Ollama server에 대해, Ollama server이 실행 중인지 그리고 연결이 가능한지를 확인하기 위해 상태 검사가 추가됩니다. Ollama 모델 리소스의 경우 모델이 실행 중이고 모델을 사용할 수 있는지 확인하기 위해 상태 검사가 추가됩니다. 즉, 모델을 다운로드할 때까지 리소스가 비정상으로 표시됩니다.

Open WebUI 지원

또한 Ollama 통합은 Open WebUI을 실행하고 Ollama 컨테이너와 통신하도록 지원을 제공했습니다.

var ollama = builder.AddOllama("ollama")
                    .AddModel("llama3")
                    .WithOpenWebUI();

Client 통합

.NET .NET Aspire OllamaSharp 통합을 시작하려면 📦 CommunityToolkit를 설치합니다.Aspire. OllamaSharp는 client-consuming 프로젝트, 즉 Ollama client사용하는 애플리케이션의 프로젝트에서 NuGet 패키지를.

dotnet add package CommunityToolkit.Aspire.OllamaSharp

Ollama client API 추가

사용 중인 client프로젝트의 Program.cs 파일에서 AddOllamaClientApi 확장을 호출하여, 종속성 주입 컨테이너를 통해 사용하기 위한 IOllamaClientApi을(를) 등록하세요. 앱 호스트에서 제공되고 client-consuming 프로젝트에서 참조되는 리소스가 OllamaModelResource경우 AddOllamaClientApi 메서드는 모델을 IOllamaClientApi기본 모델로 등록합니다.

builder.AddOllamaClientApi("llama3");

작성기에서 IOllamaClientApi 추가한 후 종속성 주입을 사용하여 IOllamaClientApi 인스턴스를 가져올 수 있습니다. 예를 들어 서비스에서 컨텍스트 개체를 검색하려면 다음을 수행합니다.

public class ExampleService(IOllamaClientApi ollama)
{
    // Use ollama...
}

키가 지정된 Ollama client API 추가

여러 IOllamaClientApi 인스턴스를 서로 다른 연결 이름으로 등록하려는 경우가 있을 수 있습니다. 키 입력된 Ollama 클라이언트를 등록하려면 AddKeyedOllamaClientApi 메서드를 호출합니다.

builder.AddKeyedOllamaClientApi(name: "chat");
builder.AddKeyedOllamaClientApi(name: "embeddings");

그런 다음 종속성 주입을 사용하여 IOllamaClientApi 인스턴스를 검색할 수 있습니다. 예를 들어 예제 서비스에서 연결을 검색하려면 다음을 수행합니다.

public class ExampleService(
    [FromKeyedServices("chat")] IOllamaClientApi chatOllama,
    [FromKeyedServices("embeddings")] IOllamaClientApi embeddingsOllama)
{
    // Use ollama...
}

구성

Ollama client 통합은 프로젝트의 요구 사항 및 규칙을 충족하는 여러 구성 방법 및 옵션을 제공합니다.

연결 문자열 사용

ConnectionStrings 구성 섹션에서 연결 문자열을 사용하는 경우 AddOllamaClientApi 메서드를 호출할 때 연결 문자열의 이름을 제공할 수 있습니다.

builder.AddOllamaClientApi("llama");

그런 다음 ConnectionStrings 구성 섹션에서 연결 문자열을 검색합니다.

{
  "ConnectionStrings": {
    "llama": "Endpoint=http//localhost:1234;Model=llama3"
  }
}

Microsoft.Extensions.AI 통합

Microsoft.Extensions.AI 라이브러리는 제네릭 인터페이스를 사용하여 Ollama client API에 대한 추상화 기능을 제공합니다. OllamaSharp는 이러한 인터페이스를 지원하며 AddOllamaSharpChatClientAddOllamaSharpEmbeddingGenerator 확장 메서드를 사용하여 등록할 수 있습니다. 또한 이러한 메서드는 종속성 주입 컨테이너에 IOllamaClientApi 인스턴스를 등록하고 여러 인스턴스에 대한 키 버전을 갖습니다.

builder.AddOllamaSharpChatClient("llama");

작성기에서 IChatClient 추가한 후 종속성 주입을 사용하여 IChatClient 인스턴스를 가져올 수 있습니다. 예를 들어 서비스에서 컨텍스트 개체를 검색하려면 다음을 수행합니다.

public class ExampleService(IChatClient chatClient)
{
    // Use chat client...
}

참고 항목