
Ollamasharp為Ollama API提供了.NET綁定,從而簡化了與本地和遠程Ollama的相互作用。
✅支持Microsoft.extensions.ai和Microsoft語義內核
Ollamasharp將每個Ollama API端點包裹在完全支持響應流的等待方法中。
以下列表顯示了一些簡單的代碼示例。
ℹ嘗試本存儲庫中包含的Full精選演示應用程序
// set up the client
var uri = new Uri ( " http://localhost:11434 " ) ;
var ollama = new OllamaApiClient ( uri ) ;
// select a model which should be used for further operations
ollama . SelectedModel = " llama3.1:8b " ; var models = await ollama . ListLocalModelsAsync ( ) ; await foreach ( var status in ollama . PullModelAsync ( " llama3.1:405b " ) )
Console . WriteLine ( $" { status . Percent } % { status . Status } " ) ; await foreach ( var stream in ollama . GenerateAsync ( " How are you today? " ) )
Console . Write ( stream . Response ) ; var chat = new Chat ( ollama ) ;
while ( true )
{
var message = Console . ReadLine ( ) ;
await foreach ( var answerToken in chat . SendAsync ( message ) )
Console . Write ( answerToken ) ;
}
// messages including their roles and tool calls will automatically be tracked within the chat object
// and are accessible via the Messages property Microsoft建立了一個抽像庫,以簡化不同AI提供商的使用。如果您打算構建可能使用不同提供商(例如Chatgpt,Claude和Local Models)使用Ollama的應用程序的應用程序,這是一個非常有趣的概念。
我鼓勵您閱讀他們的接入介紹Microsoft.extensions.ai預覽 - .NET的統一AI構建塊。
Ollamasharp是其IChatClient和IEmbeddingGenerator的第一個完整實現,它可以像其他所有聊天提供商一樣使用Ollama。
為此,只需將OllamaApiClient用作IChatClient而不是IOllamaApiClient 。
// install package Microsoft.Extensions.AI.Abstractions
private static IChatClient CreateChatClient ( Arguments arguments )
{
if ( arguments . Provider . Equals ( " ollama " , StringComparison . OrdinalIgnoreCase ) )
return new OllamaApiClient ( arguments . Uri , arguments . Model ) ;
else
return new OpenAIChatClient ( new OpenAI . OpenAIClient ( arguments . ApiKey ) , arguments . Model ) ; // ChatGPT or compatible
} 筆記
IOllamaApiClient提供了許多Ollama特定的方法,這些方法IChatClient和IEmbeddingGenerator Miss。因為這些是抽象的,所以IChatClient和IEmbeddingGenerator永遠不會實施完整的Ollama API規範。但是, OllamaApiClient實現了三個接口:本機IOllamaApiClient和Microsoft IChatClient和IEmbeddingGenerator<string, Embedding<float>>它允許您隨時隨地將其施放到這兩個接口中的任何一個中。
圖標和名稱是從驚人的Ollama項目中重新使用的。
我要感謝所有花時間改善Ollamasharp的貢獻者。首先,米利·坦(Mili-Tan)總是與Ollamasharp保持與Ollama API同步。 ❤