DeepSeek Delphi API 客户端

· 组件

DeepSeek 已迅速成为最具成本效益的 AI 模型提供商之一,以远低于竞争服务的价格提供强大的推理、视觉和工具调用能力。对于希望利用 DeepSeek 模型的 Delphi 开发者,sgcWebSockets 提供了 TsgcHTTP_API_DeepSeek — 一个原生组件,使用简洁、类型安全的 Delphi 代码封装了整个 DeepSeek API。

无论您是在构建智能聊天机器人、处理图像、编排函数调用工作流,还是向用户实时流式传输响应,这个组件都能让您直接访问 DeepSeek 的所有功能。无需 REST 样板代码,无需 JSON 处理。只需放置组件、设置 API 密钥,即可开始构建。

完整的 API 覆盖

DeepSeek API 的每项主要功能都开箱即用。

聊天补全
发送带有系统提示的消息,同步或流式接收响应。完全控制温度、top-p、频率和存在惩罚参数。
实时流式传输
使用 Server-Sent Events 逐令牌流式传输响应。构建响应式 UI,在生成答案时即时显示内容。
视觉
通过发送 base64 编码数据或图片 URL 连同文本提示来分析图像。DeepSeek 可描述、解释和推理视觉内容。
工具使用 — 函数调用
使用 JSON Schema 定义自定义工具。DeepSeek 决定何时调用它们,从而实现智能代理的多步骤工作流。
模型管理
以编程方式列出所有可用的 DeepSeek 模型。查询模型 ID、所有者和能力。
内置重试与日志
在瞬态故障时自动重试,可配置重试次数和等待间隔。完整的请求/响应日志用于调试。

入门指南

在不到一分钟内将 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;

两种 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

要完全控制请求参数(温度、top-p、频率惩罚、存在惩罚、停止序列),请使用类型化的请求和响应类。

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)

请求参数

参数 描述
Temperature 采样温度(0.0–2.0)。值越低,结果越确定性。
TopP 核采样(0.0–1.0)。控制累积概率截止值。
MaxTokens 响应中的最大令牌数(默认值:4096)。
FrequencyPenalty 根据令牌在文本中出现的频率进行惩罚。
PresencePenalty 根据令牌是否已出现在文本中进行惩罚。
ToolChoice 控制工具选择:'auto'、'none' 或 'required'。

成本优势。DeepSeek 模型以远低于同类提供商的价格提供具有竞争力的质量。结合 sgcWebSockets 组件内置的重试逻辑和日志功能,您能以极低的成本获得可用于生产的 AI 集成方案。