AI Agent
TsgcAIAgent는 Delphi 7부터 13까지의 애플리케이션을 에이전트 대응 상태로 만들어 줍니다. TsgcAIChat과 도구를 지정하고 Run을 호출하면, 프롬프트를 도구와 함께 전송하고 모델이 요청하는 모든 도구 호출을 실행한 뒤 결과를 돌려보내 최종 답변을 반환합니다.
TsgcAIAgent는 Delphi 7부터 13까지의 애플리케이션을 에이전트 대응 상태로 만들어 줍니다. TsgcAIChat과 도구를 지정하고 Run을 호출하면, 프롬프트를 도구와 함께 전송하고 모델이 요청하는 모든 도구 호출을 실행한 뒤 결과를 돌려보내 최종 답변을 반환합니다.
AI 모델의 도구 루프를 대신 처리해 줍니다. 로컬 도구, 사용자 객체의 메서드, MCP 서버의 도구가 모델에 제공되고, 모든 호출은 검사되고 필요하면 승인된 뒤 실행되며, 루프는 답변, 단계 제한, 토큰 한도, 취소 또는 오류에서 멈춥니다.
TsgcAIAgent
모든 LLM 공급자를 위한 도구 호출 에이전트
Windows, macOS, Linux, iOS, Android
에디션. TsgcAIAgent는 sgcAI, sgcWebSockets Enterprise, All-Access에 포함되며, TsgcAIChat과 같은 에디션입니다. 2026.11.0 신기능입니다. sgcAI는 자체 완결형 제품으로, 컴포넌트의 기반이 되는 sgcWebSockets Core 런타임을 포함합니다. Delphi 7부터 Delphi 13, 그리고 C++ Builder에서 사용할 수 있습니다.
채팅을 지정하고, 매개변수와 핸들러를 가진 도구를 추가한 다음 Run을 호출하세요. 데이터를 바꾸는 도구는 먼저 승인을 요청합니다.
uses
sgcAI, sgcAI_Chat, sgcAI_Agent;
procedure TForm1.AskAgent;
var
oTool: TsgcAIAgentTool;
vAnswer: string;
begin
sgcAIChat1.Provider := aicpAnthropic;
sgcAIChat1.ChatOptions.ApiKey := 'sk-ant-...';
sgcAIChat1.ChatOptions.Model := 'claude-opus-5-5';
sgcAIAgent1.Chat := sgcAIChat1;
// optional: the tools of an MCP server are offered too
sgcAIAgent1.MCPClients.Add(sgcWSAPIClient_MCP1);
oTool := sgcAIAgent1.Tools.Add('get_weather', 'Current weather of a city');
oTool.AddParam('city', aatpString, 'City name');
oTool.ReadOnly := True;
oTool.OnExecute := DoGetWeather;
sgcAIAgent1.Options.MaxSteps := 8;
sgcAIAgent1.OnToolApproval := DoToolApproval;
vAnswer := sgcAIAgent1.Run('Do I need an umbrella in Paris today?');
Memo1.Lines.Add(vAnswer);
end;
procedure TForm1.DoGetWeather(Sender: TObject; const aArguments: string;
var aResult: string);
begin
// aArguments is a JSON object, for example {"city":"Paris"}
aResult := '{"city":"Paris","celsius":18,"sky":"rain"}';
end;
procedure TForm1.DoToolApproval(Sender: TObject; const aToolName,
aArguments: string; var aApproved: Boolean);
begin
// tools that are not ReadOnly ask before they run
aApproved := MessageDlg('Run ' + aToolName + ' ' + aArguments + '?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes;
end;
가장 자주 사용하게 되는 멤버들입니다.
Run(aPrompt)은 프롬프트를 도구와 함께 전송하고, 모든 단계의 호출을 실행한 뒤 최종 답변을 반환합니다. Cancel은 다음 모델 요청이나 도구 실행 전에 실행을 중단합니다. Running, StepCount, StopReason으로 종료 방식을 알 수 있습니다: aasrCompleted, aasrMaxSteps, aasrCancelled, aasrError, aasrMaxTokens. aasrMaxTokens는 답변이 토큰 한도로 잘렸다는 뜻이며, 잘린 답변의 도구 호출은 인자가 불완전할 수 있으므로 실행되지 않습니다.
Tools.Add(Name, Description)는 도구 하나를 반환합니다. 인자는 AddParam(string, integer, number, boolean, array, object)으로 설명하거나 InputSchema에 JSON Schema를 그대로 지정하고, OnExecute에서 응답합니다. Tools.AddMethod는 Delphi 2010 이상에서 객체의 public 메서드를 도구로 바꿉니다. 핸들러가 없는 도구는 OnToolCall로 전달됩니다.
TsgcWSAPIClient_MCP 클라이언트를 MCPClients에 추가하세요. Options.ImportMCPTools를 켜면 에이전트가 각 클라이언트를 초기화하고, 도구를 페이지 단위로 조회하며, CallTool로 호출합니다. MCP 도구 핀닝이 차단한 도구는 제공되지 않으며, 이름이 같은 로컬 도구가 우선합니다.
ReadOnly로 표시된 도구는 즉시 실행됩니다. 그 밖의 도구는 먼저 OnToolApproval에 승인을 요청합니다. 거부되었거나 알 수 없는 도구는 오류 텍스트로 모델에 돌아가므로 대화 기록은 항상 유효하게 유지됩니다. 채팅에 TsgcAIGuardrails를 지정하면 도구 이름별로 허용, 거부, 승인 필요를 설정할 수 있습니다.
Options.MaxSteps(기본값 10)는 한 번의 실행에서 보내는 모델 요청 수를 제한합니다. 마지막으로 허용된 요청의 도구도 그대로 실행되고 결과가 저장되므로, 이후의 Run은 실제 결과로 이어집니다. Options.ImportMCPTools로 MCP 가져오기를 켜고 끕니다.
OnStep은 모든 단계를 알려 줍니다: 모델 텍스트, 도구 호출, 도구 결과, 거부된 도구, 최종 답변. OnUsage는 실행 중 모든 모델 요청의 토큰을 알려 줍니다. 채팅에 TsgcAIUsageMeter를 지정하면 비용을 계산할 수 있습니다.
에이전트는 TsgcAIChat의 모든 공급자와 함께 동작합니다: OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok, Mistral이며, 각각 고유한 도구 호출 형식을 사용합니다. 채팅의 폴백을 쓰면 한 공급자가 실패해도 다음 공급자에서 실행이 이어집니다.
이 컴포넌트가 사용하는 서비스와 프로토콜의 공식 자료입니다.