Ollama-API-Client für Delphi

· Komponenten

Mit Ollama kannst du Large Language Models einfach lokal auf deiner eigenen Hardware betreiben — ohne Cloud-Abhängigkeit, ohne API-Kosten und mit vollständigem Datenschutz. Für Delphi-Entwickler, die lokale KI-Funktionen in ihre Anwendungen integrieren möchten, bietet sgcWebSockets TsgcHTTP_API_Ollama — eine native Komponente, die die gesamte Ollama-API mit sauberem, typsicherem Delphi-Code kapselt.

Egal ob du sensible Daten on-premises halten, offline-fähige KI-Funktionen entwickeln, deine eigene Modellbibliothek verwalten oder Embeddings für lokale Vektorsuche erzeugen willst – diese Komponente gibt dir direkten Zugriff auf jede Ollama-Funktion. Keine Cloud-Konten. Keine wiederkehrenden API-Gebühren. Lege einfach die Komponente ab, richte sie auf deine Ollama-Instanz und leg los.

Vollständige API-Abdeckung

Alle wichtigen Funktionen der Ollama-API werden von Haus aus unterstützt.

Chat Completions
Sende Nachrichten mit System-Prompts und empfange Antworten synchron oder gestreamt. Volle Kontrolle über Temperature, Top-p und Stop-Sequenzen.
Echtzeit-Streaming
Streame Antworten Token für Token über Server-Sent Events. Baue reaktionsschnelle UIs mit lokal laufenden Modellen.
Modellverwaltung
Modelle programmatisch pullen, Details anzeigen, Tags auflisten und löschen. Vollständiges Lifecycle-Management aus Delphi-Code.
Embeddings
Erzeuge Vektor-Embeddings lokal. Treibe semantische Suche, Clustering und Klassifikation an, ohne Daten in die Cloud zu senden.
Selbst gehostet / konfigurierbarer Host
Verbinde dich mit jeder Ollama-Instanz über eine konfigurierbare Host-URL. Lass sie lokal, auf einem LAN-Server oder in einer privaten Cloud laufen.
Integriertes Retry & Logging
Automatische Wiederholversuche bei vorübergehenden Fehlern mit konfigurierbaren Versuchen und Wartezeiten. Vollständiges Request-/Response-Logging zum Debuggen.

Erste Schritte

Integriere Ollama in unter einer Minute in dein Delphi-Projekt. Lege die Komponente ab, konfiguriere den Host und sende deine erste Nachricht.

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

Kein API-Key erforderlich. Wenn du dich mit einer lokalen Ollama-Instanz verbindest, ist keine Authentifizierung nötig. Für entfernte oder abgesicherte Deployments kannst du optional einen API-Key über OllamaOptions.ApiKey setzen.

Chat Completions & Streaming

Die Chat-Completions-API funktioniert mit jedem Modell, das du in deine Ollama-Instanz gepullt hast. Sende Text mit optionalen System-Prompts und empfange Antworten synchron oder in Echtzeit gestreamt.

System-Prompts

Steuere das Verhalten des Modells, indem du einen System-Prompt bereitstellst, der Kontext, Persönlichkeit oder Einschränkungen für das Gespräch festlegt.

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

Echtzeit-Streaming

Für reaktionsschnelle Benutzeroberflächen kannst du die Antwort des Modells Token für Token über Server-Sent Events streamen.

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

Erweiterte typisierte API

Für volle Kontrolle über die Request-Parameter — Temperature, Top-p, Stop-Sequenzen, Max-Tokens — verwende die typisierten Request- und 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;

Modellverwaltung

Verwalte deine gesamte lokale Modellbibliothek aus Delphi-Code. Pulle neue Modelle, sieh ihre Details ein, liste verfügbare Tags auf und lösche Modelle, die du nicht mehr brauchst — alles programmatisch.

Ein Modell pullen

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

Modell-Details anzeigen

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

Modelle und Tags auflisten

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

Ein Modell löschen

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

Embeddings

Erzeuge Vektor-Embeddings lokal mit jedem embedding-fähigen Modell. Embeddings treiben semantische Suche, Dokumenten-Clustering und Klassifikation an — alles, ohne Daten an externe Server zu senden.

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

Für volle Kontrolle verwende die typisierte API, um auf die rohen Embedding-Werte zuzugreifen.

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;

Datenschutz. Mit Ollama verlassen deine Daten nie dein Netzwerk. Das macht es ideal für regulierte Branchen (Gesundheitswesen, Finanzen, Behörden), in denen Data-Residency und Datenschutz kritische Anforderungen sind.

Konfiguration & Optionen

Feinjustiere das Verhalten der Komponente mit umfassenden Konfigurationsoptionen.

Eigenschaft Beschreibung
OllamaOptions.Host URL des Ollama-Servers (z. B. http://localhost:11434)
OllamaOptions.ApiKey Optionaler API-Key für abgesicherte Deployments
HttpOptions.ReadTimeout HTTP-Read-Timeout in Millisekunden (Standard: 60000)
LogOptions.Enabled Request-/Response-Logging aktivieren
RetryOptions.Enabled Automatische Wiederholung bei vorübergehenden Fehlern
RetryOptions.Retries Maximale Anzahl der Wiederholversuche (Standard: 3)
RetryOptions.Wait Wartezeit zwischen Wiederholversuchen in Millisekunden (Standard: 3000)

Unterstützte Modelle

Ollama unterstützt Hunderte von Open-Source-Modellen. Hier sind einige beliebte Optionen:

Modell Parameter Ideal für
llama3 8B / 70B Universelle Chats, Reasoning
mistral 7B Schnelle, effiziente Textgenerierung
codellama 7B / 13B / 34B Codegenerierung und -analyse
nomic-embed-text 137M Text-Embeddings, semantische Suche

Null Kosten, volle Kontrolle. Führe KI-Modelle auf deiner eigenen Hardware aus, ohne Pro-Token-Gebühren. Kombiniert mit der eingebauten Retry-Logik und dem Logging von sgcWebSockets bekommst du eine produktionsreife lokale KI-Integration für Delphi.