Bagikan melalui


integrasi Ollama .NET.NET Aspire Community Toolkit

Termasuk:integrasi Hosting dan Client integrasi

Nota

Integrasi ini adalah bagian dari dan Community Toolkit tidak didukung secara resmi oleh tim .

Ollama adalah model bahasa sumber terbuka yang kuat yang dapat digunakan untuk menghasilkan teks berdasarkan perintah tertentu. Integrasi .NET.NET Aspire Ollama menyediakan cara untuk meng-host model Ollama menggunakan gambar kontainer docker.io/ollama/ollama dan mengaksesnya melalui klien OllamaSharp .

Integrasi hosting

Integrasi hosting Ollama memodelkan server Ollama sebagai jenis OllamaResource, dan menyediakan kemampuan untuk menambahkan model ke server menggunakan metode ekstensi AddModel, yang mewakili model sebagai jenis OllamaModelResource. Untuk mengakses jenis dan API ini yang memungkinkan Anda menambahkan CommunityToolkit.. Hosting.Ollama paket NuGet dalam proyek host aplikasi .

dotnet add package CommunityToolkit.Aspire.Hosting.Ollama

Untuk informasi selengkapnya, lihat dotnet menambahkan paket atau Mengelola dependensi paket di aplikasi .NET.

Menambahkan sumber daya Ollama

Dalam proyek host aplikasi, daftarkan dan gunakan integrasi Ollama menggunakan metode ekstensi AddOllama untuk menambahkan kontainer Ollama ke pembuat aplikasi. Anda kemudian dapat menambahkan model ke kontainer, yang mengunduh dan menjalankan saat kontainer dimulai, menggunakan metode ekstensi 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);

Atau, jika Anda ingin menggunakan model dari hub model Hugging Face, Anda dapat menggunakan metode ekstensi AddHuggingFaceModel.

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

Saat .NET.NET Aspire menambahkan gambar kontainer ke host aplikasi, seperti yang ditunjukkan dalam contoh sebelumnya dengan gambar docker.io/ollama/ollama, gambar tersebut membuat instans Ollama baru di komputer lokal Anda. Untuk informasi selengkapnya, lihat siklus hidup sumber daya wadah.

Mengunduh LLM

Ketika kontainer Ollama untuk integrasi ini pertama kali berputar, ia mengunduh LLM yang dikonfigurasi. Kemajuan unduhan ini ditampilkan di kolom Status untuk integrasi ini di dasbor .

Penting

Biarkan aplikasi orkestrasi .NET.NET Aspire terbuka hingga unduhan selesai, jika tidak, unduhan akan dibatalkan.

Simpan sementara LLM

Satu atau beberapa LLM diunduh ke dalam kontainer tempat Ollama dijalankan, dan secara default kontainer ini bersifat ephemeral. Jika Anda perlu mempertahankan satu atau beberapa LLM selama restart kontainer, Anda perlu mengaitkan volume ke kontainer menggunakan metode WithDataVolume.

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

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

Gunakan GPU jika tersedia

Satu atau beberapa LLM diunduh ke dalam kontainer tempat Ollama dijalankan, dan secara default kontainer ini berjalan pada CPU. Jika Anda perlu menjalankan kontainer di GPU, Anda perlu meneruskan parameter ke arg runtime kontainer.

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

Untuk informasi selengkapnya, lihat dukungan GPU di Docker Desktop.

Pelaksanaan pemeriksaan kesehatan untuk integrasi

Integrasi hosting Ollama secara otomatis menambahkan pemeriksaan kesehatan untuk server Ollama dan sumber daya model. Untuk server Ollama, pemeriksaan kesehatan ditambahkan untuk memverifikasi bahwa server Ollama berjalan dan bahwa koneksi dapat dibuat ke server tersebut. Untuk sumber daya model Ollama, cek kesehatan ditambahkan untuk memverifikasi bahwa model berjalan dan model tersedia, hal ini berarti bahwa sumber daya akan ditandai sebagai tidak sehat hingga model diunduh.

Buka dukungan WebUI

Integrasi Ollama juga memberikan dukungan untuk menjalankan Open WebUI dan membuatnya berkomunikasi dengan kontainer Ollama.

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

integrasi Client

Untuk mulai menggunakan integrasi .NET.NET Aspire OllamaSharp, instal 📦 CommunityToolkit.Aspirepaket NuGet OllamaSharp di dalam proyek yang menggunakan klien, yaitu proyek untuk aplikasi yang menggunakan klien Ollama.

dotnet add package CommunityToolkit.Aspire.OllamaSharp

Menambahkan API klien Ollama

Dalam file Program.cs proyek yang dikonsumsi klien Anda, panggil ekstensi AddOllamaClientApi untuk mendaftarkan IOllamaClientApi agar dapat digunakan melalui kontainer injeksi dependensi. Jika sumber daya yang disediakan di host aplikasi, dan dirujuk dalam proyek yang mengkonsumsi klien, adalah OllamaModelResource, maka metode AddOllamaClientApi akan mendaftarkan model sebagai model default untuk IOllamaClientApi.

builder.AddOllamaClientApi("llama3");

Setelah menambahkan IOllamaClientApi ke pembangun, Anda bisa mendapatkan instans IOllamaClientApi menggunakan penyuntikan dependensi. Misalnya, untuk mengambil objek konteks Anda dari layanan:

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

Tambahkan API Klien Ollama yang Diberi Kunci

Mungkin ada situasi di mana Anda ingin mendaftarkan beberapa instans IOllamaClientApi dengan nama koneksi yang berbeda. Untuk mendaftarkan klien Ollama yang berkunci, panggil metode AddKeyedOllamaClientApi:

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

Kemudian Anda dapat mengambil contoh IOllamaClientApi melalui injeksi ketergantungan. Misalnya, untuk mengambil koneksi dari layanan contoh:

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

Konfigurasi

Integrasi klien Ollama menyediakan beberapa pendekatan dan opsi konfigurasi untuk memenuhi persyaratan dan konvensi proyek Anda.

Menggunakan string koneksi

Saat menggunakan string koneksi dari bagian konfigurasi ConnectionStrings, Anda dapat memberikan nama string koneksi saat memanggil metode AddOllamaClientApi:

builder.AddOllamaClientApi("llama");

Kemudian string koneksi akan diambil dari bagian konfigurasi ConnectionStrings:

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

Integrasi dengan Microsoft.Extensions.AI

Pustaka Microsoft.Extensions.AI menyediakan abstraksi atas API klien Ollama, menggunakan antarmuka generik. OllamaSharp mendukung antarmuka ini, dan dapat didaftarkan menggunakan metode ekstensi AddOllamaSharpChatClient dan AddOllamaSharpEmbeddingGenerator. Metode-metode ini juga akan mendaftarkan instans IOllamaClientApi dengan kontainer injeksi dependensi, dan menyediakan versi berdasarkan kunci untuk beberapa instans.

builder.AddOllamaSharpChatClient("llama");

Setelah menambahkan IChatClient ke pembangun, Anda bisa mendapatkan instans IChatClient menggunakan penyuntikan dependensi. Misalnya, untuk mengambil objek konteks Anda dari layanan:

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

Lihat juga