Mistral AI heeft zich gevestigd als een toonaangevende Europese AI-provider met hoogpresterende modellen die uitblinken in meertalig begrip, codegeneratie, function calling en gestructureerde uitvoer. Voor Delphi-ontwikkelaars die Mistral in hun applicaties willen integreren, biedt sgcWebSockets TsgcHTTP_API_Mistral — een uitgebreide, native component die de volledige Mistral-API omhult met overzichtelijke, type-veilige Delphi-code.
Of je nu intelligente chatbots bouwt, gestructureerde JSON-uitvoer genereert, afbeeldingen analyseert, embeddings maakt voor semantische zoekopdrachten of tool-augmented workflows orkestreert, deze component geeft je directe toegang tot elke Mistral-functie. Geen REST-boilerplate. Geen JSON-gepruts. Plaats gewoon de component, stel je API key in en begin met bouwen.
Complete API-dekking
Elke belangrijke functie van de Mistral-API wordt out-of-the-box ondersteund.
|
Chat-completions Verstuur berichten met systeemprompts en ontvang antwoorden synchroon of gestreamd. Volledige controle over temperature, top-p en stop-sequenties. |
Realtime streaming Stream antwoorden token-voor-token via Server-Sent Events. Bouw responsieve UI's die antwoorden tonen terwijl ze worden gegenereerd. |
Vision Analyseer afbeeldingen door base64-gecodeerde data of afbeeldings-URL's mee te sturen met tekstprompts. Pixtral-modellen beschrijven, interpreteren en redeneren over visuele content. |
|
JSON-modus Forceer Mistral om geldige JSON-uitvoer terug te geven. Ideaal voor data-extractie, gestructureerde antwoorden en API-integratiepipelines. |
Tool-gebruik — function calling Definieer aangepaste tools met JSON Schema. Mistral bepaalt wanneer ze worden aangeroepen, waardoor agentische, meerstaps-workflows mogelijk zijn. |
Embeddings Genereer hoogwaardige vector-embeddings. Voor semantische zoekopdrachten, clustering, classificatie en aanbevelingssystemen. |
|
Safe Prompt Schakel de ingebouwde veiligheidsmaatregelen van Mistral in met één property. Filter automatisch schadelijke of ongepaste content. |
Modellenbeheer Vraag alle beschikbare Mistral-modellen programmatisch op. Bevraag model-ID's, eigenaren, aanmaakdata en mogelijkheden. |
Ingebouwde retry en logging Automatische retry bij transient failures met configureerbare pogingen en wachttijden. Volledige request-/response-logging voor debugging. |
Aan de slag
Integreer Mistral AI in minder dan een minuut in je Delphi-project. Plaats de component, configureer je API key en stuur je eerste bericht.
// Het component aanmaken en de API key configureren
var
Mistral: TsgcHTTP_API_Mistral;
vResponse: string;
begin
Mistral := TsgcHTTP_API_Mistral.Create(nil);
Try
Mistral.MistralOptions.ApiKey := 'YOUR_API_KEY';
// Een eenvoudig bericht naar Mistral sturen
vResponse := Mistral._CreateMessage(
'mistral-large-latest', 'Hello, Mistral!');
ShowMessage(vResponse);
Finally
Mistral.Free;
End;
end;
Twee API-stijlen. Elke functie biedt zowel gemaks-methodes (string-gebaseerd, minimale code) als typed request-/response-klassen (volledige controle, type-veiligheid). Kies de aanpak die het beste past bij je gebruiksscenario.
Chat-completions en streaming
De Chat-Completions-API vormt de basis van elke Mistral-interactie. Stuur tekst met optionele systeemprompts en ontvang antwoorden synchroon of realtime gestreamd.
Systeemprompts
Stuur het gedrag van Mistral aan met een systeemprompt die de context, persoonlijkheid of beperkingen voor het gesprek vastlegt.
vResponse := Mistral._CreateMessageWithSystem(
'mistral-large-latest',
'Je bent een behulpzame assistent die in het Spaans antwoordt.',
'Wat is de hoofdstad van Frankrijk?');
// Geeft terug: "La capital de Francia es París."
Realtime-streaming
Voor responsieve user interfaces stream je het antwoord van Mistral token-voor-token via Server-Sent Events. Wijs de event handler OnHTTPAPISSE toe en roep _CreateMessageStream aan.
// Streaming inschakelen via SSE
Mistral.OnHTTPAPISSE := OnSSEEvent;
Mistral._CreateMessageStream('mistral-large-latest',
'Leg de relativiteitstheorie uit.');
procedure TForm1.OnSSEEvent(Sender: TObject;
const aEvent, aData: string; var Cancel: Boolean);
begin
// aData: JSON-payload met de gegenereerde content
Memo1.Lines.Add(aData);
end;
Geavanceerde typed-API
Voor volledige controle over aanvraagparameters — temperature, top-p, stop sequences, random seed, safe prompt — gebruik je de typed request- en response-klassen.
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 — afbeeldingsbegrip
De Pixtral-modellen van Mistral kunnen afbeeldingen analyseren en erover redeneren. Stuur foto's, screenshots, diagrammen of documenten naast een tekstprompt en ontvang gedetailleerde beschrijvingen, data-extractie of visuele Q&A.
// Een afbeelding laden en Mistral vragen die te analyseren
var
vBase64: string;
begin
vBase64 := sgcBase64Encode(LoadFileToBytes('architecture-diagram.png'));
ShowMessage(Mistral._CreateVisionMessage(
'pixtral-large-latest',
'Beschrijf de architectuur die in dit diagram wordt getoond.',
vBase64, 'image/png'));
end;
Gebruiksscenario. Automatiseer documentanalyse, extraheer data uit diagrammen, classificeer afbeeldingen of bouw visueel begrip in je workflows — allemaal vanuit native Delphi-code.
JSON-modus
Forceer Mistral om geldige, parsebare JSON-uitvoer te retourneren. De JSON-modus is perfect voor data-extractie, gestructureerde API-antwoorden en geautomatiseerde verwerkingspipelines waar je gegarandeerd machine-leesbare uitvoer nodig hebt.
// Gestructureerde JSON-uitvoer genereren
vResponse := Mistral._CreateMessageJSON(
'mistral-large-latest',
'Haal de naam, leeftijd en stad uit: John is 30, woont in Madrid.');
// Geeft terug: {"name": "John", "age": 30, "city": "Madrid"}
// Met de typed API voor JSON-modus gebruiken
oRequest.ResponseFormat := 'json_object';
Tool-gebruik — function calling
Definieer aangepaste tools met JSON Schema; Mistral beslist wanneer en hoe ze worden aangeroepen. Dit is de basis voor het bouwen van agentische, multi-step-workflows die de AI met je business-logica verbinden.
// Een tool definiëren met JSON Schema
oTool := TsgcMistralClass_Request_Tool.Create;
oTool.FunctionName := 'get_weather';
oTool.FunctionDescription := 'Haal het huidige weer op voor een locatie';
oTool.FunctionParameters :=
'{"type":"object","properties":{"location":{"type":"string",' +
'"description":"Stad en land"}},"required":["location"]}';
oRequest.Tools.Add(oTool);
oRequest.ToolChoice := 'auto';
oResponse := Mistral.CreateMessage(oRequest);
// Controleren of Mistral een tool wil aanroepen
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;
// De tool uitvoeren en het resultaat teruggeven
end;
end;
Embeddings
Genereer hoogwaardige vector-embeddings voor tekst met de embedding-modellen van Mistral. Embeddings vormen de motor achter semantische zoekopdrachten, documentclustering, aanbevelingsengines en classificatietaken.
// Embeddings voor een tekst genereren
var
vEmbedding: string;
begin
vEmbedding := Mistral._CreateEmbeddings(
'mistral-embed',
'Delphi is een krachtige programmeertaal.');
ShowMessage(vEmbedding);
end;
Voor volledige controle gebruik je de typed-API om meerdere invoeren te batchen en het encoding-formaat te selecteren.
var
oRequest: TsgcMistralClass_Request_Embeddings;
oResponse: TsgcMistralClass_Response_Embeddings;
begin
oRequest := TsgcMistralClass_Request_Embeddings.Create;
Try
oRequest.Model := 'mistral-embed';
oRequest.Input.Add('Eerste document om te embedden');
oRequest.Input.Add('Tweede document om te embedden');
oRequest.EncodingFormat := 'float';
oResponse := Mistral.CreateEmbeddings(oRequest);
Try
ShowMessage('Embeddings: ' + IntToStr(Length(oResponse.Data)));
ShowMessage('Gebruikte tokens: ' + IntToStr(oResponse.Usage.TotalTokens));
Finally
oResponse.Free;
End;
Finally
oRequest.Free;
End;
end;
Safe prompt
Mistral biedt een ingebouwde veiligheidslaag die je met één property inschakelt. Wanneer SafePrompt is ingeschakeld, wordt automatisch een veiligheidsgerichte systeemprompt vooraan toegevoegd om schadelijke of ongepaste content te filteren.
// Veiligheidsmaatregelen inschakelen
oRequest.SafePrompt := True;
Reproduceerbare resultaten. Stel RandomSeed in op een vaste waarde voor deterministische uitvoer. Gecombineerd met Temperature := 0 garandeert dit identieke antwoorden voor dezelfde input — ideaal voor test- en validatiepipelines.
Modellenbeheer
Vraag programmatisch de beschikbare Mistral-modellen op. Toon alle modellen om nieuwe mogelijkheden te ontdekken zodra ze beschikbaar komen.
// Alle beschikbare Mistral-modellen opsommen
vModels := Mistral._GetModels;
// Typed API: modelproperties direct benaderen
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 + ' (door ' +
oModels.Data[i].OwnedBy + ')');
Finally
oModels.Free;
End;
end;
Configuratie en opties
Stem het gedrag van de component fijn af met uitgebreide configuratieopties.
| Property | Beschrijving |
|---|---|
MistralOptions.ApiKey |
Je Mistral-API-key (verplicht) |
HttpOptions.ReadTimeout |
HTTP-lees-timeout in milliseconden (standaard: 60000) |
LogOptions.Enabled |
Schakel request-/response-logging in |
RetryOptions.Enabled |
Automatische retry bij transient failures |
RetryOptions.Retries |
Maximaal aantal retry-pogingen (standaard: 3) |
RetryOptions.Wait |
Wachttijd tussen retries in milliseconden (standaard: 3000) |
Aanvraagparameters
| Parameter | Beschrijving |
|---|---|
Temperature |
Sampling-temperature (0,0–2,0). Lagere waarden = meer deterministisch. |
TopP |
Nucleus sampling (0,0–1,0). Bepaalt de cumulatieve waarschijnlijkheidsafkapping. |
MaxTokens |
Maximaal aantal tokens in het antwoord (standaard: 4096). |
SafePrompt |
Schakel ingebouwde veiligheidsmaatregelen in voor contentfiltering. |
RandomSeed |
Vaste seed voor reproduceerbare uitvoer. Ideaal voor testen. |
ResponseFormat |
Stel in op 'json_object' voor gegarandeerde JSON-uitvoer. |
ToolChoice |
Bepaal de tool-selectie: 'auto', 'none' of 'required'. |
Europees AI-voordeel. Mistral heeft zijn hoofdkantoor in Frankrijk en biedt in de EU gehoste inferentie, waardoor het een uitstekende keuze is voor organisaties met Europese data-residency-eisen. Gecombineerd met de ingebouwde retry-logica, logging en type-veilige API van het sgcWebSockets-component krijg je productieklare AI-integratie met volledige regelgevingsconformiteit.
