Mistral AI si è affermata come uno dei principali provider AI europei, offrendo modelli ad alte prestazioni che eccellono in comprensione multilingue, generazione di codice, function calling e output strutturati. Per gli sviluppatori Delphi che vogliono integrare Mistral nelle loro applicazioni, sgcWebSockets fornisce TsgcHTTP_API_Mistral: un componente nativo e completo che incapsula l'intera API Mistral con codice Delphi pulito e type-safe.
Che tu stia costruendo chatbot intelligenti, generando output JSON strutturati, analizzando immagini, creando embeddings per la ricerca semantica o orchestrando workflow con tool, questo componente ti dà accesso diretto a ogni funzionalità di Mistral. Nessun boilerplate REST. Nessuna gestione manuale di JSON. Trascina il componente, imposta la tua API key e inizia a costruire.
Copertura API completa
Ogni funzionalità principale dell'API Mistral è 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 che mostrano le risposte mentre vengono generate. |
Vision Analizza immagini inviando dati codificati in base64 o URL di immagini insieme a prompt testuali. I modelli Pixtral descrivono, interpretano e ragionano sui contenuti visivi. |
|
Modalità JSON Costringe Mistral a restituire output JSON valido. Ideale per estrazione dati, risposte strutturate e pipeline di integrazione API. |
Uso dei tool — function calling Definisci tool personalizzati con JSON Schema. Mistral decide quando richiamarli, abilitando workflow agentici multi-step. |
Embeddings Genera embeddings vettoriali di alta qualità. Alimenta sistemi di ricerca semantica, clustering, classificazione e raccomandazione. |
|
Safe Prompt Abilita i guardrail di sicurezza integrati di Mistral con una sola proprietà. Filtra automaticamente contenuti dannosi o inappropriati. |
Gestione dei modelli Elenca a livello programmatico tutti i modelli Mistral disponibili. Interroga ID, proprietari, date di creazione e capacità dei modelli. |
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 Mistral AI nel tuo progetto Delphi in meno di un minuto. Trascina il componente, configura la tua API key e invia il tuo primo messaggio.
// 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;
Due stili di API. Ogni funzionalità offre sia metodi di convenienza (string-based, minimo codice) sia classi tipizzate di request/response (controllo completo, type safety). Scegli l'approccio più adatto al tuo caso d'uso.
Chat Completions e streaming
L'API Chat Completions è il fondamento di ogni interazione con Mistral. Invia testo con system prompt opzionali e ricevi risposte in modo sincrono o in streaming in tempo reale.
System prompt
Controlla il comportamento di Mistral fornendo un system prompt che imposti contesto, personalità o vincoli per la conversazione.
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 in tempo reale
Per interfacce utente reattive, ricevi la risposta di Mistral token per token tramite Server-Sent Events. Assegna l'handler dell'evento OnHTTPAPISSE e richiama _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 tipizzata avanzata
Per il pieno controllo sui parametri della richiesta — temperature, top-p, stop sequence, random seed, safe prompt — usa le classi tipizzate di request e response.
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 — comprensione delle immagini
I modelli Pixtral di Mistral possono analizzare e ragionare sulle immagini. Invia fotografie, screenshot, diagrammi o documenti insieme a un prompt testuale e ricevi descrizioni dettagliate, estrazione dati o domande/risposte visive.
// 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 d'uso. Automatizza l'analisi documentale, estrai dati dai diagrammi, classifica immagini o integra la comprensione visiva nei tuoi workflow — tutto da codice Delphi nativo.
Modalità JSON
Costringe Mistral a restituire output JSON valido e parsabile. La modalità JSON è perfetta per estrazione dati, risposte API strutturate e pipeline di elaborazione automatizzata in cui hai bisogno di output garantito leggibile dalle macchine.
// 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';
Uso dei tool — function calling
Definisci tool personalizzati con JSON Schema e Mistral deciderà quando e come richiamarli. È la base per costruire workflow agentici multi-step che collegano l'IA alla tua logica di business.
// 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 vettoriali di alta qualità per il testo usando i modelli di embedding di Mistral. Gli embeddings alimentano ricerca semantica, clustering di documenti, motori di raccomandazione e attività di classificazione.
// Generate embeddings for a text
var
vEmbedding: string;
begin
vEmbedding := Mistral._CreateEmbeddings(
'mistral-embed',
'Delphi is a powerful programming language.');
ShowMessage(vEmbedding);
end;
Per il pieno controllo, usa l'API tipizzata per inviare in batch più input e selezionare il formato di codifica.
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 offre un livello di sicurezza integrato che si abilita con una sola proprietà. Quando SafePrompt è attiva, un system prompt orientato alla sicurezza viene aggiunto automaticamente in testa per filtrare contenuti dannosi o inappropriati.
// Enable safety guardrails
oRequest.SafePrompt := True;
Risultati riproducibili. Imposta RandomSeed a un valore fisso per ottenere output deterministici. Combinato con Temperature := 0, garantisce risposte identiche per lo stesso input — ideale per pipeline di test e validazione.
Gestione dei modelli
Interroga i modelli Mistral disponibili a livello programmatico. Elenca tutti i modelli per scoprire le nuove capacità man mano che diventano disponibili.
// 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;
Configurazione e opzioni
Affina il comportamento del componente con un set completo di opzioni di configurazione.
| Proprietà | Descrizione |
|---|---|
MistralOptions.ApiKey |
La tua chiave API Mistral (obbligatoria) |
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) |
Parametri della richiesta
| Parametro | Descrizione |
|---|---|
Temperature |
Temperatura di campionamento (0.0–2.0). Valori più bassi = più deterministico. |
TopP |
Nucleus sampling (0.0–1.0). Controlla la soglia di probabilità cumulativa. |
MaxTokens |
Numero massimo di token nella risposta (default: 4096). |
SafePrompt |
Abilita i guardrail di sicurezza integrati per il filtraggio dei contenuti. |
RandomSeed |
Seed fisso per output riproducibili. Ideale per i test. |
ResponseFormat |
Imposta a 'json_object' per garantire output JSON. |
ToolChoice |
Controlla la selezione dei tool: 'auto', 'none' o 'required'. |
Vantaggio dell'IA europea. Mistral ha sede in Francia e offre inferenza ospitata nell'UE, rendendola una scelta eccellente per le organizzazioni con requisiti europei di residenza dei dati. Combinata con la logica di retry integrata, il logging e l'API type-safe del componente sgcWebSockets, ottieni un'integrazione IA pronta per la produzione con piena conformità normativa.
