integrasi Ollama .NET.NET Aspire Community Toolkit
Termasuk:integrasi Hosting dan
Client integrasi
Nota
Integrasi ini adalah bagian dari dan
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
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
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
-
Ollama - WebUI Terbuka
- GitHub reposit Community Toolkit
-
OllamaSharp - Microsoft.Extensions.AI
.NET Aspire