기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
즉각적인 주입 공격을 방지하기 위한 모범 사례
다음 가드레일과 모범 사례는 Anthropic Claude로 구동되는 RAG 애플리케이션에서 시연 모델로 테스트되었습니다. 제안 사항은 Claude 모델 패밀리에 매우 적용할 수 있지만 모델별 수정(예: XML 태그 제거 및 다른 대화 속성 태그 사용)이 보류 중인 다른 비클라우드 LLMs으로도 이전할 수 있습니다.
<사고> 및 <응답> 태그 사용
기본 RAG 템플릿에 <thinking>
및 <answer>
태그를 추가하는 것이 유용합니다. <thinking>
태그를 사용하면 모델이 작업을 표시하고 관련 발췌문을 표시할 수 있습니다. <answer>
태그에는 사용자에게 반환할 응답이 포함됩니다. 경험적으로 이러한 두 태그를 사용하면 모델이 여러 정보 소스를 함께 피어싱해야 하는 복잡하고 미묘한 질문에 답변할 때 정확도가 향상됩니다.
가드레일 사용
LLM 기반 애플리케이션을 보호하려면 앞서 설명한 일반적인 공격을 확인하고 방어하는 데 도움이 되는 특정 가드레일이 필요합니다. 이 가이드에서 보안 가드레일을 설계할 때 템플릿에 도입된 토큰 수가 가장 적으면서 가장 많은 이점을 얻을 수 있었습니다. 대부분의 모델 공급업체는 입력 토큰으로 요금을 부과하기 때문에 토큰이 적은 가드레일은 비용 효율적입니다. 또한 과다 엔지니어링된 템플릿은 정확도를 떨어뜨리는 것으로 나타났습니다.
솔팅된 시퀀스 태그의 단일 페어로 지침 래핑
일부 LLMs은 정보가 XML 태그<tagname-abcde12345>
. 추가 명령은 이러한 태그 내에 있는 지침만 고려하도록 LLM에 명령합니다.
이 접근 방식의 한 가지 문제는 모델이 예상대로 또는 예기치 않게 응답에 태그를 사용하는 경우 솔트 시퀀스도 반환된 태그에 추가된다는 것입니다. 이제 사용자는이 세션별 시퀀스를 알고 있으므로 태그 스푸핑을 수행할 수 있습니다. 이는 LLM에 솔트 태그가 지정된 지침을 고려하도록 명령하는 명령으로 인해 더 높은 효율성으로 수행될 수 있습니다. 이 위험을 피하기 위해 템플릿의 태그가 지정된 단일 섹션에 모든 지침을 래핑하고 솔트 시퀀스로만 구성된 태그(예: <abcde12345>
)를 사용합니다. 그런 다음이 태그가 지정된 세션의 지침만 고려하도록 모델에 지시할 수 있습니다. 이 접근 방식은 모델이 솔팅된 시퀀스를 공개하지 못하도록 하고 템플릿 지침을 도입하거나 보강하려고 시도하는 태그 스푸핑 및 기타 공격으로부터 보호하는 데 도움이 되었음을 발견했습니다.
특정 지침을 제공하여 공격을 탐지하도록 LLM을 교육합니다.
또한 LLM에 공격을 탐지하는 방법을 교육하기 위해 일반적인 공격 패턴을 설명하는 일련의 지침도 포함되어 있습니다. 지침은 사용자 입력 쿼리에 중점을 둡니다. LLM에 주요 공격 패턴의 존재를 식별하고 패턴을 발견하면 "Prompt Attack Detected"를 반환하도록 지시합니다. 이러한 지침이 있으면 LLM에 일반적인 공격을 처리하기 위한 바로 가기를 제공할 수 있습니다. 이 바로 가기는 템플릿이 <thinking>
및 <answer>
태그를 사용할 때 관련이 있습니다. LLM은 일반적으로 악성 지침을 반복적이고 세부적으로 구문 분석하여 결국 규정 준수로 이어질 수 있기 때문입니다(다음 섹션의 비교에서 설명).