.NET .NET Aspire Community Toolkit Ollama tümleştirmesi
Şunları içerir:Barındırma tümleştirmesi ve
Client tümleştirme
Not
Bu tümleştirme, .NET.NET Aspire Topluluk Araç Seti'nin bir parçasıdır ve , .NET.NET Aspire ekibi tarafından resmi olarak desteklenmez.
Ollama, belirli bir istem temelinde metin oluşturmak için kullanılabilecek güçlü ve açık kaynak bir dil modelidir.
.NET
.NET Aspire Ollama tümleştirmesi, docker.io/ollama/ollama
kapsayıcı görüntüsü kullanarak Ollama modellerini barındırmak ve OllamaSharpclientaracılığıyla bunlara erişmek için bir yol sağlar.
Barındırma entegrasyonu
Ollama barındırma tümleştirmesi, Ollama server'ı OllamaResource
türünde model olarak oluşturur ve AddModel
uzantı yöntemini kullanarak server'ye model ekleyebilme imkanı tanır; bu da modeli OllamaModelResource
türünde temsil eder. Bu türlere ve API'lere erişmek ve uygulama konağı projesinde 📦 CommunityToolkit,Aspire. Hosting.Ollama NuGet paketlerini eklemek için.
dotnet add package CommunityToolkit.Aspire.Hosting.Ollama
Daha fazla bilgi için bkz. dotnet add package veya .NET uygulamalarında paket bağımlılıklarını yönetme.
Ollama için yeni kaynak ekle
Uygulama ana bilgisayarı projesinde, Ollama kapsayıcısını uygulama oluşturucusuna eklemek için AddOllama
uzantı yöntemini kullanarak Ollama tümleştirmesini kaydedin ve kullanın. Ardından, AddModel
uzantısı yöntemini kullanarak kapsayıcı başlatıldığında indirilip çalıştırılan kapsayıcıya model ekleyebilirsiniz.
var builder = DistributedApplication.CreateBuilder(args);
var ollama = builder.AddOllama("ollama");
var phi35 = ollama.AddModel("phi3.5");
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(phi35);
Alternatif olarak, Yüz Tanıma model hub'ından bir model kullanmak istiyorsanız AddHuggingFaceModel
uzantısı yöntemini kullanabilirsiniz.
var llama = ollama.AddHuggingFaceModel("llama", "bartowski/Llama-3.2-1B-Instruct-GGUF:IQ4_XS");
.NET
.NET Aspire, önceki örnekte docker.io/ollama/ollama
görüntüsüyle gösterildiği gibi uygulama konağına bir kapsayıcı görüntüsü eklediğinde, yerel makinenizde yeni bir Ollama örneği oluşturur. Daha fazla bilgi için, bkz Konteyner kaynak yaşam döngüsü.
LLM'yi indirme
Bu tümleştirme için Ollama kapsayıcısı ilk kez çalıştığında, yapılandırılan LLM'leri indirir. Bu indirme işleminin ilerleme durumu, .NET.NET Aspire panosundaki bu tümleştirmenin State sütununda görüntülenir.
Önemli
İndirme tamamlanana kadar .NET.NET Aspire düzenleme uygulamasını açık tutun, aksi takdirde indirme iptal edilir.
LLM'yi önbelleğe alma
Ollama'nın çalıştığı kapsayıcıya bir veya daha fazla LLM indirilir ve varsayılan olarak bu kapsayıcı kısa ömürlüdür. Kapsayıcı yeniden başlatmalarında bir veya daha fazla LLM'yi kalıcı hale getirmek istiyorsanız, WithDataVolume
yöntemini kullanarak bir hacmi kapsayıcıya bağlamanız gerekir.
var ollama = builder.AddOllama("ollama")
.WithDataVolume();
var llama = ollama.AddModel("llama3");
Kullanılabilir olduğunda GPU'ları kullanma
Ollama'nın çalıştığı kapsayıcıya bir veya daha fazla LLM indirilir ve varsayılan olarak bu kapsayıcı CPU üzerinde çalışır. Kapsayıcıyı GPU'da çalıştırmanız gerekiyorsa, kapsayıcı çalışma zamanı birleştirmelerine bir parametre geçirmeniz gerekir.
var ollama = builder.AddOllama("ollama")
.AddModel("llama3")
.WithContainerRuntimeArgs("--gpus=all");
Daha fazla bilgi için bkz.
Barındırma tümleştirme sağlık durumu denetimleri
Ollama barındırma tümleştirmesi, Ollama server ve model kaynakları için otomatik olarak bir sistem durumu denetimi ekler. Ollama serveriçin, Ollama server'in çalıştığını ve bağlantı kurulabildiğini doğrulamak amacıyla bir sağlık kontrolü eklenir. Ollama modeli kaynakları için, modelin çalıştığını ve modelin kullanılabilir olduğunu doğrulamak için bir sistem durumu denetimi eklenir, yani kaynak, model indirilene kadar iyi durumda değil olarak işaretlenir.
WebUI desteğini açma
Ollama tümleştirmesi, Open WebUI çalıştırma ve Ollama kapsayıcısıyla iletişim kurma desteği de sağladı.
var ollama = builder.AddOllama("ollama")
.AddModel("llama3")
.WithOpenWebUI();
Client entegrasyonu
.NET .NET Aspire OllamaSharp tümleştirmesini kullanmaya başlamak için 📦 CommunityToolkit'i yükleyin.AspireOllamaSharp NuGet paketini clientkullanan projede, yani Ollama clientkullanan uygulamanın projesinde.
dotnet add package CommunityToolkit.Aspire.OllamaSharp
Ollama client API'sini ekle
clientkullanan projenizin Program.cs dosyasında, bağımlılık enjeksiyonu kapsayıcısı aracılığıyla kullanmak üzere bir IOllamaClientApi
kaydetmek için AddOllamaClientApi
uzantısını çağırın. Uygulama sunucusunda sağlanan ve clientkullanan projede başvurulan kaynak bir OllamaModelResource
ise, AddOllamaClientApi
yöntemi modeli IOllamaClientApi
için varsayılan model olarak kaydedecektir.
builder.AddOllamaClientApi("llama3");
Oluşturucuya IOllamaClientApi
ekledikten sonra bağımlılık ekleme kullanarak IOllamaClientApi
örneğini alabilirsiniz. Örneğin, hizmetten bağlam nesnenizi almak için:
public class ExampleService(IOllamaClientApi ollama)
{
// Use ollama...
}
Anahtarlı Ollama client API'sini ekle
Farklı bağlantı adlarına sahip birden çok IOllamaClientApi
örneğini kaydetmek istediğiniz durumlar olabilir. Anahtarlı Ollama istemcilerini kaydetmek için AddKeyedOllamaClientApi
yöntemini çağırın:
builder.AddKeyedOllamaClientApi(name: "chat");
builder.AddKeyedOllamaClientApi(name: "embeddings");
Daha sonra bağımlılık ekleme kullanarak IOllamaClientApi
örneklerini alabilirsiniz. Örneğin, bağlantıyı örnek bir hizmetten almak için:
public class ExampleService(
[FromKeyedServices("chat")] IOllamaClientApi chatOllama,
[FromKeyedServices("embeddings")] IOllamaClientApi embeddingsOllama)
{
// Use ollama...
}
Konfigürasyon
Ollama client tümleştirmesi, projenizin gereksinimlerini ve kurallarını karşılamak için birden çok yapılandırma yaklaşımı ve seçeneği sağlar.
Bağlantı dizesi kullanma
ConnectionStrings
yapılandırma bölümünden bir bağlantı dizesi kullanırken, AddOllamaClientApi
yöntemini çağırırken bağlantı dizesinin adını sağlayabilirsiniz:
builder.AddOllamaClientApi("llama");
Ardından bağlantı dizesi ConnectionStrings
yapılandırma bölümünden alınır:
{
"ConnectionStrings": {
"llama": "Endpoint=http//localhost:1234;Model=llama3"
}
}
Microsoft.Extensions.AI
ile tümleştirme
Microsoft.Extensions.AI kitaplığı, genel arabirimleri kullanarak Ollama client API'sinin üzerinde bir soyutlama sağlar. OllamaSharp bu arabirimleri destekler ve AddOllamaSharpChatClient
ve AddOllamaSharpEmbeddingGenerator
uzantı yöntemleri kullanılarak kaydedilebilir. Bu yöntemler ayrıca IOllamaClientApi
örneklerini bağımlılık ekleme kapsayıcısıyla kaydeder ve birden çok örnek için anahtarlı sürümlere sahiptir.
builder.AddOllamaSharpChatClient("llama");
Oluşturucuya IChatClient
ekledikten sonra bağımlılık ekleme kullanarak IChatClient
örneğini alabilirsiniz. Örneğin, hizmetten bağlam nesnenizi almak için:
public class ExampleService(IChatClient chatClient)
{
// Use chat client...
}
Ayrıca bkz.
.NET Aspire