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 集成方案。
