Guardrails
TsgcAIGuardrails는 애플리케이션과 언어 모델 사이에 위치합니다. 개인 데이터는 요청이 애플리케이션을 떠나기 전에 플레이스홀더로 대체되고 답변에서 복원되며, 도구는 이름별로 허용, 거부 또는 승인 요청되고, 구조화된 답변은 JSON 스키마로 검증됩니다.
TsgcAIGuardrails는 애플리케이션과 언어 모델 사이에 위치합니다. 개인 데이터는 요청이 애플리케이션을 떠나기 전에 플레이스홀더로 대체되고 답변에서 복원되며, 도구는 이름별로 허용, 거부 또는 승인 요청되고, 구조화된 답변은 JSON 스키마로 검증됩니다.
AI 기능이 운영 환경에 나가기 전에 필요한 규칙을 하나의 컴포넌트에 담았습니다. TsgcAIChat.Guardrails에 지정하면 채팅의 모든 요청과 그 채팅에서 실행되는 에이전트의 모든 실행이, 어느 공급자가 답하든 같은 규칙을 따릅니다.
TsgcAIGuardrails
PII 마스킹, 도구 규칙, 답변 검증
Windows, macOS, Linux, iOS, Android
에디션. TsgcAIGuardrails는 sgcAI, sgcWebSockets Enterprise, All-Access에 포함되며, TsgcAIChat과 같은 에디션입니다. 2026.11.0 신기능입니다. sgcAI는 자체 완결형 제품으로, 컴포넌트의 기반이 되는 sgcWebSockets Core 런타임을 포함합니다. Delphi 7부터 Delphi 13, 그리고 C++ Builder에서 사용할 수 있습니다.
마스킹을 켜고, 허용 및 거부할 도구를 나열하고, 스키마를 지정한 다음, 가드레일을 채팅에 지정하세요.
uses
sgcAI, sgcAI_Chat, sgcAI_Guardrails;
procedure TForm1.ProtectChat;
var
vText, vError: string;
begin
// personal data never leaves the application
sgcAIGuardrails1.PII.Enabled := True;
sgcAIGuardrails1.PII.CustomPatterns.Add('EmployeeId=EMP-####');
// read and search tools are allowed, deleting never is
sgcAIGuardrails1.AllowedTools.Add('read_*');
sgcAIGuardrails1.AllowedTools.Add('search_*');
sgcAIGuardrails1.DeniedTools.Add('*delete*');
sgcAIGuardrails1.ToolApproval := aigaNotReadOnly;
// structured answers must match the schema
sgcAIGuardrails1.Schema.Enabled := True;
sgcAIGuardrails1.Schema.JSONSchema := '{"type":"object","properties":' +
'{"price":{"type":"number","minimum":0}},"required":["price"]}';
sgcAIChat1.Guardrails := sgcAIGuardrails1;
sgcAIAgent1.Chat := sgcAIChat1; // the agent follows the same tool rules
vText := sgcAIGuardrails1.Redact('Mail bob@example.com, call +34 600 111 222');
Memo1.Lines.Add(vText); // Mail [EMAIL_1], call [PHONE_1]
Memo1.Lines.Add(sgcAIGuardrails1.Restore(vText)); // the original text
if not sgcAIGuardrails1.ValidateJSON('{"price":"cheap"}',
sgcAIGuardrails1.Schema.JSONSchema, vError) then
Memo1.Lines.Add(vError); // $.price: expected number
end;
가장 자주 사용하게 되는 멤버들입니다.
PII.Enabled를 켜면 이메일 주소, 전화번호, 카드 번호(Luhn 검사), IBAN(mod 97 검사), IPv4와 IPv6 주소가 요청 전송 전에 [EMAIL_1] 같은 플레이스홀더로 대체되며, PII.RestoreInAnswers가 켜져 있는 동안 답변에서 복원됩니다. PII.Kinds로 종류를 선택합니다.
PII.CustomPatterns는 Name=Pattern 형식으로 사용자 고유의 식별자를 추가합니다. #은 숫자, @는 문자, ?는 임의의 문자 하나, *는 단어의 나머지 부분을 뜻하며, 예를 들어 EmployeeId=EMP-####는 [EMPLOYEEID_1]을 만듭니다.
AllowedTools와 DeniedTools는 * 와일드카드를 쓴 도구 이름을 받으며 대소문자를 구분하지 않고 비교하고, 거부된 이름이 항상 우선합니다. 거부된 도구는 모델에 제공되지 않고, 모델이 그래도 호출하면 다시 거부됩니다. OnToolBlocked는 모든 거부를 이유와 함께 알려 줍니다.
ToolApproval은 실행 전에 TsgcAIAgent.OnToolApproval에 승인을 요청할 도구를 정합니다: aigaNone, aigaNotReadOnly(기본값), aigaAll.
Schema.Enabled를 켜면 구조화된 답변이 Schema.JSONSchema로 검증됩니다: type, required, properties, additionalProperties, enum, const, minimum, maximum, 길이, 항목 수. 위반하면 $.price: expected number 같은 경로와 함께 OnSchemaViolation이 발생하고, 채팅은 답변을 저장하는 대신 오류를 보고합니다.
Redact, Restore, ValidateJSON, IsToolAllowed는 채팅 없이 단독으로도 동작합니다. ClearRedactions는 플레이스홀더 매핑을 지웁니다.
이 컴포넌트가 사용하는 서비스와 프로토콜의 공식 자료입니다.