A Mistral AI se consolidou como uma das principais fornecedoras europeias de IA, oferecendo modelos de alto desempenho que se destacam em compreensão multilíngue, geração de código, chamada de funções e saídas estruturadas. Para desenvolvedores Delphi que desejam integrar o Mistral em suas aplicações, o sgcWebSockets disponibiliza o TsgcHTTP_API_Mistral — um componente nativo e abrangente que encapsula toda a API do Mistral com código Delphi limpo e com tipagem segura.
Seja para criar chatbots inteligentes, gerar saídas JSON estruturadas, analisar imagens, criar embeddings para busca semântica ou orquestrar fluxos de trabalho aumentados por ferramentas, este componente oferece acesso direto a todos os recursos do Mistral. Sem boilerplate REST. Sem manipulação de JSON. Basta adicionar o componente, definir sua API key e começar a construir.
Cobertura Completa da API
Todos os principais recursos da API Mistral são suportados nativamente.
|
Chat Completions Envie mensagens com prompts de sistema e receba respostas de forma síncrona ou em streaming. Controle total sobre temperatura, top-p e sequências de parada. |
Streaming em Tempo Real Transmita respostas token a token usando Server-Sent Events. Crie interfaces responsivas que exibem as respostas conforme são geradas. |
Vision Analise imagens enviando dados codificados em base64 ou URLs de imagens junto com prompts de texto. Os modelos Pixtral descrevem, interpretam e raciocinam sobre conteúdo visual. |
|
JSON Mode Force o Mistral a retornar saída JSON válida. Ideal para extração de dados, respostas estruturadas e pipelines de integração de APIs. |
Uso de Ferramentas — Function Calling Defina ferramentas personalizadas com JSON Schema. O Mistral decide quando invocá-las, possibilitando fluxos de trabalho agênticos e de múltiplas etapas. |
Embeddings Gere embeddings vetoriais de alta qualidade. Potencialize busca semântica, clustering, classificação e sistemas de recomendação. |
|
Safe Prompt Ative as proteções de segurança integradas do Mistral com uma única propriedade. Filtre automaticamente conteúdo prejudicial ou inadequado. |
Gerenciamento de Modelos Liste todos os modelos Mistral disponíveis programaticamente. Consulte IDs de modelos, proprietários, datas de criação e capacidades. |
Retry & Logging Integrados Retry automático em falhas transitórias com tentativas e intervalos configuráveis. Log completo de requisições/respostas para depuração. |
Primeiros Passos
Integre o Mistral AI ao seu projeto Delphi em menos de um minuto. Adicione o componente, configure sua API key e envie sua primeira mensagem.
// 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;
Dois estilos de API. Cada recurso oferece tanto métodos de conveniência (baseados em string, código mínimo) quanto classes tipadas de requisição/resposta (controle total, segurança de tipos). Escolha a abordagem que melhor se adapta ao seu caso de uso.
Chat Completions & Streaming
A API de Chat Completions é a base de toda interação com o Mistral. Envie texto com prompts de sistema opcionais e receba respostas de forma síncrona ou em streaming em tempo real.
Prompts de Sistema
Controle o comportamento do Mistral fornecendo um prompt de sistema que define o contexto, a personalidade ou as restrições da conversa.
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 em Tempo Real
Para interfaces de usuário responsivas, transmita a resposta do Mistral token a token usando Server-Sent Events. Atribua o handler do evento OnHTTPAPISSE e chame _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 Tipada Avançada
Para controle total sobre os parâmetros da requisição — temperatura, top-p, sequências de parada, semente aleatória, safe prompt — use as classes tipadas de requisição e resposta.
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 — Compreensão de Imagens
Os modelos Pixtral do Mistral conseguem analisar e raciocinar sobre imagens. Envie fotografias, capturas de tela, diagramas ou documentos junto com um prompt de texto e receba descrições detalhadas, extração de dados ou perguntas e respostas visuais.
// 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 de uso. Automatize a análise de documentos, extraia dados de diagramas, classifique imagens ou incorpore compreensão visual aos seus fluxos de trabalho — tudo a partir de código nativo Delphi.
JSON Mode
Force o Mistral a retornar saída JSON válida e analisável. O JSON mode é perfeito para extração de dados, respostas estruturadas de API e pipelines de processamento automatizado onde você precisa de saída legível por máquina garantida.
// 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 de Ferramentas — Function Calling
Defina ferramentas personalizadas com JSON Schema e o Mistral decidirá quando e como invocá-las. Esta é a base para construir fluxos de trabalho agênticos e de múltiplas etapas que conectam a IA à sua lógica de negócio.
// 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
Gere embeddings vetoriais de alta qualidade para texto usando os modelos de embedding do Mistral. Os embeddings potencializam busca semântica, clustering de documentos, motores de recomendação e tarefas de classificação.
// Generate embeddings for a text
var
vEmbedding: string;
begin
vEmbedding := Mistral._CreateEmbeddings(
'mistral-embed',
'Delphi is a powerful programming language.');
ShowMessage(vEmbedding);
end;
Para controle total, use a API tipada para processar múltiplas entradas em lote e selecionar o formato de codificação.
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
O Mistral oferece uma camada de segurança integrada que pode ser ativada com uma única propriedade. Quando SafePrompt está habilitado, um prompt de sistema focado em segurança é automaticamente adicionado ao início para filtrar conteúdo prejudicial ou inadequado.
// Enable safety guardrails
oRequest.SafePrompt := True;
Resultados reproduzíveis. Defina RandomSeed com um valor fixo para obter saídas determinísticas. Combinado com Temperature := 0, isso garante respostas idênticas para a mesma entrada — ideal para pipelines de teste e validação.
Gerenciamento de Modelos
Consulte os modelos Mistral disponíveis programaticamente. Liste todos os modelos para descobrir novos recursos conforme ficam disponíveis.
// 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;
Configuração & Opções
Ajuste o comportamento do componente com opções de configuração abrangentes.
| Propriedade | Descrição |
|---|---|
MistralOptions.ApiKey |
Sua API key do Mistral (obrigatória) |
HttpOptions.ReadTimeout |
Timeout de leitura HTTP em milissegundos (padrão: 60000) |
LogOptions.Enabled |
Habilitar log de requisições/respostas |
RetryOptions.Enabled |
Retry automático em falhas transitórias |
RetryOptions.Retries |
Número máximo de tentativas de retry (padrão: 3) |
RetryOptions.Wait |
Tempo de espera entre retries em milissegundos (padrão: 3000) |
Parâmetros da Requisição
| Parâmetro | Descrição |
|---|---|
Temperature |
Temperatura de amostragem (0,0–2,0). Valores menores = mais determinístico. |
TopP |
Nucleus sampling (0,0–1,0). Controla o corte de probabilidade cumulativa. |
MaxTokens |
Número máximo de tokens na resposta (padrão: 4096). |
SafePrompt |
Ativar proteções de segurança integradas para filtragem de conteúdo. |
RandomSeed |
Semente fixa para saídas reproduzíveis. Ideal para testes. |
ResponseFormat |
Defina como 'json_object' para saída JSON garantida. |
ToolChoice |
Controle a seleção de ferramentas: 'auto', 'none' ou 'required'. |
Vantagem da IA europeia. O Mistral tem sede na França e oferece inferência hospedada na UE, tornando-o uma excelente escolha para organizações com requisitos de residência de dados europeus. Combinado com a lógica de retry integrada, o log e a API com tipagem segura do componente sgcWebSockets, você obtém uma integração de IA pronta para produção com total conformidade regulatória.
