.NET
- Usando
OllamaSharp com C#
|
Neste artigo vou apresentar a biblioteca OllamaSharp para acessar LLMs de forma simples na plataforma NET. |
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:
C# - Tasks x Threads. Qual a diferença
DateTime - Macoratti.net
Null o que é isso ? - Macoratti.net
Formatação de data e hora para uma cultura ...
C# - Calculando a diferença entre duas datas
NET - Padrão de Projeto - Null Object Pattern
C# - Fundamentos : Definindo DateTime como Null ...
C# - Os tipos Nullable (Tipos Anuláveis)