Grok Delphi API Client

· 컴포넌트

xAI가 개발한 Grok은 실시간 지식과 고급 추론 능력을 갖춘 빠르고 지능적인 응답을 위한 고성능 AI 모델이에요. Grok을 애플리케이션에 통합하려는 Delphi 개발자를 위해 sgcWebSockets는 TsgcHTTP_API_Grok을 제공해요. 이는 전체 xAI Grok API를 깔끔하고 타입 안전한 Delphi 코드로 래핑하는 네이티브 컴포넌트예요.

대화형 어시스턴트 만들기, 이미지 분석, 도구 보강 워크플로 조율, 실시간 응답 스트리밍 등 모든 Grok 기능에 직접 접근할 수 있어요. REST 보일러플레이트도 없고, JSON 처리도 없어요. 컴포넌트를 드롭하고, API 키를 설정하고, 바로 만들기 시작하면 돼요.

완전한 API 지원

xAI Grok API의 모든 주요 기능을 기본으로 지원해요.

채팅 완성
시스템 프롬프트와 함께 메시지를 보내고, 동기적으로 또는 스트리밍으로 응답을 받아요. 온도, top-p, 빈도 및 존재 페널티를 완전히 제어해요.
실시간 스트리밍
Server-Sent Events를 사용해 토큰별로 응답을 스트리밍해요. 답변이 생성되는 대로 표시하는 반응형 UI를 만드세요.
비전
base64로 인코딩된 데이터 또는 이미지 URL을 텍스트 프롬프트와 함께 전송해 이미지를 분석해요. Grok은 시각적 콘텐츠를 설명, 해석, 추론해요.
도구 사용 — 함수 호출
JSON 스키마로 사용자 지정 도구를 정의해요. Grok이 언제 호출할지 결정해서 에이전틱 다단계 워크플로를 구현해요.
모델 관리
사용 가능한 모든 Grok 모델을 프로그래밍 방식으로 나열해요. 모델 ID와 기능을 쿼리해 최적의 모델을 선택해요.
내장 재시도 & 로깅
설정 가능한 시도 횟수와 대기 간격으로 일시적 장애 시 자동 재시도해요. 디버깅을 위한 완전한 요청/응답 로깅이에요.

시작하기

1분 이내에 xAI Grok을 Delphi 프로젝트에 통합해요. 컴포넌트를 드롭하고, API 키를 설정하고, 첫 번째 메시지를 보내세요.

// Create the component and configure the API key
var
  Grok: TsgcHTTP_API_Grok;
  vResponse: string;
begin
  Grok := TsgcHTTP_API_Grok.Create(nil);
  Try
    Grok.GrokOptions.ApiKey := 'YOUR_API_KEY';
    // Send a simple message to Grok
    vResponse := Grok._CreateMessage(
      'grok-3', 'Hello, Grok!');
    ShowMessage(vResponse);
  Finally
    Grok.Free;
  End;
end;

두 가지 API 스타일. 모든 기능은 편의 메서드(문자열 기반, 최소 코드)와 타입 지정 요청/응답 클래스(완전한 제어, 타입 안전성) 모두를 제공해요. 사용 사례에 가장 적합한 방법을 선택하세요.

채팅 완성 & 스트리밍

채팅 완성 API는 모든 Grok 상호작용의 기반이에요. 선택적 시스템 프롬프트와 함께 텍스트를 전송하고, 동기적으로 또는 실시간으로 스트리밍된 응답을 받아요.

시스템 프롬프트

대화의 맥락, 성격, 제약을 설정하는 시스템 프롬프트를 제공해 Grok의 동작을 제어하세요.

vResponse := Grok._CreateMessageWithSystem(
  'grok-3',
  '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를 사용해 Grok의 응답을 토큰별로 스트리밍해요. OnHTTPAPISSE 이벤트 핸들러를 할당하고 _CreateMessageStream을 호출하세요.

// Enable streaming via SSE
Grok.OnHTTPAPISSE := OnSSEEvent;
Grok._CreateMessageStream('grok-3',
  '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: TsgcGrokClass_Request_ChatCompletion;
  oMessage: TsgcGrokClass_Request_Message;
  oResponse: TsgcGrokClass_Response_ChatCompletion;
begin
  oRequest := TsgcGrokClass_Request_ChatCompletion.Create;
  Try
    oRequest.Model := 'grok-3';
    oRequest.MaxTokens := 2048;
    oRequest.Temperature := 0.7;
    oRequest.TopP := 0.9;
    oRequest.FrequencyPenalty := 0.5;
    oRequest.N := 1;
    oMessage := TsgcGrokClass_Request_Message.Create;
    oMessage.Role := 'user';
    oMessage.Content := 'Explain quantum computing in simple terms.';
    oRequest.Messages.Add(oMessage);
    oResponse := Grok.CreateMessage(oRequest);
    Try
      if Length(oResponse.Choices) > 0 then
        ShowMessage(oResponse.Choices[0].Message.Content);
    Finally
      oResponse.Free;
    End;
  Finally
    oRequest.Free;
  End;
end;

비전 — 이미지 이해

Grok은 이미지를 분석하고 추론할 수 있어요. 텍스트 프롬프트와 함께 사진, 스크린샷, 다이어그램, 차트를 전송하고 상세한 설명, 데이터 추출, 또는 시각적 Q&A를 받아요.

// Load an image and ask Grok to analyze it
var
  vBase64: string;
begin
  vBase64 := sgcBase64Encode(LoadFileToBytes('dashboard-screenshot.png'));
  ShowMessage(Grok._CreateVisionMessage(
    'grok-3',
    'Analyze this dashboard and summarize the key metrics.',
    vBase64, 'image/png'));
end;

사용 사례. 보고서 분석 자동화, 스크린샷에서 데이터 추출, 시각적 콘텐츠 설명 생성, 이미지 인식 어시스턴트 구축 등을 모두 네이티브 Delphi 코드로 할 수 있어요.

도구 사용 — 함수 호출

JSON 스키마로 사용자 지정 도구를 정의하면 Grok이 언제 어떻게 호출할지 결정해요. 이는 AI를 비즈니스 로직과 연결하는 에이전틱 다단계 워크플로 구축의 기반이에요.

var
  oRequest: TsgcGrokClass_Request_ChatCompletion;
  oTool: TsgcGrokClass_Request_Tool;
  oResponse: TsgcGrokClass_Response_ChatCompletion;
begin
  // Define a tool with JSON Schema
  oTool := TsgcGrokClass_Request_Tool.Create;
  oTool.Name := 'search_database';
  oTool.Description := 'Search the product database by keyword';
  oTool.Parameters :=
    '{"type":"object","properties":{"query":{"type":"string",' +
    '"description":"Search keyword"}},"required":["query"]}';
  oRequest.Tools.Add(oTool);
  oRequest.ToolChoice := 'auto';
  oResponse := Grok.CreateMessage(oRequest);
  // Check if Grok wants to call a tool
  if oResponse.Choices[0].FinishReason = 'tool_calls' then
  begin
    for i := 0 to Length(oResponse.Choices[0].Message.ToolCalls) - 1 do
    begin
      vToolId   := oResponse.Choices[0].Message.ToolCalls[i].Id;
      vFuncName := oResponse.Choices[0].Message.ToolCalls[i].FunctionCall.Name;
      vFuncArgs := oResponse.Choices[0].Message.ToolCalls[i].FunctionCall.Arguments;
      // Execute the tool and return the result
    end;
  end;

모델 관리

사용 가능한 Grok 모델을 프로그래밍 방식으로 쿼리해요. 모든 모델을 나열해 새 기능이 출시될 때 발견하세요.

// List all available Grok models
vModels := Grok._GetModels;
// Typed API: access model properties directly
var
  oModels: TsgcGrokClass_Response_Models;
  i: Integer;
begin
  oModels := Grok.GetModels;
  Try
    for i := 0 to Length(oModels.Data) - 1 do
      Memo1.Lines.Add(oModels.Data[i].Id);
  Finally
    oModels.Free;
  End;
end;

설정 & 옵션

포괄적인 설정 옵션으로 컴포넌트 동작을 세밀하게 조정하세요.

속성 설명
GrokOptions.ApiKey xAI 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 지금까지의 텍스트에 나타나는지 여부에 따라 토큰에 페널티를 부여해요.
N 생성할 완성 수(기본값: 1).
ToolChoice 도구 선택 제어: 'auto', 'none', 또는 'required'.

왜 Grok인가요? 유용성과 실시간 지식에 초점을 맞춰 xAI가 개발한 Grok은 최신 정보와 미묘한 추론이 필요한 작업에서 탁월해요. sgcWebSockets 컴포넌트는 Delphi 코드를 깔끔하고 일관되게 유지하면서 Grok과 다른 AI 제공자 간에 쉽게 전환할 수 있게 해요.