Klient API DeepSeek dla Delphi

· Komponenty

DeepSeek szybko stał się jednym z najbardziej opłacalnych i wydajnych dostawców modeli SI, oferującym zaawansowane możliwości rozumowania, analizy obrazu i wywoływania narzędzi po ułamku ceny konkurencyjnych usług. Dla programistów Delphi chcących wykorzystać modele DeepSeek sgcWebSockets udostępnia TsgcHTTP_API_DeepSeek — natywny komponent, który opakowuje całe API DeepSeek czystym, bezpiecznym typowo kodem Delphi.

Niezależnie od tego, czy budujesz inteligentne chatboty, przetwarzasz obrazy, orkiestrujesz przepływy z wywoływaniem funkcji, czy strumieniujesz odpowiedzi w czasie rzeczywistym do swoich użytkowników, ten komponent daje ci bezpośredni dostęp do każdej funkcji DeepSeek. Bez boilerplate'u REST. Bez męczenia się z JSON-em. Po prostu upuść komponent, ustaw klucz API i zaczynaj budować.

Pełne pokrycie API

Każda kluczowa funkcja API DeepSeek jest obsługiwana od razu po zainstalowaniu.

Uzupełnienia czatu
Wysyłaj wiadomości z systemowymi promptami, odbieraj odpowiedzi synchronicznie lub strumieniowo. Pełna kontrola nad temperature, top-p, frequency i presence penalty.
Strumieniowanie w czasie rzeczywistym
Strumieniuj odpowiedzi token po tokenie przy użyciu Server-Sent Events. Buduj responsywne interfejsy, które wyświetlają odpowiedzi w miarę ich generowania.
Wizja
Analizuj obrazy, wysyłając dane zakodowane w base64 lub adresy URL obrazów wraz z promptami tekstowymi. DeepSeek opisuje, interpretuje i rozumuje na temat treści wizualnych.
Użycie narzędzi — wywoływanie funkcji
Definiuj niestandardowe narzędzia w JSON Schema. DeepSeek decyduje, kiedy je wywołać, umożliwiając agentowe, wieloetapowe przepływy.
Zarządzanie modelami
Wyświetl programowo wszystkie dostępne modele DeepSeek. Sprawdzaj ID modeli, właścicieli i możliwości.
Wbudowane ponawianie i logowanie
Automatyczne ponawianie przy przejściowych błędach z konfigurowalną liczbą prób i odstępami. Pełne logowanie żądań/odpowiedzi do debugowania.

Pierwsze kroki

Zintegruj DeepSeek ze swoim projektem Delphi w mniej niż minutę. Upuść komponent, skonfiguruj swój klucz API i wyślij pierwszą wiadomość.

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

Dwa style API. Każda funkcja oferuje zarówno metody pomocnicze (oparte na stringach, minimalny kod), jak i typowane klasy żądań/odpowiedzi (pełna kontrola, bezpieczeństwo typów). Wybierz podejście najlepiej pasujące do twojego przypadku użycia.

Uzupełnienia czatu i strumieniowanie

API Chat Completions to fundament każdej interakcji z DeepSeek. Wysyłaj tekst z opcjonalnymi promptami systemowymi i odbieraj odpowiedzi synchronicznie lub strumieniowo w czasie rzeczywistym.

Prompty systemowe

Kontroluj zachowanie DeepSeek, dostarczając prompt systemowy, który ustawia kontekst, osobowość lub ograniczenia rozmowy.

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

Strumieniowanie w czasie rzeczywistym

Aby zapewnić responsywne interfejsy użytkownika, strumieniuj odpowiedź DeepSeek token po tokenie przy użyciu Server-Sent Events. Przypisz obsługę zdarzenia OnHTTPAPISSE i wywołaj _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;

Zaawansowane typowane API

Aby uzyskać pełną kontrolę nad parametrami żądania — temperature, top-p, frequency penalty, presence penalty, sekwencje stop — użyj typowanych klas żądania i odpowiedzi.

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;

Wizja — rozumienie obrazów

DeepSeek potrafi analizować obrazy i rozumować na ich temat. Wysyłaj zdjęcia, zrzuty ekranu, diagramy lub dokumenty wraz z promptem tekstowym i odbieraj szczegółowe opisy, ekstrakcję danych lub wizualne pytania i odpowiedzi.

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

Przykład zastosowania. Automatyzuj przetwarzanie faktur, wyciągaj tekst z dokumentów, analizuj wykresy i grafy lub buduj potoki klasyfikacji obrazów — wszystko z natywnego kodu Delphi w konkurencyjnej cenie DeepSeek.

Użycie narzędzi — wywoływanie funkcji

Definiuj niestandardowe narzędzia w JSON Schema, a DeepSeek zdecyduje, kiedy i jak je wywołać. To fundament budowania agentowych, wieloetapowych przepływów łączących SI z logiką biznesową.

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

Zarządzanie modelami

Sprawdzaj programowo dostępne modele DeepSeek. Wyświetl wszystkie modele, aby odkrywać nowe możliwości, gdy się pojawiają.

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

Konfiguracja i opcje

Dopracuj zachowanie komponentu za pomocą kompleksowych opcji konfiguracji.

Właściwość Opis
DeepSeekOptions.ApiKey Twój klucz API DeepSeek (wymagane)
HttpOptions.ReadTimeout Timeout odczytu HTTP w milisekundach (domyślnie: 60000)
LogOptions.Enabled Włącz logowanie żądań/odpowiedzi
RetryOptions.Enabled Automatyczne ponawianie przy przejściowych błędach
RetryOptions.Retries Maksymalna liczba prób ponowienia (domyślnie: 3)
RetryOptions.Wait Czas oczekiwania między ponowieniami w milisekundach (domyślnie: 3000)

Parametry żądania

Parametr Opis
Temperature Temperatura próbkowania (0,0–2,0). Niższe wartości = bardziej deterministyczne.
TopP Próbkowanie nucleus (0,0–1,0). Kontroluje próg skumulowanego prawdopodobieństwa.
MaxTokens Maksymalna liczba tokenów w odpowiedzi (domyślnie: 4096).
FrequencyPenalty Karze tokeny na podstawie częstości w dotychczasowym tekście.
PresencePenalty Karze tokeny na podstawie tego, czy pojawiają się w dotychczasowym tekście.
ToolChoice Kontrolowanie wyboru narzędzia: 'auto', 'none' lub 'required'.

Przewaga kosztowa. Modele DeepSeek oferują konkurencyjną jakość po znacznie niższych cenach niż porównywalni dostawcy. W połączeniu z wbudowaną logiką ponawiania i logowaniem komponentu sgcWebSockets dostajesz gotową do produkcji integrację SI po ułamku ceny.