가이드
지금 하려는 작업을 고르세요
아래 요약은 그 자체로 질문에 답할 만큼 충분히 길어요. 그래서 페이지를 열기 전에 다음 20분을 쓸 만한지 판단할 수 있어요.
Delphi에서 LLM 호출하기
VCL, FMX 또는 콘솔 애플리케이션에서 프롬프트를 보내고 답변을 받아요. OpenAI나 Anthropic Claude 같은 호스팅 모델도 되고, Ollama로 내 컴퓨터에서 돌아가는 모델도 돼요. 경로는 두 가지예요. TsgcAIChat은 모든 공급자를 하나의 API 뒤에 두기 때문에 공급자를 바꾸는 일은 Provider에 값을 한 번 대입하는 것으로 끝나요. 그리고 공급자별 클라이언트인 TsgcHTTP_API_OpenAI, TsgcHTTP_API_Anthropic, TsgcHTTP_API_Ollama는 비전 입력, 배치, Embeddings, 음성 전사가 필요할 때 각 공급자 API를 전부 노출해요.
이어서 모든 프로젝트가 다음으로 마주치는 세 가지를 다뤄요. 첫째는 스트리밍이에요. 모델이 아직 쓰고 있는 동안 메모에 텍스트가 나타나도록, 디코딩된 델타 수준과 원시 이벤트 수준 양쪽에서 설명해요. 둘째는 툴 호출이에요. Pascal 함수를 JSON Schema로 기술하면 모델이 그 함수를 실행해 달라고 요청해요. 셋째는 호스팅 모델과 로컬 모델 사이의 선택이에요. 데이터 처리 계약이 적용되는 경우라면 이건 성능이 아니라 컴플라이언스 결정이에요.
필요 사항: sgcWebSockets Enterprise 또는 단독 sgcAI 패키지가 필요해요. REST 클라이언트는 Windows, macOS, Linux, iOS, Android에서 컴파일돼요. TsgcAIChat은 Windows 전용이라 페이지에서 두 경로를 모두 보여줘요.
가이드 읽기 →
OAuth2와 PKCE로 사용자 로그인 처리하기
PKCE를 적용한 Authorization Code 플로우는 이제 모든 공급자가 네이티브 데스크톱 애플리케이션에 요구하는 방식이에요. 이걸 비주얼이 아닌 컴포넌트 하나로 처리해요. 내장 브라우저도, 직접 만든 웹 서버도, REST 프레임워크도 필요 없어요. TsgcHTTP_OAuth2_Client가 verifier를 만들고, challenge를 유도하고, 시스템 브라우저를 열고, 루프백 리디렉션을 수신하고, 코드를 교환한 뒤 토큰과 함께 OnAfterAccessToken을 발생시켜요.
데스크톱에서 이 플로우가 어긋나는 지점은 리디렉션이에요. 그래서 페이지는 거기에 충분한 분량을 써요. 리디렉션이 왜 공개 URL이 아니라 루프백 주소인지, 공급자에 무엇을 등록해야 하는지, redirect_uri_mismatch가 무엇을 말하고 있는지 설명해요. 이어서 브라우저가 두 번 다시 열리지 않게 해주는 리프레시 토큰, 자격 증명을 아무 데나 두지 않고 저장하는 방법, 미리 만들어진 Google과 Microsoft 컴포넌트, 그리고 Gmail과 Microsoft 365가 이제 SMTP와 IMAP에서 요구하는 XOAUTH2 전달 방식을 다뤄요.
필요 사항: sgcWebSockets Standard 이상, 또는 단독 sgcAuth 패키지가 필요해요. Windows, macOS, Linux, iOS, Android를 지원해요. Enterprise 기능인 것은 인증 서버 쪽뿐이에요.
가이드 읽기 →
WebRTC로 두 Delphi 애플리케이션 연결하기
서로 다른 두 네트워크에 있는 두 애플리케이션이 채팅 채널과 마이크 스트림, 카메라 스트림을 직접 주고받아요. 중간에 미디어 서버도 없고, 프로세스 안에 브라우저를 심지도 않아요. 페이지는 WebRTC를 실제로 구성하는 네 가지 문제로 나눠서 다뤄요. 세션을 SDP offer와 answer로 기술하기, 그 기술을 상대편에 전달하기, NAT를 통과하는 경로 찾기, 그리고 바이트를 실어 나르기예요.
시그널링은 직접 작성해야 하는 부분이라, 메시지 종류 세 개를 쓰는 TsgcWebSocketServer 기반의 단순 릴레이로 전체 코드를 실었어요. 그다음에는 피어 연결과 그 이벤트, ICE 후보, 그리고 host와 server reflexive, relay 후보가 각각 어떤 대가를 치르게 하는지, 사람들이 잊고 지나가는 TURN 스위치, 채널별 신뢰성을 설정하는 SCTP 데이터 채널, 그리고 데이터 채널과는 전송 방식도 실패 양상도 다른 오디오와 비디오 트랙을 다뤄요. 마지막은 오류를 전혀 남기지 않는 실패들로 마무리해요. 피어 투 피어 디버깅이 어려운 이유가 바로 그거예요.
필요 사항: 피어 연결과 ICE, TURN 클라이언트는 sgcWebSockets Enterprise에 들어 있어요. offer와 answer 메서드, 데이터 채널, 미디어 트랙은 Enterprise 위에 sgcWebRTC 팩이 더 필요하고, 이 팩은 All-Access에도 포함돼요. STUN 클라이언트는 Standard부터 제공돼요.
가이드 읽기 →