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.
