Интеграция .NET.NET Aspire Ollama Community Toolkit
Включает:интеграция хостинга и
интеграцияClient
Заметка
Эта интеграция является частью набора средств сообщества
Ollama — это мощная языковая модель с открытым исходным кодом, которую можно использовать для создания текста на основе заданного запроса. Интеграция .NET.NET Aspire Ollama предоставляет способ размещения моделей Ollama с помощью образа контейнера docker.io/ollama/ollama
и доступа к ним через клиент OllamaSharp.
Интеграция хостинга
Модели интеграции Ollama представляют собой сервер Ollama как тип OllamaResource
и обеспечивают возможность добавления моделей на сервер с использованием метода расширения AddModel
, который представляет модель как тип OllamaModelResource
. Чтобы получить доступ к этим типам и API, которые позволяют добавить пакет
dotnet add package CommunityToolkit.Aspire.Hosting.Ollama
Дополнительные сведения см. в статье dotnet add package or Manage package dependencies in .NET applications.
Добавление ресурса Ollama
В проекте хоста приложения зарегистрируйте и внедрите интеграцию Ollama с помощью метода расширения AddOllama
, чтобы добавить контейнер 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");
Использование графических процессоров при наличии
Один или несколько LLM загружаются в контейнер, из которого осуществляется запуск Ollama, и по умолчанию этот контейнер работает на центральном процессоре. Если необходимо запустить контейнер в GPU, необходимо передать параметр в args среды выполнения контейнера.
var ollama = builder.AddOllama("ollama")
.AddModel("llama3")
.WithContainerRuntimeArgs("--gpus=all");
Для получения дополнительной информации см. раздел поддержка GPU в настольной системе Docker.
Проверка работоспособности интеграции хостинга
Интеграция размещения Ollama автоматически добавляет проверку состояния для сервера Ollama и ресурсов модели. Для сервера Ollama добавляется проверка работоспособности, чтобы убедиться, что запущен сервер Ollama и что подключение можно установить к нему. Для ресурсов модели Ollama добавляется проверка работоспособности, чтобы убедиться, что модель запущена и доступна, то есть ресурс будет помечен как неисправный, пока модель не будет загружена.
Поддержка Open WebUI
Интеграция Ollama также предоставляет поддержку запуска Open WebUI и взаимодействия с контейнером Ollama.
var ollama = builder.AddOllama("ollama")
.AddModel("llama3")
.WithOpenWebUI();
интеграция Client
Чтобы приступить к работе с внедрением .NET.NET Aspire OllamaSharp, установите 📦 CommunityToolkit.Aspire.OllamaSharp пакет NuGet в проекте, использующем клиент, то есть для приложения, которое использует клиент Ollama.
dotnet add package CommunityToolkit.Aspire.OllamaSharp
Добавить API клиента Ollama
В файле Program.cs проекта, используемого клиентом, вызовите расширение AddOllamaClientApi
, чтобы зарегистрировать IOllamaClientApi
для использования с помощью контейнера внедрения зависимостей. Если ресурс, предоставленный в узле приложения и на который ссылается проект, используемый клиентом, является OllamaModelResource
, метод AddOllamaClientApi
будет регистрировать модель в качестве модели по умолчанию для IOllamaClientApi
.
builder.AddOllamaClientApi("llama3");
После добавления IOllamaClientApi
в конструктор, можно получить экземпляр IOllamaClientApi
через инъекцию зависимостей. Например, чтобы получить объект контекста из службы:
public class ExampleService(IOllamaClientApi ollama)
{
// Use ollama...
}
Добавление api клиента Ollama с ключом
Могут возникнуть ситуации, когда может потребоваться зарегистрировать несколько экземпляров 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 предоставляет несколько подходов к конфигурации и вариантов для удовлетворения требований и соглашений проекта.
Используйте строку подключения
При использовании строки подключения из раздела конфигурации ConnectionStrings
можно указать имя строки подключения при вызове метода AddOllamaClientApi
:
builder.AddOllamaClientApi("llama");
Затем строка подключения будет получена из раздела конфигурации ConnectionStrings
:
{
"ConnectionStrings": {
"llama": "Endpoint=http//localhost:1234;Model=llama3"
}
}
Интеграция с Microsoft.Extensions.AI
Библиотека Microsoft.Extensions.AI предоставляет абстракцию для клиентского API Ollama, используя универсальные интерфейсы. OllamaSharp поддерживает эти интерфейсы, и их можно зарегистрировать с помощью методов расширения AddOllamaSharpChatClient
и AddOllamaSharpEmbeddingGenerator
. Эти методы также регистрируют экземпляры IOllamaClientApi
в контейнере внедрения зависимостей и имеют версии с ключами для нескольких экземпляров.
builder.AddOllamaSharpChatClient("llama");
После добавления IChatClient
в конструктор, можно получить экземпляр IChatClient
через инъекцию зависимостей. Например, чтобы получить объект контекста из службы:
public class ExampleService(IChatClient chatClient)
{
// Use chat client...
}
См. также
.NET Aspire