Cliente API Mistral para Delphi

· Componentes

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.