Mistral Delphi API İstemcisi

· Bileşenler

Mistral AI, çok dilli anlama, kod üretimi, function calling ve yapılandırılmış çıktılarda üstün başarı gösteren yüksek performanslı modeller sunarak önde gelen bir Avrupalı yapay zeka sağlayıcısı olarak kendini kanıtladı. Mistral'i uygulamalarına entegre etmek isteyen Delphi geliştiricileri için sgcWebSockets, tüm Mistral API'sini temiz ve tür güvenli Delphi koduyla saran kapsamlı, yerel bir bileşen olan TsgcHTTP_API_Mistral'i sunar.

Akıllı chatbot'lar oluşturuyor, yapılandırılmış JSON çıktıları üretiyor, görselleri analiz ediyor, anlamsal arama için embedding oluşturuyor ya da araçlarla desteklenmiş iş akışları düzenliyor olun, bu bileşen size her Mistral özelliğine doğrudan erişim sağlar. REST kalıp kodu yok. JSON ile uğraşma yok. Yalnızca bileşeni ekleyin, API anahtarınızı ayarlayın ve oluşturmaya başlayın.

Eksiksiz API Kapsamı

Mistral API'sinin her başlıca özelliği kutudan çıktığı haliyle desteklenir.

Chat Completions
Sistem prompt'larıyla mesaj gönderin, yanıtları senkron olarak veya akış halinde alın. Temperature, top-p ve stop dizileri üzerinde tam kontrol.
Gerçek Zamanlı Akış
Yanıtları Server-Sent Events kullanarak token token akıtın. Yanıtları üretilirken görüntüleyen duyarlı kullanıcı arayüzleri oluşturun.
Vision
base64 kodlu veriler veya görsel URL'lerini metin prompt'larıyla birlikte göndererek görselleri analiz edin. Pixtral modelleri görsel içeriği tanımlar, yorumlar ve onun hakkında akıl yürütür.
JSON Modu
Mistral'i geçerli JSON çıktısı döndürmeye zorlayın. Veri çıkarımı, yapılandırılmış yanıtlar ve API entegrasyon hatları için idealdir.
Araç Kullanımı (Function Calling)
JSON Schema ile özel araçlar tanımlayın. Mistral, bunları ne zaman çağıracağına karar vererek aracı (agentic), çok adımlı iş akışlarına olanak tanır.
Embeddings
Yüksek kaliteli vektör embedding'leri üretin. Anlamsal aramayı, kümelemeyi, sınıflandırmayı ve öneri sistemlerini güçlendirin.
Safe Prompt
Mistral'in yerleşik güvenlik korumalarını tek bir özellikle etkinleştirin. Zararlı veya uygunsuz içeriği otomatik olarak filtreleyin.
Model Yönetimi
Mevcut tüm Mistral modellerini programatik olarak listeleyin. Model kimliklerini, sahiplerini, oluşturma tarihlerini ve yeteneklerini sorgulayın.
Yerleşik Yeniden Deneme ve Günlük Kaydı
Yapılandırılabilir deneme sayıları ve bekleme aralıklarıyla geçici hatalarda otomatik yeniden deneme. Hata ayıklama için tam istek/yanıt günlüğü.

Başlarken

Mistral AI'yi Delphi projenize bir dakikadan kısa sürede entegre edin. Bileşeni ekleyin, API anahtarınızı yapılandırın ve ilk mesajınızı gönderin.

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

İki API stili. Her özellik hem kolaylık metotları (dize tabanlı, minimum kod) hem de türlü istek/yanıt sınıfları (tam kontrol, tür güvenliği) sunar. Kullanım senaryonuza en uygun yaklaşımı seçin.

Chat Completions ve Akış

Chat Completions API'si, her Mistral etkileşiminin temelidir. İsteğe bağlı sistem prompt'larıyla metin gönderin ve yanıtları senkron olarak veya gerçek zamanlı akış halinde alın.

Sistem Prompt'ları

Konuşma için bağlamı, kişiliği veya kısıtlamaları belirleyen bir sistem prompt'u sağlayarak Mistral'in davranışını kontrol edin.

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

Gerçek Zamanlı Akış

Duyarlı kullanıcı arayüzleri için, Mistral'in yanıtını Server-Sent Events kullanarak token token akıtın. OnHTTPAPISSE olay işleyicisini atayın ve _CreateMessageStream'i çağırın.

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

Gelişmiş Türlü API

İstek parametreleri (temperature, top-p, stop dizileri, random seed, safe prompt) üzerinde tam kontrol için türlü istek ve yanıt sınıflarını kullanın.

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 (Görsel Anlama)

Mistral'in Pixtral modelleri görselleri analiz edebilir ve onlar hakkında akıl yürütebilir. Fotoğrafları, ekran görüntülerini, diyagramları veya belgeleri bir metin prompt'uyla birlikte gönderin ve ayrıntılı açıklamalar, veri çıkarımı veya görsel soru-cevap alın.

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

Kullanım senaryosu. Belge analizini otomatikleştirin, diyagramlardan veri çıkarın, görselleri sınıflandırın veya iş akışlarınıza görsel anlama yeteneği ekleyin; tümü yerel Delphi kodundan.

JSON Modu

Mistral'i geçerli, ayrıştırılabilir JSON çıktısı döndürmeye zorlayın. JSON modu; garantili makine tarafından okunabilir çıktıya ihtiyaç duyduğunuz veri çıkarımı, yapılandırılmış API yanıtları ve otomatik işleme hatları için mükemmeldir.

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

Araç Kullanımı (Function Calling)

JSON Schema ile özel araçlar tanımlayın; Mistral bunları ne zaman ve nasıl çağıracağına karar verir. Bu, yapay zekayı iş mantığınıza bağlayan aracı (agentic), çok adımlı iş akışları oluşturmanın temelidir.

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

Mistral'in embedding modellerini kullanarak metin için yüksek kaliteli vektör embedding'leri üretin. Embedding'ler; anlamsal aramayı, belge kümelemeyi, öneri motorlarını ve sınıflandırma görevlerini güçlendirir.

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

Tam kontrol için, birden çok girdiyi toplu işlemek ve kodlama biçimini seçmek üzere türlü API'yi kullanın.

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, tek bir özellikle etkinleştirilebilen yerleşik bir güvenlik katmanı sunar. SafePrompt etkinleştirildiğinde, zararlı veya uygunsuz içeriği filtrelemek için güvenlik odaklı bir sistem prompt'u otomatik olarak başa eklenir.

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

Yeniden üretilebilir sonuçlar. Deterministik çıktılar elde etmek için RandomSeed'i sabit bir değere ayarlayın. Temperature := 0 ile birleştiğinde, bu aynı girdi için özdeş yanıtlar sağlar; test ve doğrulama hatları için idealdir.

Model Yönetimi

Mevcut Mistral modellerini programatik olarak sorgulayın. Yeni yetenekleri kullanılabilir hale geldikçe keşfetmek için tüm modelleri listeleyin.

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

Yapılandırma ve Seçenekler

Kapsamlı yapılandırma seçenekleriyle bileşen davranışında ince ayar yapın.

Özellik Açıklama
MistralOptions.ApiKey Mistral API anahtarınız (zorunlu)
HttpOptions.ReadTimeout Milisaniye cinsinden HTTP okuma zaman aşımı (varsayılan: 60000)
LogOptions.Enabled İstek/yanıt günlüğünü etkinleştir
RetryOptions.Enabled Geçici hatalarda otomatik yeniden deneme
RetryOptions.Retries Maksimum yeniden deneme sayısı (varsayılan: 3)
RetryOptions.Wait Milisaniye cinsinden yeniden denemeler arasındaki bekleme süresi (varsayılan: 3000)

İstek Parametreleri

Parametre Açıklama
Temperature Örnekleme sıcaklığı (0.0–2.0). Daha düşük değerler = daha deterministik.
TopP Nucleus örnekleme (0.0–1.0). Kümülatif olasılık eşiğini kontrol eder.
MaxTokens Yanıttaki maksimum token sayısı (varsayılan: 4096).
SafePrompt İçerik filtreleme için yerleşik güvenlik korumalarını etkinleştirin.
RandomSeed Yeniden üretilebilir çıktılar için sabit seed. Test için idealdir.
ResponseFormat Garantili JSON çıktısı için 'json_object' olarak ayarlayın.
ToolChoice Araç seçimini kontrol edin: 'auto', 'none' veya 'required'.

Avrupalı yapay zeka avantajı. Mistral'in merkezi Fransa'dadır ve AB'de barındırılan çıkarım sunar; bu da onu Avrupa veri yerleşimi gereksinimleri olan kuruluşlar için mükemmel bir seçim haline getirir. sgcWebSockets bileşeninin yerleşik yeniden deneme mantığı, günlük kaydı ve tür güvenli API'siyle birleştiğinde, tam mevzuat uyumluluğuyla üretime hazır yapay zeka entegrasyonu elde edersiniz.