.NET - Usando OllamaSharp com C#


   Neste artigo vou apresentar a biblioteca OllamaSharp para acessar LLMs de forma simples na plataforma NET.
O OllamaSharp é uma biblioteca .NET que nos permite usar modelos de linguagem (LLMs), como o LLaMA 3, de forma simples a partir de uma aplicação em C#.

Para mostrar o uso do OllamaSharp vamos acessar o LLM llama3.1 da Meta localmente.

O LLama 3.1 é uma das versões mais recente do modelo de linguagem desenvolvido pela Meta, projetado para compreender e gerar texto de maneira inteligente. Em teoria, o llama 3.1 rivaliza com os benchmarks de sistemas como ChatGPT, Copilot ou Gemini.

Por outro lado, o Ollama é uma ferramenta open-source que simplifica a execução de grandes modelos de linguagem (LLMs) localmente. Esses modelos incluem o LLaMA 3.1, Mistral, Gpt-oss,  deepseek-r1,  gemma3, phi3, etc.

E podemos usar o Ollama a partir de uma aplicação em C# de forma muito simples, utilizando o OllamaSharp que é um binding em C# para a API do Ollama, criado para facilitar a interação com o Ollama usando a plataforma .NET.

Pra isso você tem que baixar e instalar o Ollama localmente como eu mostro neste vídeo em meu canal do youtube:  Ollama + OpenWebUI - Seu ChatGPT pessoal e gratuito

A seguir basta baixar localmente o LLM llama3.1:latest usando o comando em um prompt de comando :  ollama pull llama3.1:latest

Com o seu ambiente configurado e com o LLM baixado podemos criar o projeto console.

Criando o projeto Console

Vamos criar um novo projeto usando o template Console usando o VS 2022 com o nome DemoOllamaSharp :

A seguir vamos instalar o pacote OllamaSharp no projeto:

dotnet add package OllamaSharp

Após isso vamos incluir o código abaixo na classe Program:

using OllamaSharp;
var uri = new Uri("http://localhost:11434");
var ollama = new OllamaApiClient(uri);
ollama.SelectedModel = "llama3.1:latest";
Console.WriteLine("\nAcessando o llama3.1 com OllamaSharp\n");
Console.WriteLine("prompt: Quem é você???\n");
Console.WriteLine("Tecle algo para ver a resposta !!!\n");
Console.ReadLine();
Console.WriteLine("Pensando...\n");
string prompt = "Quem é você???";
// Streaming de tokens
await foreach (var stream in ollama.GenerateAsync(prompt))
{
    Console.Write($"{stream!.Response}");
}
Console.WriteLine("\n--- Fim da resposta ---");
Console.ReadLine(); 

Executando o projeto teremo o seguinte resultado:

Muito simples, não é mesmo  !!!!

Para criar um chat interativo podemos alterar o código conforme abaixo:

using OllamaSharp;
var uri = new Uri("http://localhost:11434");
var ollama = new OllamaApiClient(uri);
ollama.SelectedModel = "llama3.1:latest";
Console.WriteLine("\n=== Acessando o modelo llama3.1 com OllamaSharp ===\n");
Console.WriteLine("Digite sua pergunta (ou 'sair' para encerrar):\n");
ConversationContext? context = null;
while (true)
{
    Console.Write("\nVocê: ");
    string prompt = Console.ReadLine()!;
    if (string.IsNullOrWhiteSpace(prompt))
        continue;
    if (prompt.Equals("sair", StringComparison.OrdinalIgnoreCase))
        break;
    Console.WriteLine("\nIA: Pensando...\n");
    // Exibe resposta em streaming (token por token)
    await foreach (var stream in ollama.GenerateAsync(prompt, context))
    {
        Console.Write(stream!.Response);
    }
    Console.WriteLine("\n--- Fim da resposta ---");
}

Executando teremos o resultado a seguir:

O OllamaSharp é Open Source e todo o código e documentação estão disponíveis no repositório do projeto em https://github.com/awaescher/OllamaSharp

E estamos conversados....

"Pois estes mudaram a verdade de Deus em mentira, e honraram e serviram mais a criatura do que o Criador, que é bendito eternamente. Amém."
Romanos 1:25

Referências:


José Carlos Macoratti