DeepSeek Delphi API 클라이언트

· 컴포넌트

DeepSeek는 가장 비용 효율적이면서도 강력한 AI 모델 제공자 중 하나로 빠르게 부상했어요. 경쟁 서비스 비용의 일부에 불과한 가격으로 강력한 추론, 비전, 도구 호출 기능을 제공하죠. DeepSeek의 모델을 활용하려는 Delphi 개발자를 위해 sgcWebSockets는 TsgcHTTP_API_DeepSeek를 제공해요 — 깔끔하고 타입 안전한 Delphi 코드로 DeepSeek API 전체를 감싸는 네이티브 컴포넌트예요.

지능형 챗봇을 만들든, 이미지를 처리하든, 함수 호출 워크플로를 오케스트레이션하든, 사용자에게 실시간 응답을 스트리밍하든, 이 컴포넌트로 DeepSeek의 모든 기능에 직접 접근할 수 있어요. REST 보일러플레이트도, JSON 씨름도 없어요. 컴포넌트를 배치하고, API 키를 설정한 다음, 바로 개발을 시작하세요.

완전한 API 커버리지

DeepSeek API의 모든 주요 기능을 별도 설정 없이 지원해요.

채팅 완성
시스템 프롬프트와 함께 메시지를 보내고 동기 또는 스트리밍 방식으로 응답을 받아요. temperature, top-p, frequency 및 presence penalty를 모두 제어할 수 있어요.
실시간 스트리밍
Server-Sent Events를 사용해 토큰 단위로 응답을 스트리밍해요. 답변이 생성되는 동안 표시되는 반응형 UI를 만들어 보세요.
비전
base64로 인코딩된 데이터나 이미지 URL을 텍스트 프롬프트와 함께 보내 이미지를 분석해요. DeepSeek가 시각적 콘텐츠를 설명하고 해석하며 추론해요.
도구 사용 — 함수 호출
JSON Schema로 커스텀 도구를 정의하면 DeepSeek가 언제 호출할지 결정해요. 에이전트형 다단계 워크플로를 구현할 수 있어요.
모델 관리
사용 가능한 모든 DeepSeek 모델을 프로그래밍 방식으로 조회해요. 모델 ID, 소유자, 기능을 쿼리할 수 있어요.
내장 재시도 & 로깅
일시적 오류 발생 시 자동으로 재시도하며, 시도 횟수와 대기 간격을 설정할 수 있어요. 디버깅을 위한 전체 요청/응답 로깅도 제공해요.

시작하기

1분 이내에 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 스타일. 모든 기능은 편의 메서드(문자열 기반, 최소 코드)와 타입이 지정된 요청/응답 클래스(완전한 제어, 타입 안전성)를 모두 제공해요. 사용 사례에 가장 적합한 방식을 선택하세요.

채팅 완성 & 스트리밍

Chat Completions 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

요청 파라미터를 완전히 제어하려면 — temperature, top-p, frequency penalty, presence penalty, stop 시퀀스 — 타입이 지정된 요청 및 응답 클래스를 사용하세요.

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는 이미지를 분석하고 추론할 수 있어요. 사진, 스크린샷, 다이어그램 또는 문서를 텍스트 프롬프트와 함께 보내면 상세한 설명, 데이터 추출 또는 시각적 Q&A를 받을 수 있어요.

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

사용 사례. 송장 처리 자동화, 문서에서 텍스트 추출, 차트와 그래프 분석, 이미지 분류 파이프라인 구축 — DeepSeek의 경쟁력 있는 가격으로 모두 네이티브 Delphi 코드에서 실행할 수 있어요.

도구 사용 — 함수 호출

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 샘플링 temperature (0.0–2.0). 값이 낮을수록 결과가 결정론적이에요.
TopP Nucleus 샘플링 (0.0–1.0). 누적 확률 컷오프를 제어해요.
MaxTokens 응답의 최대 토큰 수 (기본값: 4096).
FrequencyPenalty 현재까지의 텍스트에 등장한 빈도에 따라 토큰에 페널티를 부여해요.
PresencePenalty 현재까지의 텍스트에 등장 여부에 따라 토큰에 페널티를 부여해요.
ToolChoice 도구 선택을 제어해요: 'auto', 'none', 'required'.

비용 우위. DeepSeek 모델은 비교 가능한 제공자보다 훨씬 낮은 가격으로 경쟁력 있는 품질을 제공해요. sgcWebSockets 컴포넌트에 내장된 재시도 로직과 로깅과 결합하면 프로덕션 수준의 AI 통합을 훨씬 적은 비용으로 구축할 수 있어요.