Cliente DeepSeek API para Delphi

· Componentes

DeepSeek se ha convertido rápidamente en uno de los proveedores de modelos de IA más rentables y capaces, ofreciendo potentes capacidades de razonamiento, visión y llamada a herramientas a una fracción del coste de los servicios competidores. Para los desarrolladores Delphi que quieran aprovechar los modelos de DeepSeek, sgcWebSockets ofrece TsgcHTTP_API_DeepSeek — un componente nativo que envuelve toda la API de DeepSeek con código Delphi limpio y tipado.

Tanto si estás construyendo chatbots inteligentes, procesando imágenes, orquestando flujos de llamada a funciones o haciendo streaming de respuestas en tiempo real a tus usuarios, este componente te da acceso directo a todas las funciones de DeepSeek. Sin código REST repetitivo. Sin lidiar con JSON. Solo suelta el componente, configura tu clave API y empieza a construir.

Cobertura completa de la API

Todas las funciones principales de la API de DeepSeek son compatibles desde el primer momento.

Chat Completions
Envía mensajes con system prompts y recibe respuestas de forma síncrona o en streaming. Control total sobre temperature, top-p y penalizaciones de frecuencia y presencia.
Streaming en tiempo real
Recibe respuestas token a token mediante Server-Sent Events. Construye interfaces de usuario reactivas que muestran las respuestas a medida que se generan.
Visión
Analiza imágenes enviando datos codificados en base64 o URLs de imagen junto a prompts de texto. DeepSeek describe, interpreta y razona sobre el contenido visual.
Uso de herramientas — Function Calling
Define herramientas personalizadas con JSON Schema. DeepSeek decide cuándo invocarlas, permitiendo flujos agentivos de varios pasos.
Gestión de modelos
Lista todos los modelos de DeepSeek disponibles de forma programática. Consulta IDs de modelo, propietarios y capacidades.
Reintentos y logging integrados
Reintentos automáticos ante fallos transitorios con intentos e intervalos configurables. Logging completo de petición/respuesta para depuración.

Primeros pasos

Integra DeepSeek en tu proyecto Delphi en menos de un minuto. Suelta el componente, configura tu clave API y envía tu primer mensaje.

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

Dos estilos de API. Cada función ofrece tanto métodos de conveniencia (basados en strings, con mínimo código) como clases tipadas de petición/respuesta (control total y seguridad de tipos). Elige el enfoque que mejor se adapte a tu caso de uso.

Chat Completions y streaming

La API de Chat Completions es la base de toda interacción con DeepSeek. Envía texto con system prompts opcionales y recibe respuestas síncronas o en streaming en tiempo real.

System prompts

Controla el comportamiento de DeepSeek proporcionando un system prompt que establezca el contexto, la personalidad o las restricciones de la conversación.

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 en tiempo real

Para interfaces de usuario reactivas, transmite la respuesta de DeepSeek token a token mediante Server-Sent Events. Asigna el manejador de eventos OnHTTPAPISSE y llama a _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 tipada avanzada

Para control total sobre los parámetros de petición — temperature, top-p, frequency penalty, presence penalty, secuencias de parada — usa las clases tipadas de petición y respuesta.

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;

Visión — Comprensión de imágenes

DeepSeek puede analizar y razonar sobre imágenes. Envía fotografías, capturas de pantalla, diagramas o documentos junto a un prompt de texto y recibe descripciones detalladas, extracción de datos o Q&A visual.

// 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 de uso. Automatiza el procesamiento de facturas, extrae texto de documentos, analiza tablas y gráficos o construye pipelines de clasificación de imágenes — todo desde código Delphi nativo con los precios competitivos de DeepSeek.

Uso de herramientas — Function Calling

Define herramientas personalizadas con JSON Schema y DeepSeek decidirá cuándo y cómo invocarlas. Esta es la base para construir flujos agentivos de varios pasos que conectan la IA con tu lógica de negocio.

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

Gestión de modelos

Consulta los modelos de DeepSeek disponibles de forma programática. Lista todos los modelos para descubrir nuevas capacidades a medida que se publican.

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

Configuración y opciones

Afina el comportamiento del componente con opciones de configuración completas.

Propiedad Descripción
DeepSeekOptions.ApiKey Tu clave API de DeepSeek (obligatoria)
HttpOptions.ReadTimeout Timeout de lectura HTTP en milisegundos (por defecto: 60000)
LogOptions.Enabled Habilita el logging de petición/respuesta
RetryOptions.Enabled Reintentos automáticos ante fallos transitorios
RetryOptions.Retries Número máximo de reintentos (por defecto: 3)
RetryOptions.Wait Tiempo de espera entre reintentos en milisegundos (por defecto: 3000)

Parámetros de petición

Parámetro Descripción
Temperature Temperatura de muestreo (0,0–2,0). Valores más bajos = más determinista.
TopP Muestreo nuclear (0,0–1,0). Controla el corte de probabilidad acumulada.
MaxTokens Número máximo de tokens en la respuesta (por defecto: 4096).
FrequencyPenalty Penaliza tokens en función de la frecuencia con la que aparecen en el texto hasta el momento.
PresencePenalty Penaliza tokens en función de si aparecen en el texto hasta el momento.
ToolChoice Controla la selección de herramientas: 'auto', 'none' o 'required'.

Ventaja en coste. Los modelos DeepSeek ofrecen calidad competitiva a precios significativamente más bajos que proveedores comparables. Combinado con la lógica de reintentos y logging integrada del componente sgcWebSockets, obtienes integración de IA lista para producción a una fracción del coste.