Mistral AI se ha consolidado como uno de los principales proveedores europeos de IA, ofreciendo modelos de alto rendimiento que destacan en comprensión multilingüe, generación de código, function calling y salidas estructuradas. Para los desarrolladores Delphi que quieren integrar Mistral en sus aplicaciones, sgcWebSockets proporciona TsgcHTTP_API_Mistral — un componente completo y nativo que envuelve toda la API de Mistral con código Delphi limpio y con seguridad de tipos.
Tanto si estás creando chatbots inteligentes, generando salidas JSON estructuradas, analizando imágenes, creando embeddings para búsqueda semántica u orquestando flujos de trabajo aumentados con herramientas, este componente te da acceso directo a todas las características de Mistral. Sin boilerplate REST. Sin lidiar con JSON. Solo tienes que añadir el componente, configurar tu API key y empezar a construir.
Cobertura completa de la API
Todas las características principales de la API de Mistral están soportadas de serie.
|
Chat Completions Envía mensajes con prompts de sistema y recibe respuestas síncronas o en streaming. Control total sobre temperatura, top-p y secuencias de parada. |
Streaming en tiempo real Recibe las respuestas token a token mediante Server-Sent Events. Construye interfaces responsivas que muestran las respuestas a medida que se generan. |
Vision Analiza imágenes enviando datos codificados en base64 o URLs de imagen junto con prompts de texto. Los modelos Pixtral describen, interpretan y razonan sobre contenido visual. |
|
Modo JSON Obliga a Mistral a devolver una salida JSON válida. Ideal para extracción de datos, respuestas estructuradas y pipelines de integración con APIs. |
Tool Use — Function Calling Define herramientas personalizadas con JSON Schema. Mistral decide cuándo invocarlas, permitiendo flujos de trabajo agénticos en varios pasos. |
Embeddings Genera embeddings vectoriales de alta calidad. Impulsa búsqueda semántica, clustering, clasificación y sistemas de recomendación. |
|
Safe Prompt Activa con una sola propiedad las barreras de seguridad integradas de Mistral. Filtra automáticamente contenido dañino o inapropiado. |
Gestión de modelos Lista por código todos los modelos de Mistral disponibles. Consulta IDs, propietarios, fechas de creación y capacidades. |
Reintentos y logging integrados Reintento automático ante fallos transitorios con número de intentos e intervalos de espera configurables. Logging completo de petición/respuesta para depurar. |
Primeros pasos
Integra Mistral AI en tu proyecto Delphi en menos de un minuto. Añade el componente, configura tu API key y envía tu primer mensaje.
// Create the component and configure the API key
var
Mistral: TsgcHTTP_API_Mistral;
vResponse: string;
begin
Mistral := TsgcHTTP_API_Mistral.Create(nil);
Try
Mistral.MistralOptions.ApiKey := 'YOUR_API_KEY';
// Send a simple message to Mistral
vResponse := Mistral._CreateMessage(
'mistral-large-latest', 'Hello, Mistral!');
ShowMessage(vResponse);
Finally
Mistral.Free;
End;
end;
Dos estilos de API. Cada característica ofrece métodos de conveniencia (basados en strings, con código mínimo) y clases de request/response tipadas (control total y seguridad de tipos). Elige el enfoque que mejor encaje con tu caso de uso.
Chat Completions y Streaming
La API de Chat Completions es la base de cualquier interacción con Mistral. Envía texto con prompts de sistema opcionales y recibe respuestas síncronas o en streaming en tiempo real.
Prompts de sistema
Controla el comportamiento de Mistral aportando un prompt de sistema que establezca el contexto, la personalidad o las restricciones de la conversación.
vResponse := Mistral._CreateMessageWithSystem(
'mistral-large-latest',
'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 de Mistral token a token mediante Server-Sent Events. Asigna el manejador del evento OnHTTPAPISSE y llama a _CreateMessageStream.
// Enable streaming via SSE
Mistral.OnHTTPAPISSE := OnSSEEvent;
Mistral._CreateMessageStream('mistral-large-latest',
'Explain the theory of relativity.');
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 — temperatura, top-p, secuencias de parada, random seed, safe prompt — utiliza las clases de request y response tipadas.
var
oRequest: TsgcMistralClass_Request_ChatCompletion;
oMessage: TsgcMistralClass_Request_Message;
oResponse: TsgcMistralClass_Response_ChatCompletion;
begin
oRequest := TsgcMistralClass_Request_ChatCompletion.Create;
Try
oRequest.Model := 'mistral-large-latest';
oRequest.MaxTokens := 2048;
oRequest.Temperature := 0.7;
oRequest.TopP := 0.9;
oRequest.SafePrompt := True;
oRequest.RandomSeed := 42;
oMessage := TsgcMistralClass_Request_Message.Create;
oMessage.Role := 'user';
oMessage.Content := 'Explain quantum computing in simple terms.';
oRequest.Messages.Add(oMessage);
oResponse := Mistral.CreateMessage(oRequest);
Try
if Length(oResponse.Choices) > 0 then
ShowMessage(oResponse.Choices[0].Message.Content);
Finally
oResponse.Free;
End;
Finally
oRequest.Free;
End;
end;
Vision — Comprensión de imágenes
Los modelos Pixtral de Mistral pueden analizar y razonar sobre imágenes. Envía fotografías, capturas, diagramas o documentos junto con un prompt de texto y recibe descripciones detalladas, extracción de datos o Q&A visual.
// Load an image and ask Mistral to analyze it
var
vBase64: string;
begin
vBase64 := sgcBase64Encode(LoadFileToBytes('architecture-diagram.png'));
ShowMessage(Mistral._CreateVisionMessage(
'pixtral-large-latest',
'Describe the architecture shown in this diagram.',
vBase64, 'image/png'));
end;
Caso de uso. Automatiza análisis de documentos, extrae datos de diagramas, clasifica imágenes o integra comprensión visual en tus flujos de trabajo — todo desde código Delphi nativo.
Modo JSON
Obliga a Mistral a devolver una salida JSON válida y parseable. El modo JSON es perfecto para extracción de datos, respuestas estructuradas de API y pipelines de procesamiento automatizado donde necesitas una salida garantizada y legible por máquina.
// Generate structured JSON output
vResponse := Mistral._CreateMessageJSON(
'mistral-large-latest',
'Extract the name, age, and city from: John is 30, lives in Madrid.');
// Returns: {"name": "John", "age": 30, "city": "Madrid"}
// Using the typed API for JSON mode
oRequest.ResponseFormat := 'json_object';
Tool Use — Function Calling
Define herramientas personalizadas con JSON Schema y Mistral decidirá cuándo y cómo invocarlas. Es la base para crear flujos de trabajo agénticos en varios pasos que conectan la IA con tu lógica de negocio.
// Define a tool with JSON Schema
oTool := TsgcMistralClass_Request_Tool.Create;
oTool.FunctionName := 'get_weather';
oTool.FunctionDescription := 'Get the current weather in a location';
oTool.FunctionParameters :=
'{"type":"object","properties":{"location":{"type":"string",' +
'"description":"City and country"}},"required":["location"]}';
oRequest.Tools.Add(oTool);
oRequest.ToolChoice := 'auto';
oResponse := Mistral.CreateMessage(oRequest);
// Check if Mistral wants to call a tool
if oResponse.Choices[0].FinishReason = 'tool_calls' then
begin
for i := 0 to Length(oResponse.Choices[0].Message.ToolCalls) - 1 do
begin
vToolId := oResponse.Choices[0].Message.ToolCalls[i].Id;
vFuncName := oResponse.Choices[0].Message.ToolCalls[i].FunctionCall.Name;
vFuncArgs := oResponse.Choices[0].Message.ToolCalls[i].FunctionCall.Arguments;
// Execute the tool and return the result
end;
end;
Embeddings
Genera embeddings vectoriales de alta calidad para texto utilizando los modelos de embeddings de Mistral. Los embeddings impulsan búsqueda semántica, clustering de documentos, motores de recomendación y tareas de clasificación.
// Generate embeddings for a text
var
vEmbedding: string;
begin
vEmbedding := Mistral._CreateEmbeddings(
'mistral-embed',
'Delphi is a powerful programming language.');
ShowMessage(vEmbedding);
end;
Para tener control total, utiliza la API tipada para agrupar varias entradas y seleccionar el formato de codificación.
var
oRequest: TsgcMistralClass_Request_Embeddings;
oResponse: TsgcMistralClass_Response_Embeddings;
begin
oRequest := TsgcMistralClass_Request_Embeddings.Create;
Try
oRequest.Model := 'mistral-embed';
oRequest.Input.Add('First document to embed');
oRequest.Input.Add('Second document to embed');
oRequest.EncodingFormat := 'float';
oResponse := Mistral.CreateEmbeddings(oRequest);
Try
ShowMessage('Embeddings: ' + IntToStr(Length(oResponse.Data)));
ShowMessage('Tokens used: ' + IntToStr(oResponse.Usage.TotalTokens));
Finally
oResponse.Free;
End;
Finally
oRequest.Free;
End;
end;
Safe Prompt
Mistral ofrece una capa de seguridad integrada que se activa con una sola propiedad. Cuando SafePrompt está habilitado, se antepone automáticamente un prompt de sistema orientado a seguridad para filtrar contenido dañino o inapropiado.
// Enable safety guardrails
oRequest.SafePrompt := True;
Resultados reproducibles. Asigna a RandomSeed un valor fijo para obtener salidas deterministas. Combinado con Temperature := 0, esto garantiza respuestas idénticas ante la misma entrada — ideal para pipelines de pruebas y validación.
Gestión de modelos
Consulta los modelos de Mistral disponibles por código. Lista todos los modelos para descubrir nuevas capacidades a medida que se publican.
// List all available Mistral models
vModels := Mistral._GetModels;
// Typed API: access model properties directly
var
oModels: TsgcMistralClass_Response_Models;
i: Integer;
begin
oModels := Mistral.GetModels;
Try
for i := 0 to Length(oModels.Data) - 1 do
Memo1.Lines.Add(oModels.Data[i].Id + ' (by ' +
oModels.Data[i].OwnedBy + ')');
Finally
oModels.Free;
End;
end;
Configuración y opciones
Ajusta con precisión el comportamiento del componente mediante un completo conjunto de opciones de configuración.
| Propiedad | Descripción |
|---|---|
MistralOptions.ApiKey |
Tu API key de Mistral (obligatoria) |
HttpOptions.ReadTimeout |
Timeout de lectura HTTP en milisegundos (por defecto: 60000) |
LogOptions.Enabled |
Activa el logging de petición/respuesta |
RetryOptions.Enabled |
Reintento automático ante fallos transitorios |
RetryOptions.Retries |
Número máximo de reintentos (por defecto: 3) |
RetryOptions.Wait |
Tiempo de espera entre reintentos en milisegundos (por defecto: 3000) |
Parámetros de petición
| Parámetro | Descripción |
|---|---|
Temperature |
Temperatura de muestreo (0,0–2,0). Valores más bajos = más determinista. |
TopP |
Muestreo nucleus (0,0–1,0). Controla el corte de probabilidad acumulada. |
MaxTokens |
Número máximo de tokens en la respuesta (por defecto: 4096). |
SafePrompt |
Activa las barreras de seguridad integradas para filtrar contenido. |
RandomSeed |
Semilla fija para salidas reproducibles. Ideal para pruebas. |
ResponseFormat |
Establécelo a 'json_object' para garantizar una salida JSON. |
ToolChoice |
Controla la selección de herramienta: 'auto', 'none' o 'required'. |
Ventaja de la IA europea. Mistral tiene su sede en Francia y ofrece inferencia alojada en la UE, lo que la convierte en una excelente elección para organizaciones con requisitos europeos de residencia de datos. Combinado con la lógica de reintento integrada, el logging y la API con seguridad de tipos del componente de sgcWebSockets, obtienes una integración de IA lista para producción con cumplimiento normativo completo.
