Ollama facilita a execução de grandes modelos de linguagem localmente no seu próprio hardware — sem dependência de nuvem, sem custos de API e com total privacidade dos dados. Para desenvolvedores Delphi que desejam integrar capacidades de IA local em suas aplicações, o sgcWebSockets oferece TsgcHTTP_API_Ollama — um componente nativo que encapsula toda a API Ollama com código Delphi limpo e tipado.
Seja para manter dados sensíveis on-premises, criar recursos de IA offline, gerenciar sua própria biblioteca de modelos ou gerar embeddings para busca vetorial local, este componente oferece acesso direto a todos os recursos do Ollama. Sem contas na nuvem. Sem taxas recorrentes de API. Basta soltar o componente, apontá-lo para sua instância Ollama e começar a construir.
Cobertura completa da API
Todos os principais recursos da API Ollama são suportados de fábrica.
|
Chat Completions Envie mensagens com prompts de sistema, receba respostas de forma síncrona ou em streaming. Controle total sobre temperatura, top-p e sequências de parada. |
Streaming em tempo real Transmita respostas token por token usando Server-Sent Events. Construa interfaces responsivas com modelos executando localmente. |
Gerenciamento de modelos Baixe, exiba detalhes, liste tags e exclua modelos programaticamente. Gerenciamento completo do ciclo de vida via código Delphi. |
|
Embeddings Gere embeddings vetoriais localmente. Alimente busca semântica, clustering e classificação sem enviar dados para a nuvem. |
Auto-hospedado / Host configurável Conecte-se a qualquer instância Ollama via URL de host configurável. Execute localmente, em um servidor LAN ou em nuvem privada. |
Retry e logging integrados Retry automático em falhas transitórias com tentativas e intervalos configuráveis. Log completo de requisições/respostas para depuração. |
Primeiros passos
Integre o Ollama ao seu projeto Delphi em menos de um minuto. Solte o componente, configure o host e envie sua primeira mensagem.
// Create the component and configure the host
var
Ollama: TsgcHTTP_API_Ollama;
vResponse: string;
begin
Ollama := TsgcHTTP_API_Ollama.Create(nil);
Try
Ollama.OllamaOptions.Host := 'http://localhost:11434';
// Send a simple message to a local model
vResponse := Ollama._CreateMessage(
'llama3', 'Hello, Ollama!');
ShowMessage(vResponse);
Finally
Ollama.Free;
End;
end;
Sem chave de API. Ao conectar-se a uma instância Ollama local, nenhuma autenticação é necessária. Para implantações remotas ou seguras, você pode opcionalmente definir uma chave de API via OllamaOptions.ApiKey.
Chat Completions e Streaming
A API Chat Completions funciona com qualquer modelo que você tenha baixado para sua instância Ollama. Envie texto com prompts de sistema opcionais e receba respostas de forma síncrona ou em streaming em tempo real.
Prompts de sistema
Controle o comportamento do modelo fornecendo um prompt de sistema que define o contexto, a personalidade ou as restrições da conversa.
vResponse := Ollama._CreateMessageWithSystem(
'llama3',
'You are a helpful assistant that responds in Spanish.',
'What is the capital of France?');
// Returns: "La capital de Francia es París."
Streaming em tempo real
Para interfaces de usuário responsivas, transmita a resposta do modelo token por token usando Server-Sent Events.
// Enable streaming via SSE
Ollama.OnHTTPAPISSE := OnSSEEvent;
Ollama._CreateMessageStream('llama3',
'Write a short poem about Delphi programming.');
procedure TForm1.OnSSEEvent(Sender: TObject;
const aEvent, aData: string; var Cancel: Boolean);
begin
// aData: JSON payload with generated content
Memo1.Lines.Add(aData);
end;
API tipada avançada
Para controle total sobre os parâmetros da requisição — temperatura, top-p, sequências de parada, máximo de tokens — use as classes tipadas de requisição e resposta.
var
oRequest: TsgcOllamaClass_Request_ChatCompletion;
oMessage: TsgcOllamaClass_Request_Message;
oResponse: TsgcOllamaClass_Response_ChatCompletion;
begin
oRequest := TsgcOllamaClass_Request_ChatCompletion.Create;
Try
oRequest.Model := 'llama3';
oRequest.MaxTokens := 2048;
oRequest.Temperature := 0.7;
oMessage := TsgcOllamaClass_Request_Message.Create;
oMessage.Role := 'user';
oMessage.Content := 'Explain quantum computing in simple terms.';
oRequest.Messages.Add(oMessage);
oResponse := Ollama.CreateMessage(oRequest);
Try
if Length(oResponse.Choices) > 0 then
ShowMessage(oResponse.Choices[0].MessageContent);
Finally
oResponse.Free;
End;
Finally
oRequest.Free;
End;
end;
Gerenciamento de modelos
Gerencie toda a sua biblioteca de modelos local via código Delphi. Baixe novos modelos, inspecione seus detalhes, liste tags disponíveis e exclua modelos que não são mais necessários — tudo de forma programática.
Baixar um modelo
// Download a model from the Ollama registry
Ollama._PullModel('llama3');
Exibir detalhes do modelo
// Get detailed information about a model
vDetails := Ollama._ShowModel('llama3');
ShowMessage(vDetails);
Listar modelos e tags
// List all models via OpenAI-compatible endpoint
vModels := Ollama._GetModels;
// List model tags with detailed metadata (name, size, digest)
vTags := Ollama._GetTags;
// Typed API: access tag properties directly
var
oTags: TsgcOllamaClass_Response_Tags;
i: Integer;
begin
oTags := Ollama.GetTags;
Try
for i := 0 to Length(oTags.Models) - 1 do
Memo1.Lines.Add(Format('%s (%d bytes)',
[oTags.Models[i].Name, oTags.Models[i].Size]));
Finally
oTags.Free;
End;
end;
Excluir um modelo
// Remove a model from the local system
Ollama._DeleteModel('old-model:latest');
Embeddings
Gere embeddings vetoriais localmente usando qualquer modelo com suporte a embeddings. Os embeddings alimentam busca semântica, clustering de documentos e classificação — tudo sem enviar dados para servidores externos.
// Generate embeddings locally
var
vEmbedding: string;
begin
vEmbedding := Ollama._CreateEmbeddings(
'nomic-embed-text',
'Delphi is a powerful programming language.');
ShowMessage(vEmbedding);
end;
Para controle total, use a API tipada para acessar os valores de embedding brutos.
var
oResponse: TsgcOllamaClass_Response_Embeddings;
i: Integer;
begin
oResponse := Ollama.CreateEmbeddings(
'nomic-embed-text',
'Delphi is a powerful programming language.');
Try
for i := 0 to oResponse.EmbeddingCount - 1 do
Memo1.Lines.Add(FloatToStr(oResponse.GetEmbeddingValue(i)));
Finally
oResponse.Free;
End;
end;
Privacidade dos dados. Com o Ollama, seus dados nunca saem da sua rede. Isso o torna ideal para setores regulados (saúde, finanças, governo) onde residência e privacidade dos dados são requisitos críticos.
Configuração e opções
Ajuste o comportamento do componente com opções de configuração abrangentes.
| Propriedade | Descrição |
|---|---|
OllamaOptions.Host |
URL do servidor Ollama (ex.: http://localhost:11434) |
OllamaOptions.ApiKey |
Chave de API opcional para implantações seguras |
HttpOptions.ReadTimeout |
Timeout de leitura HTTP em milissegundos (padrão: 60000) |
LogOptions.Enabled |
Habilitar log de requisições/respostas |
RetryOptions.Enabled |
Retry automático em falhas transitórias |
RetryOptions.Retries |
Número máximo de tentativas de retry (padrão: 3) |
RetryOptions.Wait |
Tempo de espera entre retries em milissegundos (padrão: 3000) |
Modelos suportados
O Ollama suporta centenas de modelos de código aberto. Veja algumas escolhas populares:
| Modelo | Parâmetros | Ideal para |
|---|---|---|
llama3 |
8B / 70B | Chat de propósito geral, raciocínio |
mistral |
7B | Geração de texto rápida e eficiente |
codellama |
7B / 13B / 34B | Geração e análise de código |
nomic-embed-text |
137M | Embeddings de texto, busca semântica |
Custo zero, controle total. Execute modelos de IA no seu próprio hardware sem cobranças por token. Combinado com a lógica de retry e logging integrados do sgcWebSockets, você obtém integração de IA local pronta para produção em Delphi.
