Klient API Mistral dla Delphi

· Komponenty

Mistral AI ugruntowało swoją pozycję jako wiodący europejski dostawca AI, oferując modele o wysokiej wydajności wyróżniające się w rozumieniu wielojęzycznym, generowaniu kodu, wywoływaniu funkcji i ustrukturyzowanych odpowiedziach. Dla programistów Delphi pragnących zintegrować Mistral ze swoimi aplikacjami sgcWebSockets dostarcza TsgcHTTP_API_Mistral — kompleksowy, natywny komponent opakowujący całe API Mistral w czyste, typowo bezpieczne kod Delphi.

Czy budujesz inteligentne chatboty, generujesz ustrukturyzowane wyjścia JSON, analizujesz obrazy, tworzysz embeddingi do wyszukiwania semantycznego czy orkiestrujesz przepływy pracy wspomagane narzędziami — ten komponent daje ci bezpośredni dostęp do każdej funkcji Mistral. Bez szablonów REST. Bez żonglowania JSON. Po prostu dodaj komponent, ustaw klucz API i zacznij budować.

Pełne pokrycie API

Każda główna funkcja API Mistral jest obsługiwana od razu po instalacji.

Chat Completions
Wysyłaj wiadomości z promptami systemowymi, odbieraj odpowiedzi synchronicznie lub strumieniowo. Pełna kontrola nad temperaturą, top-p i sekwencjami stop.
Strumieniowanie w czasie rzeczywistym
Strumieniuj odpowiedzi token po tokenie przy użyciu Server-Sent Events. Buduj responsywne interfejsy wyświetlające odpowiedzi w miarę ich generowania.
Rozpoznawanie obrazów
Analizuj obrazy, wysyłając dane zakodowane w base64 lub adresy URL obrazów wraz z promptami tekstowymi. Modele Pixtral opisują, interpretują i rozumują na temat treści wizualnych.
Tryb JSON
Wymuszaj na Mistral zwracanie prawidłowego wyjścia JSON. Idealny do ekstrakcji danych, ustrukturyzowanych odpowiedzi i potoków integracji API.
Użycie narzędzi — wywoływanie funkcji
Definiuj własne narzędzia ze schematem JSON. Mistral decyduje, kiedy je wywołać, umożliwiając agentowe, wieloetapowe przepływy pracy.
Embeddingi
Generuj wysokiej jakości embeddingi wektorowe. Zasilaj wyszukiwanie semantyczne, klasteryzację, klasyfikację i systemy rekomendacji.
Bezpieczny prompt
Włącz wbudowane zabezpieczenia Mistral jedną właściwością. Automatycznie filtruj szkodliwe lub nieodpowiednie treści.
Zarządzanie modelami
Programowo wylistuj wszystkie dostępne modele Mistral. Odpytuj identyfikatory modeli, właścicieli, daty utworzenia i możliwości.
Wbudowane ponowne próby i rejestrowanie
Automatyczne ponowne próby przy przejściowych błędach z konfigurowalnymi próbami i interwałami oczekiwania. Pełne rejestrowanie żądań i odpowiedzi do debugowania.

Pierwsze kroki

Zintegruj Mistral AI ze swoim projektem Delphi w mniej niż minutę. Dodaj komponent, skonfiguruj klucz API i wyślij pierwszą wiadomość.

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

Dwa style API. Każda funkcja oferuje zarówno wygodne metody (oparte na ciągach znaków, minimalny kod), jak i typowane klasy żądań/odpowiedzi (pełna kontrola, bezpieczeństwo typów). Wybierz podejście najlepiej odpowiadające Twojemu przypadkowi użycia.

Chat Completions i strumieniowanie

API Chat Completions jest podstawą każdej interakcji z Mistral. Wysyłaj tekst z opcjonalnymi promptami systemowymi i odbieraj odpowiedzi synchronicznie lub strumieniowo w czasie rzeczywistym.

Prompty systemowe

Kontroluj zachowanie Mistral, podając prompt systemowy określający kontekst, osobowość lub ograniczenia konwersacji.

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."

Strumieniowanie w czasie rzeczywistym

Dla responsywnych interfejsów użytkownika strumieniuj odpowiedź Mistral token po tokenie za pomocą Server-Sent Events. Przypisz handler zdarzenia OnHTTPAPISSE i wywołaj _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;

Zaawansowane typowane API

Dla pełnej kontroli nad parametrami żądania — temperaturą, top-p, sekwencjami stop, losowym ziarnem, bezpiecznym promptem — używaj typowanych klas żądań i odpowiedzi.

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;

Rozpoznawanie obrazów — Vision

Modele Pixtral firmy Mistral potrafią analizować obrazy i rozumować na ich temat. Wyślij zdjęcia, zrzuty ekranu, diagramy lub dokumenty wraz z promptem tekstowym, a otrzymasz szczegółowe opisy, ekstrakcję danych lub wizualne pytania i odpowiedzi.

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

Przykład zastosowania. Automatyzuj analizę dokumentów, wyodrębniaj dane z diagramów, klasyfikuj obrazy lub wbudowuj rozumienie wizualne w swoje przepływy pracy — wszystko z poziomu natywnego kodu Delphi.

JSON Mode

Wymuś na Mistral zwracanie prawidłowego, parsowanego wyjścia JSON. Tryb JSON jest doskonały do ekstrakcji danych, ustrukturyzowanych odpowiedzi API i zautomatyzowanych potoków przetwarzania, gdzie potrzebujesz gwarantowanego wyjścia czytelnego maszynowo.

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

Użycie narzędzi — wywoływanie funkcji

Definiuj własne narzędzia ze schematem JSON, a Mistral sam zdecyduje, kiedy i jak je wywołać. To fundament do budowania agentowych, wieloetapowych przepływów pracy łączących AI z logiką biznesową.

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

Generuj wysokiej jakości embeddingi wektorowe dla tekstu przy użyciu modeli embeddingów Mistral. Embeddingi zasilają wyszukiwanie semantyczne, klasteryzację dokumentów, silniki rekomendacji i zadania klasyfikacji.

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

Dla pełnej kontroli używaj typowanego API, aby wsadowo przetwarzać wiele wejść i wybrać format kodowania.

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 oferuje wbudowaną warstwę bezpieczeństwa, którą można włączyć jedną właściwością. Gdy SafePrompt jest aktywny, przed każdym promptem automatycznie dodawany jest prompt systemowy filtrujący szkodliwe lub nieodpowiednie treści.

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

Odtwarzalne wyniki. Ustaw RandomSeed na stałą wartość, aby uzyskać deterministyczne wyjścia. W połączeniu z Temperature := 0 zapewnia to identyczne odpowiedzi dla tych samych danych wejściowych — idealne do testowania i potoków walidacji.

Model Management

Odpytuj programowo dostępne modele Mistral. Wylistuj wszystkie modele, aby odkrywać nowe możliwości w miarę ich udostępniania.

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

Konfiguracja i opcje

Dostosuj zachowanie komponentu za pomocą kompleksowych opcji konfiguracyjnych.

Właściwość Opis
MistralOptions.ApiKey Twój klucz API Mistral (wymagany)
HttpOptions.ReadTimeout Limit czasu odczytu HTTP w milisekundach (domyślnie: 60000)
LogOptions.Enabled Włącz rejestrowanie żądań i odpowiedzi
RetryOptions.Enabled Automatyczne ponawianie przy przejściowych błędach
RetryOptions.Retries Maksymalna liczba prób ponowienia (domyślnie: 3)
RetryOptions.Wait Czas oczekiwania między próbami w milisekundach (domyślnie: 3000)

Parametry żądania

Parametr Opis
Temperature Temperatura próbkowania (0,0–2,0). Niższe wartości = bardziej deterministyczne.
TopP Próbkowanie jądrowe (0,0–1,0). Kontroluje odcięcie skumulowanego prawdopodobieństwa.
MaxTokens Maksymalna liczba tokenów w odpowiedzi (domyślnie: 4096).
SafePrompt Włącza wbudowane zabezpieczenia filtrowania treści.
RandomSeed Stałe ziarno dla odtwarzalnych wyników. Idealne do testowania.
ResponseFormat Ustaw na 'json_object', aby zagwarantować wyjście JSON.
ToolChoice Kontrola wyboru narzędzia: 'auto', 'none' lub 'required'.

Europejska przewaga AI. Mistral ma siedzibę we Francji i oferuje wnioskowanie hostowane w UE, co czyni go doskonałym wyborem dla organizacji z wymogami dotyczącymi przechowywania danych w Europie. W połączeniu z wbudowaną logiką ponawiania, rejestrowaniem i typowo bezpiecznym API komponentu sgcWebSockets otrzymujesz gotową do produkcji integrację AI z pełną zgodnością regulacyjną.