Ollama rende facile eseguire modelli linguistici di grandi dimensioni localmente sul tuo hardware: niente dipendenze cloud, niente costi API e piena privacy dei dati. Per gli sviluppatori Delphi che vogliono integrare capacità AI locali nelle loro applicazioni, sgcWebSockets fornisce TsgcHTTP_API_Ollama: un componente nativo che incapsula l'intera API Ollama con codice Delphi pulito e type-safe.
Che tu debba mantenere dati sensibili on-premises, costruire funzionalità AI offline-capable, gestire la tua libreria di modelli o generare embeddings per la ricerca vettoriale locale, questo componente ti dà accesso diretto a ogni funzionalità di Ollama. Nessun account cloud. Nessuna spesa API ricorrente. Trascina il componente, puntalo alla tua istanza Ollama e inizia a costruire.
Copertura API completa
Ogni funzionalità principale dell'API Ollama è supportata out of the box.
|
Chat Completions Invia messaggi con system prompt, ricevi risposte in modo sincrono o in streaming. Controllo completo su temperature, top-p e stop sequence. |
Streaming in tempo reale Riceve le risposte token per token tramite Server-Sent Events. Costruisci UI reattive con modelli eseguiti localmente. |
Gestione dei modelli Scarica, mostra i dettagli, elenca i tag ed elimina i modelli a livello programmatico. Gestione completa del ciclo di vita da codice Delphi. |
|
Embeddings Genera embeddings vettoriali in locale. Alimenta ricerca semantica, clustering e classificazione senza inviare dati al cloud. |
Self-hosted / host configurabile Connettiti a qualsiasi istanza Ollama tramite URL host configurabile. Esegui in locale, su un server LAN o in un cloud privato. |
Retry e logging integrati Retry automatico in caso di guasti transitori con tentativi e intervalli di attesa configurabili. Logging completo di richieste e risposte per il debug. |
Per iniziare
Integra Ollama nel tuo progetto Delphi in meno di un minuto. Trascina il componente, configura l'host e invia il tuo primo messaggio.
// 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;
Nessuna API key richiesta. Quando ti connetti a un'istanza Ollama locale non è necessaria alcuna autenticazione. Per deployment remoti o protetti, puoi impostare facoltativamente una API key tramite OllamaOptions.ApiKey.
Chat Completions e streaming
L'API Chat Completions funziona con qualsiasi modello tu abbia scaricato nella tua istanza Ollama. Invia testo con system prompt opzionali e ricevi risposte in modo sincrono o in streaming in tempo reale.
System prompt
Controlla il comportamento del modello fornendo un system prompt che imposti contesto, personalità o vincoli per la conversazione.
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 in tempo reale
Per interfacce utente reattive, ricevi la risposta del modello token per token tramite 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 tipizzata avanzata
Per il pieno controllo sui parametri della richiesta — temperature, top-p, stop sequence, max token — usa le classi tipizzate di request e response.
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;
Gestione dei modelli
Gestisci l'intera libreria locale di modelli da codice Delphi. Scarica nuovi modelli, ispeziona i loro dettagli, elenca i tag disponibili ed elimina i modelli di cui non hai più bisogno, tutto a livello programmatico.
Scarica un modello
// Download a model from the Ollama registry
Ollama._PullModel('llama3');
Mostra i dettagli del modello
// Get detailed information about a model
vDetails := Ollama._ShowModel('llama3');
ShowMessage(vDetails);
Elenca modelli e tag
// 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;
Elimina un modello
// Remove a model from the local system
Ollama._DeleteModel('old-model:latest');
Embeddings
Genera embeddings vettoriali in locale usando qualsiasi modello con capacità di embedding. Gli embeddings alimentano ricerca semantica, clustering di documenti e classificazione, tutto senza inviare dati a server esterni.
// Generate embeddings locally
var
vEmbedding: string;
begin
vEmbedding := Ollama._CreateEmbeddings(
'nomic-embed-text',
'Delphi is a powerful programming language.');
ShowMessage(vEmbedding);
end;
Per il pieno controllo, usa l'API tipizzata per accedere ai valori grezzi dell'embedding.
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;
Privacy dei dati. Con Ollama, i tuoi dati non lasciano mai la tua rete. Questo lo rende ideale per i settori regolamentati (sanità, finanza, pubblica amministrazione) in cui la residenza e la privacy dei dati sono requisiti critici.
Configurazione e opzioni
Affina il comportamento del componente con un set completo di opzioni di configurazione.
| Proprietà | Descrizione |
|---|---|
OllamaOptions.Host |
URL del server Ollama (es. http://localhost:11434) |
OllamaOptions.ApiKey |
API key facoltativa per deployment protetti |
HttpOptions.ReadTimeout |
Timeout di lettura HTTP in millisecondi (default: 60000) |
LogOptions.Enabled |
Abilita il logging di richieste e risposte |
RetryOptions.Enabled |
Retry automatico in caso di guasti transitori |
RetryOptions.Retries |
Numero massimo di tentativi di retry (default: 3) |
RetryOptions.Wait |
Tempo di attesa tra i retry in millisecondi (default: 3000) |
Modelli supportati
Ollama supporta centinaia di modelli open source. Ecco alcune scelte popolari:
| Model | Parametri | Ideale per |
|---|---|---|
llama3 |
8B / 70B | Chat generica, ragionamento |
mistral |
7B | Generazione di testo rapida ed efficiente |
codellama |
7B / 13B / 34B | Generazione e analisi di codice |
nomic-embed-text |
137M | Embeddings di testo, ricerca semantica |
Zero costi, pieno controllo. Esegui modelli AI sul tuo hardware senza costi per token. Combinata con la logica di retry integrata e il logging di sgcWebSockets, ottieni un'integrazione AI locale pronta per la produzione per Delphi.
