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.
