AI Chat
TsgcAIChat은 7개 대규모 언어 모델 공급자를 위한 단일 채팅 클라이언트입니다. Provider를 지정하고 API 키와 모델을 설정한 다음 Chat을 호출하면 됩니다. 공급자를 바꾸는 데는 할당문 하나면 충분하고 나머지 코드는 그대로 유지됩니다.
TsgcAIChat은 7개 대규모 언어 모델 공급자를 위한 단일 채팅 클라이언트입니다. Provider를 지정하고 API 키와 모델을 설정한 다음 Chat을 호출하면 됩니다. 공급자를 바꾸는 데는 할당문 하나면 충분하고 나머지 코드는 그대로 유지됩니다.
공급자에 종속되지 않는 채팅 컴포넌트입니다. 대화 기록을 유지하고 공급자별 JSON 본문을 구성하며, 해당 HTTP API 클라이언트를 구동해 어시스턴트 텍스트를 한 번에 또는 토큰 단위로 돌려줍니다.
sgcAI는 자체 완결형 제품입니다. 이 컴포넌트는 기반이 되는 sgcWebSockets Core 런타임과 함께 sgcAI에 포함되어 제공됩니다.
공급자를 고르고 키와 모델을 설정한 다음 Chat을 호출하세요. 스트리밍과 비동기 방식도 동일한 설정을 사용합니다.
uses
sgcAI, sgcAI_Chat;
var
oChat: TsgcAIChat;
vAnswer: string;
begin
oChat := TsgcAIChat.Create(nil);
oChat.Provider := aicpAnthropic;
oChat.ChatOptions.ApiKey := 'sk-ant-...';
oChat.ChatOptions.Model := 'claude-sonnet-4-5';
oChat.ChatOptions.MaxTokens := 4096;
oChat.SystemMessage := 'You are a Delphi expert.';
oChat.MaxHistoryMessages := 20;
// Blocking call, returns the assistant text.
vAnswer := oChat.Chat('How do I keep a WebSocket connection alive?');
// Token by token, delivered on OnChatStream.
oChat.OnChatStream := OnChatStreamHandler;
oChat.ChatStream('Now explain it to a beginner.');
end;
procedure TForm1.OnChatStreamHandler(Sender: TObject;
const aChunk: string; var Cancel: Boolean);
begin
Memo1.Text := Memo1.Text + aChunk;
Cancel := StopRequested; // abort a long generation
end;
// includes: sgcAI.hpp, sgcAI_Chat.hpp
TsgcAIChat *oChat = new TsgcAIChat(NULL);
oChat->Provider = aicpOpenAI;
oChat->ChatOptions->ApiKey = "sk-...";
oChat->ChatOptions->Model = "gpt-4o";
oChat->SystemMessage = "You are a Delphi expert.";
String vAnswer = oChat->Chat("How do I keep a WebSocket connection alive?");
// Local models: same code, no data leaves the machine.
oChat->Provider = aicpOllama;
oChat->ChatOptions->BaseUrl = "http://127.0.0.1:11434";
oChat->ChatOptions->Model = "llama3";
vAnswer = oChat->Chat("Same question, local model.");
가장 자주 사용하게 되는 멤버들입니다.
Provider로 공급자를 선택합니다: aicpOpenAI, aicpAnthropic, aicpGemini, aicpDeepSeek, aicpOllama, aicpGrok, aicpMistral. 값을 바꾸면 이전 공급자를 위해 캐시해 둔 클라이언트가 해제됩니다.
ApiKey, Model, MaxTokens, Temperature, TopP, BaseUrl을 제공합니다. Temperature와 TopP를 기본값으로 두면 요청에서 생략되어 공급자 기본값이 적용됩니다.
SystemMessage는 모든 턴에 적용될 페르소나를 지정합니다. MaxHistoryMessages는 다시 전송되는 과거 메시지 수를 제한해 토큰 비용을 억제합니다. ClearHistory와 GetHistory로 대화 기록을 초기화하고 읽습니다.
Chat은 블로킹 방식으로 답변을 반환합니다. ChatStream은 SSE로 스트리밍합니다. ChatWithSystem은 한 턴에 한해 시스템 프롬프트를 덮어씁니다. ChatAsync는 Delphi 2010 이상에서 future를 반환합니다.
OnChatMessage는 완료된 메시지를 역할과 함께 알려 줍니다. OnChatStream은 모든 청크를 전달하며 Cancel 플래그를 함께 제공합니다. OnChatError는 공급자 오류와 전송 오류를 노출합니다.
ChatWithDocument와 ChatWithDocumentBase64는 메시지와 함께 PDF나 이미지 하나를 전송하고, ChatWithAttachments와 ChatJSONWithAttachments는 TsgcAIChatAttachments 목록에 담긴 여러 개를 전송합니다. OpenAI, Anthropic, Gemini는 PDF를 그대로 읽고, 나머지 공급자는 이미지를 받습니다. 채팅을 TsgcAIDocumentExtractor와 연결하면 인보이스, 영수증, 신분증을 스키마로 검증된 JSON으로 바꿀 수 있으며, 필드마다 신뢰도가 제공됩니다.
Provider를 aicpOllama로 설정하면 ChatOptions.BaseUrl이 컴포넌트를 자체 Ollama 호스트로 향하게 하므로, 프롬프트와 답변이 컴퓨터 밖으로 나가지 않습니다.
이 컴포넌트가 사용하는 서비스와 프로토콜의 공식 자료입니다.