Mistral Delphi API Client

· Composants

Mistral AI s'est imposé comme un fournisseur européen d'IA de premier plan, en proposant des modèles haute performance qui excellent en compréhension multilingue, génération de code, function calling et sorties structurées. Pour les développeurs Delphi qui veulent intégrer Mistral dans leurs applications, sgcWebSockets fournit TsgcHTTP_API_Mistral — un composant complet et natif qui encapsule l'ensemble de l'API Mistral avec du code Delphi propre et typé.

Que tu construises des chatbots intelligents, que tu génères des sorties JSON structurées, que tu analyses des images, que tu crées des embeddings pour la recherche sémantique ou que tu orchestres des workflows augmentés par des outils, ce composant te donne un accès direct à toutes les fonctionnalités de Mistral. Pas de plomberie REST. Pas de manipulation JSON. Pose simplement le composant, configure ta clé API et commence à construire.

Couverture API complète

Chaque fonctionnalité majeure de l'API Mistral est prise en charge dès l'installation.

Chat Completions
Envoie des messages avec des prompts système, reçois des réponses synchrones ou en streaming. Contrôle total sur la température, top-p et les séquences stop.
Streaming en temps réel
Diffuse les réponses token par token via Server-Sent Events. Construis des interfaces réactives qui affichent les réponses au fur et à mesure de leur génération.
Vision
Analyse des images en envoyant des données encodées en base64 ou des URL d'images aux côtés de prompts textuels. Les modèles Pixtral décrivent, interprètent et raisonnent sur du contenu visuel.
Mode JSON
Force Mistral à renvoyer une sortie JSON valide. Idéal pour l'extraction de données, les réponses structurées et les pipelines d'intégration d'API.
Tool Use — Function Calling
Définis des outils personnalisés avec JSON Schema. Mistral décide quand les invoquer, permettant des workflows agentiques multi-étapes.
Embeddings
Génère des embeddings vectoriels de haute qualité. Alimente la recherche sémantique, le clustering, la classification et les systèmes de recommandation.
Safe Prompt
Active les garde-fous de sécurité intégrés de Mistral avec une seule propriété. Filtre automatiquement le contenu nuisible ou inapproprié.
Gestion des modèles
Liste tous les modèles Mistral disponibles par programmation. Interroge les ID, propriétaires, dates de création et capacités des modèles.
Retry et journalisation intégrés
Retry automatique en cas d'échecs transitoires avec un nombre de tentatives et un délai configurables. Journalisation complète des requêtes/réponses pour le debug.

Premiers pas

Intègre Mistral AI dans ton projet Delphi en moins d'une minute. Pose le composant, configure ta clé API et envoie ton premier message.

// 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;

Deux styles d'API. Chaque fonctionnalité offre à la fois des méthodes de commodité (basées sur des chaînes, code minimal) et des classes de requête/réponse typées (contrôle complet, sécurité de typage). Choisis l'approche qui correspond le mieux à ton cas d'usage.

Chat Completions et streaming

L'API Chat Completions est la fondation de chaque interaction avec Mistral. Envoie du texte avec des prompts système optionnels et reçois des réponses synchrones ou diffusées en temps réel.

Prompts système

Contrôle le comportement de Mistral en fournissant un prompt système qui définit le contexte, la personnalité ou les contraintes de la conversation.

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 temps réel

Pour des interfaces réactives, diffuse la réponse de Mistral token par token via Server-Sent Events. Assigne le gestionnaire d'événement OnHTTPAPISSE et appelle _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 typée avancée

Pour un contrôle complet sur les paramètres de requête — température, top-p, séquences stop, seed aléatoire, safe prompt — utilise les classes typées de requête et de réponse.

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 — compréhension d'images

Les modèles Pixtral de Mistral peuvent analyser et raisonner sur des images. Envoie des photographies, captures d'écran, diagrammes ou documents aux côtés d'un prompt textuel et reçois des descriptions détaillées, des extractions de données ou du Q&A visuel.

// 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;

Cas d'usage. Automatise l'analyse de documents, extrais des données depuis des diagrammes, classe des images ou intègre la compréhension visuelle dans tes workflows — le tout depuis du code Delphi natif.

Mode JSON

Force Mistral à renvoyer une sortie JSON valide et parsable. Le mode JSON est parfait pour l'extraction de données, les réponses API structurées et les pipelines de traitement automatisé où tu as besoin d'une sortie machine garantie.

// 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

Définis des outils personnalisés avec JSON Schema et Mistral décidera quand et comment les invoquer. C'est la fondation pour construire des workflows agentiques multi-étapes qui connectent l'IA à ta logique métier.

// 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

Génère des embeddings vectoriels de haute qualité pour du texte avec les modèles d'embedding de Mistral. Les embeddings alimentent la recherche sémantique, le clustering de documents, les moteurs de recommandation et les tâches de classification.

// Generate embeddings for a text
var
  vEmbedding: string;
begin
  vEmbedding := Mistral._CreateEmbeddings(
    'mistral-embed',
    'Delphi is a powerful programming language.');
  ShowMessage(vEmbedding);
end;

Pour un contrôle complet, utilise l'API typée pour grouper plusieurs entrées et choisir le format d'encodage.

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 propose une couche de sécurité intégrée qui peut être activée avec une seule propriété. Lorsque SafePrompt est activé, un prompt système orienté sécurité est automatiquement ajouté pour filtrer le contenu nuisible ou inapproprié.

// Enable safety guardrails
oRequest.SafePrompt := True;

Résultats reproductibles. Définis RandomSeed à une valeur fixe pour obtenir des sorties déterministes. Combiné à Temperature := 0, cela garantit des réponses identiques pour la même entrée — idéal pour les pipelines de tests et de validation.

Gestion des modèles

Interroge par programmation les modèles Mistral disponibles. Liste tous les modèles pour découvrir les nouvelles capacités dès qu'elles deviennent disponibles.

// 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;

Configuration et options

Affine le comportement du composant avec des options de configuration complètes.

Propriété Description
MistralOptions.ApiKey Ta clé API Mistral (obligatoire)
HttpOptions.ReadTimeout Timeout de lecture HTTP en millisecondes (par défaut : 60000)
LogOptions.Enabled Active la journalisation des requêtes/réponses
RetryOptions.Enabled Retry automatique en cas d'échecs transitoires
RetryOptions.Retries Nombre maximum de tentatives de retry (par défaut : 3)
RetryOptions.Wait Temps d'attente entre les retries en millisecondes (par défaut : 3000)

Paramètres de requête

Paramètre Description
Temperature Température d'échantillonnage (0.0–2.0). Valeurs plus basses = plus déterministe.
TopP Nucleus sampling (0.0–1.0). Contrôle le seuil de probabilité cumulative.
MaxTokens Nombre maximum de tokens dans la réponse (par défaut : 4096).
SafePrompt Active les garde-fous de sécurité intégrés pour le filtrage de contenu.
RandomSeed Seed fixe pour des sorties reproductibles. Idéal pour les tests.
ResponseFormat Mettre à 'json_object' pour une sortie JSON garantie.
ToolChoice Contrôle la sélection d'outil : 'auto', 'none' ou 'required'.

L'avantage de l'IA européenne. Mistral a son siège en France et propose une inférence hébergée dans l'UE, ce qui en fait un excellent choix pour les organisations soumises à des exigences européennes de résidence des données. Combiné à la logique de retry intégrée, à la journalisation et à l'API typée du composant sgcWebSockets, tu obtiens une intégration IA prête pour la production avec une conformité réglementaire complète.