Mistral Delphi API クライアント

· コンポーネント

Mistral AI は多言語理解、コード生成、関数呼び出し、構造化出力に優れた高性能モデルを提供する欧州主要 AI プロバイダーとして確固たる地位を築いています。Mistral をアプリケーションに統合しようとする Delphi 開発者向けに、sgcWebSockets は TsgcHTTP_API_Mistral を提供します。これは Mistral API 全体をクリーンな型安全 Delphi コードでラップする包括的なネイティブコンポーネントです。

インテリジェントなチャットボットの構築、構造化 JSON 出力の生成、画像分析、セマンティック検索用の埋め込み生成、ツール拡張ワークフローのオーケストレーションなど、あらゆるユースケースでこのコンポーネントを通じて Mistral の全機能に直接アクセスできます。REST の定型コードも JSON の手動処理も不要です。コンポーネントを配置し、API キーを設定するだけで構築を始められます。

完全な API カバレッジ

Mistral API のすべての主要機能がすぐに利用できます。

チャット補完
システムプロンプト付きでメッセージを送信し、同期またはストリームで応答を受信します。温度、top-p、停止シーケンスを完全制御できます。
リアルタイムストリーミング
Server-Sent Events を使用してトークンごとに応答をストリームします。回答が生成されるにつれて表示するレスポンシブ UI を構築できます。
ビジョン
base64 エンコードデータまたは画像 URL をテキストプロンプトと共に送信して画像を分析します。Pixtral モデルが視覚コンテンツを説明・解釈・推論します。
JSON モード
Mistral に有効な JSON 出力を返すよう強制します。データ抽出、構造化レスポンス、API 統合パイプラインに最適です。
ツール使用 — 関数呼び出し
JSON Schema でカスタムツールを定義します。Mistral が呼び出すタイミングを決定し、エージェント的なマルチステップワークフローを実現します。
埋め込み
高品質なベクター埋め込みを生成します。セマンティック検索、クラスタリング、分類、推薦システムを強化します。
セーフプロンプト
単一のプロパティで Mistral 組み込みの安全ガードレールを有効化します。有害または不適切なコンテンツを自動フィルタリングします。
モデル管理
利用可能な Mistral モデルをプログラムで一覧表示します。モデル ID、オーナー、作成日、機能を照会できます。
組み込みリトライ&ロギング
設定可能な試行回数と待機間隔による一時的な障害時の自動リトライ。デバッグ用のリクエスト/レスポンス完全ロギング。

はじめに

1 分以内に Mistral AI を Delphi プロジェクトに統合できます。コンポーネントを配置し、API キーを設定して、最初のメッセージを送信しましょう。

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

2 つの API スタイル。 すべての機能で、コンビニエンスメソッド(文字列ベース、最小限のコード)と型付きリクエスト/レスポンスクラス(完全制御、型安全性)の両方を提供します。ユースケースに最適なアプローチを選択してください。

チャット補完とストリーミング

チャット補完 API はすべての Mistral インタラクションの基盤です。オプションのシステムプロンプト付きでテキストを送信し、同期またはリアルタイムストリームで応答を受信します。

システムプロンプト

会話のコンテキスト、ペルソナ、制約を設定するシステムプロンプトを提供して Mistral の動作を制御します。

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

リアルタイムストリーミング

レスポンシブな UI のために、Server-Sent Events を使用して Mistral の応答をトークンごとにストリームします。OnHTTPAPISSE イベントハンドラーを割り当て、_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

温度、top-p、停止シーケンス、ランダムシード、セーフプロンプトなどのリクエストパラメーターを完全制御するには、型付きリクエスト/レスポンスクラスを使用します。

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;

ビジョン — 画像理解

Mistral の Pixtral モデルは画像を分析し推論できます。テキストプロンプトと共に写真、スクリーンショット、図表、文書を送信すると、詳細な説明、データ抽出、視覚的な Q&A を受け取れます。

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

ユースケース。 ドキュメント分析の自動化、図表からのデータ抽出、画像分類、ワークフローへの視覚的理解の組み込みなどをすべてネイティブ Delphi コードから実現できます。

JSON モード

Mistral に有効で解析可能な JSON 出力を返すよう強制します。JSON モードはデータ抽出、構造化 API レスポンス、機械可読な出力が保証された自動処理パイプラインに最適です。

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

ツール使用 — 関数呼び出し

JSON Schema でカスタムツールを定義すると、Mistral がそれらをいつどのように呼び出すかを決定します。これは AI をビジネスロジックに接続するエージェント的なマルチステップワークフロー構築の基盤です。

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

埋め込み

Mistral の埋め込みモデルを使用してテキストの高品質なベクター埋め込みを生成します。埋め込みはセマンティック検索、ドキュメントクラスタリング、推薦エンジン、分類タスクを強化します。

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

完全制御のために、型付き API を使用して複数の入力をバッチ処理し、エンコーディング形式を選択します。

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;

セーフプロンプト

Mistral は単一のプロパティで有効にできる組み込みの安全レイヤーを提供します。SafePrompt を有効にすると、有害または不適切なコンテンツをフィルタリングするためのセーフティ重視のシステムプロンプトが自動的に先頭に付加されます。

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

再現可能な結果。 RandomSeed を固定値に設定すると決定論的な出力が得られます。Temperature := 0 と組み合わせることで、同じ入力に対して常に同一の応答が保証されます。テストおよびバリデーションパイプラインに最適です。

モデル管理

利用可能な Mistral モデルをプログラムで照会します。すべてのモデルを一覧表示して、新しい機能が利用可能になったときに発見できます。

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

設定とオプション

包括的な設定オプションでコンポーネントの動作を微調整します。

プロパティ 説明
MistralOptions.ApiKey Mistral API キー(必須)
HttpOptions.ReadTimeout HTTP 読み取りタイムアウト(ミリ秒、デフォルト: 60000)
LogOptions.Enabled リクエスト/レスポンスのログを有効化
RetryOptions.Enabled 一時的な障害時の自動リトライ
RetryOptions.Retries 最大リトライ回数(デフォルト: 3)
RetryOptions.Wait リトライ間の待機時間(ミリ秒、デフォルト: 3000)

リクエストパラメーター

パラメーター 説明
Temperature サンプリング温度(0.0〜2.0)。低いほど決定論的になります。
TopP 核サンプリング(0.0〜1.0)。累積確率のカットオフを制御します。
MaxTokens レスポンスの最大トークン数(デフォルト: 4096)。
SafePrompt コンテンツフィルタリング用の組み込みセーフガードを有効化。
RandomSeed 再現可能な出力のための固定シード。テストに最適。
ResponseFormat 確実な JSON 出力のために 'json_object' に設定します。
ToolChoice ツールの選択を制御します: 'auto'、'none'、または 'required'。

欧州 AI の優位性。 Mistral はフランスに本社を置き、EU ホスト型の推論を提供しています。欧州のデータ居住要件を持つ組織にとって優れた選択肢です。sgcWebSockets コンポーネントの組み込みリトライロジック、ロギング、型安全 API と組み合わせることで、完全な規制準拠を備えた本番対応 AI 統合が実現します。