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