Ollama Delphi API-client

· Componenten

Met Ollama draai je eenvoudig grote taalmodellen lokaal op je eigen hardware — geen cloudafhankelijkheid, geen API-kosten en volledige dataprivacy. Voor Delphi-ontwikkelaars die lokale AI-mogelijkheden willen integreren in hun toepassingen biedt sgcWebSockets TsgcHTTP_API_Ollama — een native component dat de volledige Ollama-API verpakt in schone, type-veilige Delphi-code.

Of je nu gevoelige data on-premises wilt houden, offline-capabele AI-functies wilt bouwen, je eigen modelbibliotheek wilt beheren of embeddings wilt genereren voor lokale vectorzoekopdrachten, dit component geeft je directe toegang tot elke Ollama-functie. Geen cloudaccounts. Geen terugkerende API-kosten. Plaats het component, wijs het naar je Ollama-instantie en begin met bouwen.

Volledige API-dekking

Elke belangrijke functie van de Ollama-API wordt out-of-the-box ondersteund.

Chat Completions
Verstuur berichten met systeemprompts, ontvang antwoorden synchroon of gestreamd. Volledige controle over temperature, top-p en stop sequences.
Realtime streaming
Stream antwoorden token-voor-token met Server-Sent Events. Bouw responsieve UI's met lokaal draaiende modellen.
Modelbeheer
Pull, toon details, toon tags en verwijder modellen programmatisch. Volledig lifecycle-beheer vanuit Delphi-code.
Embeddings
Genereer vector embeddings lokaal. Krachtige semantische zoekopdrachten, clustering en classificatie zonder data naar de cloud te sturen.
Self-hosted / configureerbare host
Verbind met elke Ollama-instantie via een configureerbare host-URL. Draai lokaal, op een LAN-server of in een private cloud.
Ingebouwde retry en logging
Automatische retry bij tijdelijke fouten met configureerbare pogingen en wachttijden. Volledige request/response-logging voor debugging.

Aan de slag

Integreer Ollama in minder dan een minuut in je Delphi-project. Plaats het component, configureer de host en verstuur je eerste bericht.

// 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;

Geen API-sleutel nodig. Bij verbinding met een lokale Ollama-instantie is geen authenticatie nodig. Voor remote of beveiligde deployments kun je optioneel een API-sleutel instellen via OllamaOptions.ApiKey.

Chat Completions en streaming

De Chat Completions-API werkt met elk model dat je in je Ollama-instantie hebt gepulld. Verstuur tekst met optionele systeemprompts en ontvang antwoorden synchroon of in realtime gestreamd.

Systeemprompts

Stuur het gedrag van het model door een systeemprompt te geven die de context, persoonlijkheid of beperkingen voor het gesprek instelt.

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."

Realtime streaming

Voor responsieve gebruikersinterfaces stream je het antwoord van het model token-voor-token met 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;

Geavanceerde typed API

Voor volledige controle over request-parameters — temperature, top-p, stop sequences, max tokens — gebruik je de typed request- en response-klassen.

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;

Modelbeheer

Beheer je volledige lokale modelbibliotheek vanuit Delphi-code. Pull nieuwe modellen, inspecteer hun details, toon beschikbare tags en verwijder modellen die je niet meer nodig hebt — allemaal programmatisch.

Een model pullen

// Download a model from the Ollama registry
Ollama._PullModel('llama3');

Modeldetails tonen

// Get detailed information about a model
vDetails := Ollama._ShowModel('llama3');
ShowMessage(vDetails);

Modellen en tags opvragen

// 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;

Een model verwijderen

// Remove a model from the local system
Ollama._DeleteModel('old-model:latest');

Embeddings

Genereer vector embeddings lokaal met elk embedding-capabel model. Embeddings maken semantische zoekopdrachten, documentclustering en classificatie mogelijk — allemaal zonder data naar externe servers te sturen.

// Generate embeddings locally
var
  vEmbedding: string;
begin
  vEmbedding := Ollama._CreateEmbeddings(
    'nomic-embed-text',
    'Delphi is a powerful programming language.');
  ShowMessage(vEmbedding);
end;

Gebruik de typed API voor volledige controle om toegang te krijgen tot de ruwe embedding-waarden.

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;

Dataprivacy. Met Ollama verlaat je data nooit je netwerk. Dit maakt het ideaal voor gereguleerde sectoren (gezondheidszorg, financiën, overheid) waar dataresidentie en privacy kritieke vereisten zijn.

Configuratie en opties

Stem het componentgedrag fijn af met uitgebreide configuratieopties.

Eigenschap Beschrijving
OllamaOptions.Host Ollama server-URL (bijv. http://localhost:11434)
OllamaOptions.ApiKey Optionele API-sleutel voor beveiligde deployments
HttpOptions.ReadTimeout HTTP read timeout in milliseconden (standaard: 60000)
LogOptions.Enabled Schakel request/response-logging in
RetryOptions.Enabled Automatische retry bij tijdelijke fouten
RetryOptions.Retries Maximum aantal retry-pogingen (standaard: 3)
RetryOptions.Wait Wachttijd tussen retries in milliseconden (standaard: 3000)

Ondersteunde modellen

Ollama ondersteunt honderden open-sourcemodellen. Hier zijn enkele populaire keuzes:

Model Parameters Geschikt voor
llama3 8B / 70B Algemene chat, redeneren
mistral 7B Snelle, efficiënte tekstgeneratie
codellama 7B / 13B / 34B Codegeneratie en -analyse
nomic-embed-text 137M Tekst-embeddings, semantische zoekopdrachten

Geen kosten, volledige controle. Draai AI-modellen op je eigen hardware zonder kosten per token. Gecombineerd met de ingebouwde retry-logica en logging van sgcWebSockets krijg je een productieklare lokale AI-integratie voor Delphi.