DeepSeek Delphi API クライアント

· コンポーネント

DeepSeek は、競合サービスのほんの一部のコストで強力な推論、ビジョン、ツール呼び出し機能を提供する、最もコスト効率が高く高性能な AI モデルプロバイダーの一つとして急速に台頭してきました。DeepSeek のモデルを活用したい Delphi 開発者向けに、sgcWebSockets は TsgcHTTP_API_DeepSeek — クリーンで型安全な Delphi コードで DeepSeek API 全体をラップしたネイティブコンポーネントを提供します。

インテリジェントなチャットボットの構築、画像処理、関数呼び出しワークフローのオーケストレーション、ユーザーへのリアルタイム応答のストリーミングなど、このコンポーネントは DeepSeek のあらゆる機能への直接アクセスを提供します。REST のボイラープレートも JSON の取り回しも不要です。コンポーネントを配置し、API キーを設定するだけで構築を始められます。

API の完全カバレッジ

DeepSeek API の主要機能はすべて、すぐに使える形でサポートされています。

チャット補完
システムプロンプトとともにメッセージを送信し、同期またはストリーミングで応答を受信します。temperature、top-p、frequency / presence penalty を完全に制御できます。
リアルタイムストリーミング
Server-Sent Events を使用してトークン単位で応答をストリーミングします。応答が生成されると同時に表示する、レスポンシブな UI を構築できます。
ビジョン
base64 エンコードされたデータや画像 URL をテキストプロンプトと共に送信して画像を分析します。DeepSeek は視覚的なコンテンツを説明、解釈、推論します。
ツール利用 — 関数呼び出し
JSON Schema でカスタムツールを定義します。DeepSeek がいつ呼び出すかを判断し、エージェント的な多段階ワークフローを実現します。
モデル管理
利用可能なすべての DeepSeek モデルをプログラム的にリストアップします。モデル ID、所有者、機能を照会できます。
組み込みのリトライとログ
一時的な障害に対して、設定可能な試行回数と待機間隔で自動リトライを行います。デバッグ用にリクエスト / レスポンスを完全にログ記録します。

はじめに

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

// Create the component and configure the API key
var
  DeepSeek: TsgcHTTP_API_DeepSeek;
  vResponse: string;
begin
  DeepSeek := TsgcHTTP_API_DeepSeek.Create(nil);
  Try
    DeepSeek.DeepSeekOptions.ApiKey := 'YOUR_API_KEY';
    // Send a simple message to DeepSeek
    vResponse := DeepSeek._CreateMessage(
      'deepseek-chat', 'Hello, DeepSeek!');
    ShowMessage(vResponse);
  Finally
    DeepSeek.Free;
  End;
end;

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

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

チャット補完 API は、あらゆる DeepSeek とのやり取りの基盤です。任意のシステムプロンプトとともにテキストを送信し、同期またはリアルタイムにストリーミングで応答を受け取ります。

システムプロンプト

会話の文脈、人格、制約を設定するシステムプロンプトを提供して、DeepSeek の動作を制御します。

vResponse := DeepSeek._CreateMessageWithSystem(
  'deepseek-chat',
  'You are a helpful assistant that responds in Spanish.',
  'What is the capital of France?');
// Returns: "La capital de Francia es París."

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

レスポンシブなユーザーインターフェースには、Server-Sent Events を使用して DeepSeek の応答をトークン単位でストリーミングします。OnHTTPAPISSE イベントハンドラーを割り当て、_CreateMessageStream を呼び出します。

// Enable streaming via SSE
DeepSeek.OnHTTPAPISSE := OnSSEEvent;
DeepSeek._CreateMessageStream('deepseek-chat',
  '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

リクエストパラメーター (temperature、top-p、frequency penalty、presence penalty、ストップシーケンスなど) を完全に制御するには、型付きのリクエスト / レスポンスクラスを使用します。

var
  oRequest: TsgcDeepSeekClass_Request_ChatCompletion;
  oMessage: TsgcDeepSeekClass_Request_Message;
  oResponse: TsgcDeepSeekClass_Response_ChatCompletion;
begin
  oRequest := TsgcDeepSeekClass_Request_ChatCompletion.Create;
  Try
    oRequest.Model := 'deepseek-chat';
    oRequest.MaxTokens := 2048;
    oRequest.Temperature := 0.7;
    oRequest.TopP := 0.9;
    oRequest.FrequencyPenalty := 0.5;
    oMessage := TsgcDeepSeekClass_Request_Message.Create;
    oMessage.Role := 'user';
    oMessage.Content := 'Explain quantum computing in simple terms.';
    oRequest.Messages.Add(oMessage);
    oResponse := DeepSeek.CreateMessage(oRequest);
    Try
      if Length(oResponse.Choices) > 0 then
        ShowMessage(oResponse.Choices[0].MessageContent);
    Finally
      oResponse.Free;
    End;
  Finally
    oRequest.Free;
  End;
end;

ビジョン — 画像理解

DeepSeek は画像を分析し、推論できます。写真、スクリーンショット、図、文書をテキストプロンプトとともに送信すると、詳細な説明、データ抽出、視覚的な質問応答が得られます。

// Load an image and ask DeepSeek to analyze it
var
  vBase64: string;
begin
  vBase64 := sgcBase64Encode(LoadFileToBytes('invoice.png'));
  ShowMessage(DeepSeek._CreateVisionMessage(
    'deepseek-chat',
    'Extract all line items and totals from this invoice.',
    vBase64, 'image/png'));
end;

ユースケース。 請求書処理の自動化、文書からのテキスト抽出、チャートやグラフの分析、画像分類パイプラインの構築 — これらすべてを、ネイティブの Delphi コードと DeepSeek の競争力のある価格で実現できます。

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

JSON Schema でカスタムツールを定義すると、DeepSeek がいつどのように呼び出すかを判断します。これは、AI をビジネスロジックに接続するエージェント的な多段階ワークフローを構築するための基盤です。

// Define a tool with JSON Schema
oTool := TsgcDeepSeekClass_Request_Tool.Create;
oTool.Name := 'get_stock_price';
oTool.Description := 'Get the current stock price for a ticker symbol';
oTool.Parameters :=
  '{"type":"object","properties":{"symbol":{"type":"string",' +
  '"description":"Stock ticker symbol"}},"required":["symbol"]}';
oRequest.Tools.Add(oTool);
oResponse := DeepSeek.CreateMessage(oRequest);
// Check if DeepSeek wants to call a tool
if oResponse.Choices[0].FinishReason = 'tool_calls' then
begin
  for i := 0 to Length(oResponse.Choices[0].ToolCalls) - 1 do
  begin
    vToolId   := oResponse.Choices[0].ToolCalls[i].Id;
    vFuncName := oResponse.Choices[0].ToolCalls[i].FunctionName;
    vFuncArgs := oResponse.Choices[0].ToolCalls[i].FunctionArguments;
    // Execute the tool and return the result
  end;
end;

モデル管理

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

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

設定とオプション

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

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

リクエストパラメーター

パラメーター Description
Temperature サンプリング temperature (0.0–2.0)。値が低いほど決定論的になります。
TopP Nucleus サンプリング (0.0–1.0)。累積確率のカットオフを制御します。
MaxTokens 応答内の最大トークン数 (デフォルト: 4096)。
FrequencyPenalty これまでのテキスト内での出現頻度に基づきトークンにペナルティを与えます。
PresencePenalty これまでのテキスト内に出現したかどうかに基づきトークンにペナルティを与えます。
ToolChoice ツール選択を制御: 'auto'、'none'、'required'。

コスト面の優位性。 DeepSeek モデルは、同等のプロバイダーと比較して大幅に低価格で競争力のある品質を提供します。sgcWebSockets コンポーネントに組み込まれたリトライロジックとログ機能と組み合わせれば、ほんの一部のコストで本番稼働に対応した AI 統合が実現できます。