Client API DeepSeek per Delphi

· Componenti

DeepSeek è rapidamente emerso come uno dei provider di modelli IA più capaci e convenienti, offrendo potenti capacità di ragionamento, visione e tool-calling a una frazione del costo dei servizi concorrenti. Per gli sviluppatori Delphi che vogliono sfruttare i modelli di DeepSeek, sgcWebSockets fornisce TsgcHTTP_API_DeepSeek — un componente nativo che incapsula l'intera API DeepSeek con codice Delphi pulito e type-safe.

Che tu stia costruendo chatbot intelligenti, elaborando immagini, orchestrando workflow di function calling o facendo streaming di risposte in tempo reale ai tuoi utenti, questo componente ti dà accesso diretto a ogni funzionalità di DeepSeek. Niente boilerplate REST. Niente JSON da gestire manualmente. Basta inserire il componente, impostare la tua API key e iniziare a costruire.

Copertura API completa

Ogni funzionalità principale dell'API DeepSeek è supportata pronta all'uso.

Chat completion
Invia messaggi con system prompt, ricevi risposte in modo sincrono o in streaming. Pieno controllo su temperature, top-p, frequency e presence penalty.
Streaming in tempo reale
Ricevi le risposte token per token via Server-Sent Events. Costruisci UI reattive che mostrano le risposte man mano che vengono generate.
Vision
Analizza le immagini inviando dati codificati in base64 o URL di immagini insieme ai prompt testuali. DeepSeek descrive, interpreta e ragiona sui contenuti visivi.
Tool use — function calling
Definisci tool personalizzati con JSON Schema. DeepSeek decide quando invocarli, abilitando workflow agentici multi-step.
Gestione dei modelli
Elenca tutti i modelli DeepSeek disponibili in modo programmatico. Interroga ID, owner e capabilities dei modelli.
Retry e logging integrati
Retry automatico in caso di errori transitori, con tentativi e intervalli di attesa configurabili. Logging completo di richieste e risposte per il debug.

Per iniziare

Integra DeepSeek nel tuo progetto Delphi in meno di un minuto. Inserisci il componente, configura la tua API key e invia il tuo primo messaggio.

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

Due stili di API. Ogni funzionalità offre sia metodi di comodo (basati su stringhe, codice minimo) sia classi tipizzate di richiesta/risposta (pieno controllo, type safety). Scegli l'approccio più adatto al tuo caso d'uso.

Chat completion e streaming

L'API Chat Completions è il fondamento di ogni interazione con DeepSeek. Invia testo con system prompt opzionali e ricevi risposte in modo sincrono o in streaming in tempo reale.

System prompt

Controlla il comportamento di DeepSeek fornendo un system prompt che imposta il contesto, la personalità o i vincoli della conversazione.

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

Streaming in tempo reale

Per interfacce utente reattive, ricevi la risposta di DeepSeek token per token via Server-Sent Events. Assegna il gestore di eventi OnHTTPAPISSE e chiama _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 tipizzata avanzata

Per il pieno controllo sui parametri della richiesta (temperature, top-p, frequency penalty, presence penalty, stop sequence) usa le classi tipizzate di richiesta e risposta.

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;

Vision — comprensione delle immagini

DeepSeek può analizzare e ragionare sulle immagini. Invia fotografie, screenshot, diagrammi o documenti insieme a un prompt testuale e ricevi descrizioni dettagliate, estrazione di dati o Q&A visivi.

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

Caso d'uso. Automatizza l'elaborazione di fatture, estrai testo da documenti, analizza grafici e diagrammi o costruisci pipeline di classificazione di immagini, il tutto da codice Delphi nativo con i prezzi competitivi di DeepSeek.

Tool use — function calling

Definisci tool personalizzati con JSON Schema e DeepSeek deciderà quando e come invocarli. Questo è il fondamento per costruire workflow agentici multi-step che collegano l'IA alla tua logica di business.

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

Gestione dei modelli

Interroga in modo programmatico i modelli DeepSeek disponibili. Elenca tutti i modelli per scoprire nuove capabilities man mano che diventano disponibili.

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

Configurazione e opzioni

Affina il comportamento del componente con opzioni di configurazione complete.

Proprietà Descrizione
DeepSeekOptions.ApiKey La tua API key DeepSeek (obbligatoria)
HttpOptions.ReadTimeout Timeout di lettura HTTP in millisecondi (default: 60000)
LogOptions.Enabled Abilita il logging di richieste e risposte
RetryOptions.Enabled Retry automatico in caso di errori transitori
RetryOptions.Retries Numero massimo di tentativi di retry (default: 3)
RetryOptions.Wait Tempo di attesa tra i retry in millisecondi (default: 3000)

Parametri della richiesta

Parametro Descrizione
Temperature Temperatura di campionamento (0,0–2,0). Valori più bassi = più deterministico.
TopP Nucleus sampling (0,0–1,0). Controlla la soglia di probabilità cumulativa.
MaxTokens Numero massimo di token nella risposta (default: 4096).
FrequencyPenalty Penalizza i token in base alla frequenza nel testo fino a quel momento.
PresencePenalty Penalizza i token in base al fatto che appaiano nel testo fino a quel momento.
ToolChoice Controlla la selezione dei tool: 'auto', 'none' o 'required'.

Vantaggio di costo. I modelli DeepSeek offrono qualità competitiva a prezzi nettamente inferiori rispetto ai provider comparabili. Combinati con la logica di retry e il logging integrati nel componente sgcWebSockets, ottieni un'integrazione IA pronta per la produzione a una frazione del costo.