Grok Delphi API クライアント

· コンポーネント

xAI が開発した Grok は、リアルタイムの知識と高度な推論能力を備え、高速でインテリジェントな応答を実現する高性能 AI モデルです。Grok をアプリケーションに統合しようとする Delphi 開発者向けに、sgcWebSockets は TsgcHTTP_API_Grok を提供します。これは xAI Grok API 全体をクリーンな型安全 Delphi コードでラップするネイティブコンポーネントです。

会話型アシスタントの構築、画像分析、ツール拡張ワークフローのオーケストレーション、リアルタイム応答のストリーミングなど、あらゆるユースケースでこのコンポーネントを通じて Grok の全機能に直接アクセスできます。REST の定型コードも JSON の手動処理も不要です。コンポーネントを配置し、API キーを設定するだけで構築を始められます。

完全な API カバレッジ

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

チャット補完
システムプロンプト付きでメッセージを送信し、同期またはストリームで応答を受信します。温度、top-p、頻度・存在ペナルティを完全制御できます。
リアルタイムストリーミング
Server-Sent Events を使用してトークンごとに応答をストリームします。回答が生成されるにつれて表示するレスポンシブ UI を構築できます。
ビジョン
base64 エンコードデータまたは画像 URL をテキストプロンプトと共に送信して画像を分析します。Grok が視覚コンテンツを説明・解釈・推論します。
ツール使用 — 関数呼び出し
JSON Schema でカスタムツールを定義します。Grok が呼び出すタイミングを決定し、エージェント的なマルチステップワークフローを実現します。
モデル管理
利用可能な Grok モデルをプログラムで一覧表示します。モデル ID と機能を照会して最適なモデルを選択できます。
組み込みリトライ&ロギング
設定可能な試行回数と待機間隔による一時的な障害時の自動リトライ。デバッグ用のリクエスト/レスポンス完全ロギング。

はじめに

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

// Create the component and configure the API key
var
  Grok: TsgcHTTP_API_Grok;
  vResponse: string;
begin
  Grok := TsgcHTTP_API_Grok.Create(nil);
  Try
    Grok.GrokOptions.ApiKey := 'YOUR_API_KEY';
    // Send a simple message to Grok
    vResponse := Grok._CreateMessage(
      'grok-3', 'Hello, Grok!');
    ShowMessage(vResponse);
  Finally
    Grok.Free;
  End;
end;

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

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

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

システムプロンプト

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

vResponse := Grok._CreateMessageWithSystem(
  'grok-3',
  '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 を使用して Grok の応答をトークンごとにストリームします。OnHTTPAPISSE イベントハンドラーを割り当て、_CreateMessageStream を呼び出します。

// Enable streaming via SSE
Grok.OnHTTPAPISSE := OnSSEEvent;
Grok._CreateMessageStream('grok-3',
  '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: TsgcGrokClass_Request_ChatCompletion;
  oMessage: TsgcGrokClass_Request_Message;
  oResponse: TsgcGrokClass_Response_ChatCompletion;
begin
  oRequest := TsgcGrokClass_Request_ChatCompletion.Create;
  Try
    oRequest.Model := 'grok-3';
    oRequest.MaxTokens := 2048;
    oRequest.Temperature := 0.7;
    oRequest.TopP := 0.9;
    oRequest.FrequencyPenalty := 0.5;
    oRequest.N := 1;
    oMessage := TsgcGrokClass_Request_Message.Create;
    oMessage.Role := 'user';
    oMessage.Content := 'Explain quantum computing in simple terms.';
    oRequest.Messages.Add(oMessage);
    oResponse := Grok.CreateMessage(oRequest);
    Try
      if Length(oResponse.Choices) > 0 then
        ShowMessage(oResponse.Choices[0].Message.Content);
    Finally
      oResponse.Free;
    End;
  Finally
    oRequest.Free;
  End;
end;

ビジョン — 画像理解

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

// Load an image and ask Grok to analyze it
var
  vBase64: string;
begin
  vBase64 := sgcBase64Encode(LoadFileToBytes('dashboard-screenshot.png'));
  ShowMessage(Grok._CreateVisionMessage(
    'grok-3',
    'Analyze this dashboard and summarize the key metrics.',
    vBase64, 'image/png'));
end;

ユースケース。 レポート分析の自動化、スクリーンショットからのデータ抽出、視覚コンテンツの説明生成、画像対応アシスタントの構築などをすべてネイティブ Delphi コードから実現できます。

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

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

var
  oRequest: TsgcGrokClass_Request_ChatCompletion;
  oTool: TsgcGrokClass_Request_Tool;
  oResponse: TsgcGrokClass_Response_ChatCompletion;
begin
  // Define a tool with JSON Schema
  oTool := TsgcGrokClass_Request_Tool.Create;
  oTool.Name := 'search_database';
  oTool.Description := 'Search the product database by keyword';
  oTool.Parameters :=
    '{"type":"object","properties":{"query":{"type":"string",' +
    '"description":"Search keyword"}},"required":["query"]}';
  oRequest.Tools.Add(oTool);
  oRequest.ToolChoice := 'auto';
  oResponse := Grok.CreateMessage(oRequest);
  // Check if Grok 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;

モデル管理

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

// List all available Grok models
vModels := Grok._GetModels;
// Typed API: access model properties directly
var
  oModels: TsgcGrokClass_Response_Models;
  i: Integer;
begin
  oModels := Grok.GetModels;
  Try
    for i := 0 to Length(oModels.Data) - 1 do
      Memo1.Lines.Add(oModels.Data[i].Id);
  Finally
    oModels.Free;
  End;
end;

設定とオプション

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

プロパティ 説明
GrokOptions.ApiKey xAI 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)。
FrequencyPenalty これまでのテキストでの出現頻度に基づいてトークンにペナルティを与えます。
PresencePenalty これまでのテキストに出現しているかどうかに基づいてトークンにペナルティを与えます。
N 生成する補完の数(デフォルト: 1)。
ToolChoice ツールの選択を制御します: 'auto'、'none'、または 'required'。

なぜ Grok を選ぶのか? xAI が有用性とリアルタイムの知識を重視して構築した Grok は、最新情報と繊細な推論を必要とするタスクに優れています。sgcWebSockets コンポーネントにより、Delphi コードをクリーンかつ一貫した状態に保ちながら Grok と他の AI プロバイダーを簡単に切り替えられます。