Ollama facilita la ejecución local de grandes modelos de lenguaje en tu propio hardware — sin dependencia de la nube, sin costes de API y con total privacidad de los datos. Para los desarrolladores de Delphi que quieran integrar capacidades de IA local en sus aplicaciones, sgcWebSockets ofrece TsgcHTTP_API_Ollama — un componente nativo que encapsula toda la API de Ollama con un código Delphi limpio y con tipado seguro.
Tanto si necesitas mantener los datos sensibles on-premises, construir funcionalidades de IA que funcionen sin conexión, gestionar tu propia librería de modelos o generar embeddings para búsqueda vectorial local, este componente te da acceso directo a todas las funcionalidades de Ollama. Sin cuentas en la nube. Sin cuotas recurrentes de API. Simplemente añade el componente, apúntalo a tu instancia de Ollama y empieza a construir.
Cobertura completa de la API
Todas las funcionalidades principales de la API de Ollama están soportadas de serie.
|
Chat Completions Envía mensajes con system prompts, recibe respuestas de forma síncrona o por streaming. Control total sobre temperature, top-p y secuencias de parada. |
Streaming en tiempo real Recibe las respuestas token a token mediante Server-Sent Events. Construye UIs responsivas con modelos ejecutados localmente. |
Gestión de modelos Descarga modelos, consulta sus detalles, lista las etiquetas y elimina modelos de forma programática. Gestión completa del ciclo de vida desde código Delphi. |
|
Embeddings Genera embeddings vectoriales localmente. Impulsa búsqueda semántica, clustering y clasificación sin enviar datos a la nube. |
Autoalojado / Host configurable Conéctate a cualquier instancia de Ollama mediante una URL de host configurable. Ejecuta en local, en un servidor LAN o en una nube privada. |
Reintentos y logging integrados Reintentos automáticos ante fallos transitorios con intentos e intervalos de espera configurables. Logging completo de petición/respuesta para depuración. |
Primeros pasos
Integra Ollama en tu proyecto Delphi en menos de un minuto. Añade el componente, configura el host y envía tu primer mensaje.
// 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;
No requiere API key. Al conectarte a una instancia local de Ollama, no se necesita autenticación. Para despliegues remotos o asegurados, puedes establecer opcionalmente una API key mediante OllamaOptions.ApiKey.
Chat Completions y streaming
La API de Chat Completions funciona con cualquier modelo que hayas descargado en tu instancia de Ollama. Envía texto con system prompts opcionales y recibe las respuestas de forma síncrona o por streaming en tiempo real.
System Prompts
Controla el comportamiento del modelo proporcionando un system prompt que establezca el contexto, la personalidad o las restricciones de la conversación.
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 en tiempo real
Para interfaces de usuario responsivas, recibe la respuesta del modelo token a token mediante 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 avanzada
Para tener control total sobre los parámetros de la petición — temperature, top-p, secuencias de parada, max tokens — usa las clases tipadas de petición y respuesta.
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;
Gestión de modelos
Gestiona toda tu biblioteca local de modelos desde código Delphi. Descarga nuevos modelos, inspecciona sus detalles, lista las etiquetas disponibles y elimina los modelos que ya no necesitas — todo de forma programática.
Descargar un modelo
// Download a model from the Ollama registry
Ollama._PullModel('llama3');
Mostrar detalles del modelo
// Get detailed information about a model
vDetails := Ollama._ShowModel('llama3');
ShowMessage(vDetails);
Listar modelos y etiquetas
// 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;
Eliminar un modelo
// Remove a model from the local system
Ollama._DeleteModel('old-model:latest');
Embeddings
Genera embeddings vectoriales localmente usando cualquier modelo con capacidad de embeddings. Los embeddings impulsan búsqueda semántica, clustering de documentos y clasificación — todo sin enviar datos a 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 un control total, usa la API tipada para acceder a los valores brutos del 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;
Privacidad de datos. Con Ollama, tus datos nunca salen de tu red. Esto lo hace ideal para industrias reguladas (sanidad, finanzas, administración pública) donde la residencia de datos y la privacidad son requisitos críticos.
Configuración y opciones
Ajusta con precisión el comportamiento del componente mediante completas opciones de configuración.
| Propiedad | Descripción |
|---|---|
OllamaOptions.Host |
URL del servidor Ollama (p. ej., http://localhost:11434) |
OllamaOptions.ApiKey |
API key opcional para despliegues asegurados |
HttpOptions.ReadTimeout |
Timeout de lectura HTTP en milisegundos (por defecto: 60000) |
LogOptions.Enabled |
Habilita el logging de peticiones/respuestas |
RetryOptions.Enabled |
Reintentos automáticos en fallos transitorios |
RetryOptions.Retries |
Número máximo de intentos de reintento (por defecto: 3) |
RetryOptions.Wait |
Tiempo de espera entre reintentos en milisegundos (por defecto: 3000) |
Modelos soportados
Ollama admite cientos de modelos de código abierto. Aquí tienes algunas opciones populares:
| Modelo | Parámetros | Mejor para |
|---|---|---|
llama3 |
8B / 70B | Chat de propósito general, razonamiento |
mistral |
7B | Generación de texto rápida y eficiente |
codellama |
7B / 13B / 34B | Generación y análisis de código |
nomic-embed-text |
137M | Embeddings de texto, búsqueda semántica |
Coste cero, control total. Ejecuta modelos de IA en tu propio hardware sin cargos por token. Combinado con la lógica de reintentos y el logging integrados de sgcWebSockets, obtienes una integración de IA local lista para producción en Delphi.
