Mistral Delphi-API-client

· Componenten

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.