Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Включает: интеграция хостинга — и —
Client Интеграция
Note
Эта интеграция является частью набора средств сообщества
Ollama — это мощная языковая модель с открытым исходным кодом, которую можно использовать для создания текста на основе заданного запроса. Интеграция .NET.NET Aspire Ollama предоставляет способ размещения моделей Ollama с помощью docker.io/ollama/ollama
образа контейнера и доступа к ним через клиент OllamaSharp .
Hosting integration
Модели интеграции Ollama представляют собой сервер Ollama как тип OllamaResource
и обеспечивают возможность добавления моделей на сервер с использованием метода расширения AddModel
, который представляет модель как тип OllamaModelResource
. Чтобы получить доступ к этим типам и API, которые позволяют добавить пакет
dotnet add package CommunityToolkit.Aspire.Hosting.Ollama
Дополнительные сведения см. в разделе dotnet add package или Управление зависимостями пакетов в приложениях .NET.
Добавление ресурса 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.
Important
Не закрывайте приложение оркестрации .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 Desktop.
Проверка работоспособности интеграции хостинга
Интеграция размещения Ollama автоматически добавляет проверку состояния для сервера Ollama и ресурсов модели. Для сервера Ollama добавляется проверка работоспособности, чтобы убедиться, что запущен сервер Ollama и что подключение можно установить к нему. Для ресурсов модели Ollama добавляется проверка работоспособности, чтобы убедиться, что модель запущена и доступна, то есть ресурс будет помечен как неисправный, пока модель не будет загружена.
Поддержка Open WebUI
Интеграция Ollama также предоставляет поддержку запуска Open WebUI и взаимодействия с контейнером Ollama.
var ollama = builder.AddOllama("ollama")
.AddModel("llama3")
.WithOpenWebUI();
интеграция Client
Чтобы приступить к .NET.NET 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...
}
Configuration
Интеграция клиента Ollama предоставляет несколько подходов к конфигурации и вариантов для удовлетворения требований и соглашений проекта.
Используйте строку подключения
При использовании строки подключения из раздела конфигурации ConnectionStrings
можно указать имя строки подключения при вызове метода AddOllamaClientApi
:
builder.AddOllamaClientApi("llama");
Затем строка подключения будет получена из раздела конфигурации ConnectionStrings
:
{
"ConnectionStrings": {
"llama": "Endpoint=http//localhost:1234;Model=llama3"
}
}
Интеграция с Microsoft.Extensions.AI
Пакет 📦 NuGet Microsoft.Extensions.AI предоставляет абстракции по клиентскому API Ollama с помощью универсальных интерфейсов. OllamaSharp поддерживает эти интерфейсы, и их можно зарегистрировать путем цепочки IChatClient методов регистрации или IEmbeddingGenerator<TInput,TEmbedding> методов регистрации к методу AddOllamaClientApi
.
Чтобы зарегистрировать методAddOllamaClientApi
, выполните следующую IChatClient
цепочкуAddChatClient
:
builder.AddOllamaClientApi("llama")
.AddChatClient();
Аналогичным образом, чтобы зарегистрировать метод, выполните следующую IEmbeddingGenerator
цепочку AddEmbeddingGenerator
:
builder.AddOllamaClientApi("llama")
.AddEmbeddingGenerator();
После добавления IChatClient
в конструктор, можно получить экземпляр IChatClient
через инъекцию зависимостей. Например, чтобы получить объект контекста из службы:
public class ExampleService(IChatClient chatClient)
{
// Use chat client...
}
Добавление ключей Microsoft.Extensions.AI клиентов
Могут возникнуть ситуации, когда требуется зарегистрировать несколько экземпляров клиента ИИ с разными именами подключений. Чтобы зарегистрировать ключи клиентов ИИ, используйте ключевые версии методов регистрации:
builder.AddOllamaClientApi("chat")
.AddKeyedChatClient("chat");
builder.AddOllamaClientApi("embeddings")
.AddKeyedEmbeddingGenerator("embeddings");
Затем можно получить экземпляры клиента ИИ с помощью внедрения зависимостей. Например, чтобы получить клиенты из примера службы:
public class ExampleService(
[FromKeyedServices("chat")] IChatClient chatClient,
[FromKeyedServices("embeddings")] IEmbeddingGenerator<string, Embedding<float>> embeddingGenerator)
{
// Use AI clients...
}
See also
.NET Aspire