Delphi OpenAI 클라이언트 — ChatGPT, GPT-4, 임베딩, Whisper

OpenAI REST 및 Realtime API용 네이티브 Delphi 클라이언트. 토큰 스트리밍, 함수 호출 및 구조화된 출력이 있는 채팅 완성; 임베딩; Whisper 음성-텍스트; TTS; DALL-E 이미지 생성; 파일 검색이 있는 Assistants v2; 그리고 WebSocket을 통한 GPT-4o Realtime 오디오 API — 모두 단일 Pascal 컴포넌트에서.

하나의 컴포넌트에 전체 OpenAI 표면

Delphi에서 ChatGPT API를 호출하는 것은 손으로 HTTP 요청, JSON 직렬화기, 멀티파트 업로더 및 SSE 스트림 파서를 작성하는 것을 의미했어요. 대신 하나의 컴포넌트를 드롭하세요.

Delphi OpenAI 클라이언트는 VCL / FMX 애플리케이션과 OpenAI 플랫폼 사이의 브리지예요: 자연어 추론용 ChatGPT, 시맨틱 검색 및 RAG용 임베딩, 전사용 Whisper, 음성 출력용 TTS, 이미지 생성용 DALL-E, 그리고 저지연 음성 에이전트용 Realtime API. sgcWebSockets는 모든 공개 엔드포인트를 Pascal 관용적인 속성, 메서드 및 이벤트로 래핑하는 단일 비시각적 컴포넌트인 TsgcHTTP_API_OpenAI를 제공해요.

컴포넌트가 라이브러리의 나머지 부분과 동일한 HTTP/2 스택 위에 구축되었기 때문에 Server-Sent Events를 통한 토큰 스트리밍, 자동 JSON 스키마 마샬링이 있는 전체 함수 호출(이제 “tools”), 병렬 도구 호출, 구조화된 출력(JSON 스키마 제약 응답), Assistants v2 스레드/실행/메시지 라이프사이클, 파일 검색용 벡터 저장소, 그리고 양방향 오디오 스트리밍이 있는 WebSocket을 통한 GPT-4o Realtime API를 얻을 수 있어요. 동일한 컴포넌트가 Azure OpenAI, Anthropic, Groq, Together, Mistral 및 DeepSeek가 노출하는 OpenAI 호환 엔드포인트, 그리고 로컬 OpenAI 호환 서버(Ollama, LM Studio, vLLM)와 통신해요.

컴포넌트 클래스

TsgcHTTP_API_OpenAI

전송

HTTP/2 + SSE 스트리밍 + WebSocket (Realtime)

플랫폼

Windows, macOS, Linux, iOS, Android, .NET

호환 가능한 백엔드

OpenAI, Azure OpenAI, Ollama, DeepSeek, Groq, Together, Mistral, vLLM

모든 OpenAI 엔드포인트, 래핑됨

엔드포인트당 하나의 메서드, 강력하게 타입이 지정된 매개변수, 스트리밍 응답을 위한 비동기 이벤트.

채팅 완성

전체 메시지 배열 지원, 시스템 / 사용자 / 어시스턴트 / 도구 역할, 비전(image_url 콘텐츠), 추론 모델(o1, o3) 및 JSON 스키마 구조화된 출력이 있는 ChatCompletions().

스트리밍

StreamChatCompletions()는 델타 토큰당 OnChatCompletionStreamChunk를 발생시켜요 — SSE 파싱 코드 없이 VCL 그리드나 FMX 텍스트 뷰의 타이프라이터 UX.

함수 호출 / 도구

JSON 스키마 매개변수가 있는 도구 목록을 등록해요; 모델이 하나를 호출할 때 파싱된 인수가 있는 OnChatCompletionToolCall을 받아요. 결과를 다시 푸시하고 재개하세요.

임베딩

text-embedding-3-small / -large이 있는 Embeddings() — Pascal 데이터에 대한 시맨틱 검색, 클러스터링 및 RAG의 기반.

Whisper (STT)

AudioTranscription()AudioTranslation() — WAV/MP3/M4A를 업로드하고 타임스탬프와 단어 수준 신뢰도가 있는 전사 또는 영어 번역을 받아요.

TTS

AudioSpeech()는 MP3, Opus, AAC 또는 FLAC로 합성된 음성을 반환해요 — 음성을 선택하고 결과를 스트리밍 재생하세요.

DALL-E

DALL-E 2 / 3 및 gpt-image-1이 있는 ImageGeneration(), ImageEdit(), ImageVariation(). URL 또는 base64 인코딩된 PNG를 반환해요.

Assistants v2

스레드, 실행, 메시지, 파일, 벡터 저장소 및 코드 인터프리터 — 폴링하지 않도록 실행 스트리밍 이벤트와 함께.

Realtime API

입력/출력 오디오 버퍼, 음성 활동 감지, 함수 호출 및 GPT-4o 지연 시간이 있는 양방향 WebSocket — 자연스럽게 끼어드는 음성 에이전트를 구축하세요.

함수 도구가 있는 스트리밍 채팅

토큰을 스트리밍하고 대화 중에 Delphi 함수를 호출할 수 있는 ChatGPT 호출.

uses
  sgcHTTP_API_OpenAI, sgcHTTP_API_OpenAI_Types;

var
  OpenAI: TsgcHTTP_API_OpenAI;
  oChat:  TsgcHTTPOpenAIChatCompletionRequest;
  oTool:  TsgcHTTPOpenAITool;
begin
  OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
  OpenAI.ApiKey := 'sk-...';
  OpenAI.OnChatCompletionStreamChunk := DoChunk;
  OpenAI.OnChatCompletionToolCall    := DoToolCall;

  oChat := TsgcHTTPOpenAIChatCompletionRequest.Create;
  try
    oChat.Model := 'gpt-4o';
    oChat.Messages.AddSystem('You are a Delphi assistant.');
    oChat.Messages.AddUser('What is the weather in Madrid?');

    oTool := oChat.Tools.AddFunction('get_weather',
      'Return current weather for a city.');
    oTool.Parameters
      .AddString('city', 'City name', True);

    OpenAI.StreamChatCompletions(oChat);
  finally
    oChat.Free;
  end;
end;

procedure TForm1.DoChunk(Sender: TObject;
  const aChunk: TsgcHTTPOpenAIChatCompletionStreamChunk);
begin
  Memo1.Text := Memo1.Text + aChunk.Content;
end;

procedure TForm1.DoToolCall(Sender: TObject;
  const aToolCall: TsgcHTTPOpenAIChatCompletionToolCall);
var
  vCity, vJSON: string;
begin
  if aToolCall.FunctionName = 'get_weather' then
  begin
    vCity := aToolCall.Arguments.S['city'];
    vJSON := MyWeatherLookup(vCity);  // your own Delphi code
    OpenAI.SubmitToolOutput(aToolCall.Id, vJSON);
  end;
end;

WebSocket을 통한 GPT-4o 음성 에이전트

OpenAI Realtime API는 입력 오디오 프레임 스트림을 수락하고 출력 오디오 프레임 스트림을 내보내는 WebSocket 엔드포인트예요 — 서브초 지연 시간, 네이티브 바지인(사용자가 시작할 때 모델이 말을 멈춤), 서버 측 음성 활동 감지 및 REST API와 동일한 도구 호출 표면. sgcWebSockets는 이를 TsgcHTTP_API_OpenAI_Realtime으로 래핑하여 모든 서버 메시지(OnSessionUpdated, OnConversationItemCreated, OnInputAudioBufferSpeechStarted, OnResponseAudioDelta 등)에 대한 타입이 지정된 이벤트를 제공하므로 TBass, TMediaPlayer 또는 모든 오디오 큐에 바로 연결할 수 있어요.

동일한 컴포넌트, 여러 백엔드

Azure OpenAI

Endpoint를 Azure 리소스 URL로 설정하고 ApiKey를 리소스 키로 설정하세요 — 배포 ID가 모델 이름을 대체해요.

Ollama / LM Studio

Endpointhttp://localhost:11434/v1으로 가리키세요 — 동일한 컴포넌트가 로컬 Llama, Mistral, Qwen 및 Phi 모델을 구동해요.

DeepSeek, Groq, Together, Mistral

모두 OpenAI 호환 엔드포인트를 노출해요; 기본 URL과 API 키만 변경해요.

vLLM, SGLang, llama.cpp 서버

OpenAI 호환 REST가 있는 자체 호스팅 추론 서버 — 스트리밍 SSE 경로는 바이트 단위로 동일해요.

심층 분석 리소스

OpenAI 컴포넌트 참조

TsgcHTTP_API_OpenAI에 대한 전체 속성 / 메서드 / 이벤트 참조.

AI / LLM 허브

Anthropic Claude, Google Gemini, Mistral, Ollama, Pinecone, MCP, RAG.

블로그: OpenAI Realtime API

단계별 음성 에이전트 워크스루.

블로그: 함수 호출

모델이 Delphi 코드를 호출하도록 하는 패턴.

블로그: AI 기반 Delphi 앱 구축

ChatGPT + 임베딩을 사용한 종단 간 앱 아키텍처.

블로그: Delphi의 Assistants v2

스레드, 실행, 파일 검색, 코드 인터프리터.

오늘 Delphi 앱에 AI 기능을 출시하세요

체험판을 다운로드하세요 — OpenAI 데모는 채팅, 스트리밍, 도구, Whisper, TTS 및 DALL-E 샘플과 함께 컴파일 준비가 되어 있어요.