가드레일: LLM을 둘러싼 입력과 출력 필터링
모델 하나만으로는 안전한 제품이 되지 않습니다. 가드레일은 LLM을 실제로 필요한 경계 안에 머무르게 하는 입력과 출력 필터입니다.
언어 모델은 여러분이 전혀 의도하지 않은 일도 기꺼이 해냅니다. 권한 밖의 질문에 답하고, 사용자의 적대적인 표현을 그대로 따라 하고, 비밀로 지키라고 일러둔 지시를 흘리고, 후속 코드가 파싱할 수 없는 출력을 내놓기도 합니다. 이 가운데 어느 것도 모델이 고장 났다는 뜻은 아닙니다. 그저 가공되지 않은 모델은 하나의 역량일 뿐, 제품이 아니라는 뜻입니다. 가드레일은 전자를 후자로 바꿔 주는 계층입니다. 들어가는 것과 나오는 것에 대해 실행하는 검사들로, 시스템이 여러분이 방어할 수 있는 경계 안에 머무르게 합니다.
가드레일이란 정확히 무엇인가
마케팅 수사를 걷어내면, 가드레일은 결정이 붙은 필터입니다. 무언가 — 텍스트, 요청, 생성된 답변 — 가 검사를 통과하면, 그 검사는 그것을 허용하거나, 차단하거나, 변형합니다. 검사는 단순한 규칙일 수도, 분류기일 수도, 또 다른 모델 호출일 수도 있습니다. 중요한 부분은 결정입니다. 문제를 감지하고도 아무 조치를 하지 않는 가드레일은 그저 로깅에 불과합니다.
가드레일은 두 부류로 나뉘는데, 이 구분이 머릿속에 새겨 두기에 가장 유용한 개념입니다.
- 입력 가드레일은 사용자와 모델 사이에 자리합니다. 요청이 생성 단계에 도달하기 전에 검사합니다.
- 출력 가드레일은 모델과 사용자(또는 다음 시스템) 사이에 자리합니다. 누군가 그것을 토대로 행동하기 전에 모델이 만들어 낸 결과를 검사합니다.
대부분의 실제 시스템은 둘 다 필요합니다. 두 부류가 서로 다른 실패를 잡아내기 때문입니다. 입력을 필터링한다고 해서 안전한 출력이 보장되지는 않으며, 깨끗해 보이는 출력이 애초에 처리되어서는 안 됐을 요청에서 나올 수도 있습니다.
입력 필터링
입력 가드레일은 한 가지 질문에 답합니다. 이것을 굳이 모델에 통과시킬 필요가 있는가? 이 자리에 들어올 자격이 있는 검사들이 몇 가지 있습니다.
첫째는 모더레이션 — 아예 관여하지 않기로 결정한 콘텐츠를 걸러내는 일입니다. 카테고리가 모호하고 적대적인 사용자들이 끊임없이 경계를 시험하기 때문에, 손으로 쓴 규칙보다 전용 분류기가 가장 명확하게 어울리는 경우입니다.
둘째는 프롬프트 인젝션에 대한 경계심입니다. 애플리케이션이 외부에서 텍스트를 끌어올 때 — 웹페이지, 업로드된 문서, 이메일 — 그 텍스트에는 모델이 처리할 콘텐츠가 아니라 모델을 겨냥한 지시가 담겨 있을 수 있습니다. 입력 가드레일이 인젝션을 완전히 해결하지는 못하지만, 의심스러운 패턴을 표시할 수는 있고, 무엇보다 신뢰할 수 없는 입력을 여러분 자신의 지시와 분명히 분리해 두라는 점을 일깨워 줍니다.
셋째는 범위입니다. 많은 제품은 한 가지 일을 하도록 만들어집니다. 은행 앱의 고객 지원 도우미가 시를 쓰거나 의학적 조언을 할 이유는 없습니다. 그것들이 해로워서가 아니라, 본래 목적에서 벗어나 신뢰를 갉아먹기 때문입니다. 가벼운 주제 검사 하나가 시스템이 무엇을 위한 것인지 정직하게 유지하게 해 줍니다.
일찍 들여야 할 규율은 이것입니다. 입력이 여러분 자신의 UI에서 왔다고 해서 믿지 마십시오. 텍스트 입력란은 정문이고, 문제는 정문으로 걸어 들어옵니다.
출력 필터링
출력 가드레일은 대부분의 팀이 투자를 소홀히 하는 지점이지만, 사실 더 중요한 쪽인 경우가 많습니다. 모델은 이제 무언가를 생성했고, 그것이 사람에게 도달하거나 어떤 행동을 촉발하기 전에 문제를 잡아낼 마지막 기회가 한 번 주어집니다.
유용한 출력 검사로는 다음이 있습니다.
- 안전과 정책. 어떤 식으로 프롬프트를 받았든, 모델이 여러분이 명시한 정책을 위반하는 콘텐츠를 만들어 냈는가? 이는 입력 계층이 놓친 인젝션과 탈옥 시도에 대한 최후의 보루입니다.
- 형식과 구조. 코드가 특정한 형태 — 정해진 필드 집합, 고정된 목록에서 고른 카테고리 — 를 기대한다면, 파싱하기 전에 그것을 검증하십시오. 구조화된 데이터를 기대한 자리에서 산문을 반환하는 모델은 세 함수 아래에서 충돌이 나서가 아니라 여기서 잡혀야 합니다.
- 근거. 지식 출처에서 답하는 시스템이라면, 답변이 지어낸 것이 아니라 검색된 자료에 실제로 뒷받침되는지 확인하십시오. 다른 검사들보다 어렵고 완벽한 경우는 드물지만, 거친 형태라도 자신만만한 날조는 잡아냅니다.
- 유출. 응답이 시스템 지시, 내부 식별자, 다른 사용자의 데이터를 드러냈는가? 알려진 민감 문자열과 대조하는 간단한 검사는 비용이 저렴하고 실행할 가치가 있습니다.
출력 가드레일이 겉보기보다 더 중요한 이유는, 그것이 결과에 가장 가까운 계층이기 때문입니다. 무언가 출력 검사에 다다를 즈음이면 상류의 모든 영리한 처리는 이미 끝난 뒤입니다. 이것이 마지막 정직한 관문입니다.
얼마나 엄격하게 할지 정하기
모든 가드레일에는 실패하는 두 가지 방식이 있습니다. 차단했어야 할 것을 통과시키거나(놓침), 아무 문제 없는 것을 차단하거나(오경보)입니다. 둘 다 0으로 만들 수는 없으며, 그럴 수 있는 척하면 안전하지 않거나 사용할 수 없는 시스템이 만들어집니다.
올바른 균형은 전적으로 걸린 위험에 달려 있습니다. 돈을 옮기거나 고객에게 이메일을 보내는 행동 앞에 놓인 가드레일은 엄격한 쪽으로 기울어 닫힌 채로 실패해야 합니다 — 의심스러우면 차단하고 에스컬레이션하십시오. 브레인스토밍 도우미의 가드레일은 관대한 쪽으로 기울어도 됩니다. 오경보의 비용(짜증 난 사용자)이 가끔 놓침의 비용(사용자가 그냥 무시하는, 약간 빗나간 답변)을 능가하기 때문입니다. 각 가드레일이 이 스펙트럼의 어디에 놓이는지를 튜닝하기 전에 결정하십시오. "얼마나 엄격하게?"라는 질문은 관문 반대편에 무엇이 있는지 모르고서는 답할 수 없으니까요.
모든 것을 느리게 만들지 않으면서 구축하기
가드레일은 일을 더하고, 일은 지연 시간과 비용을 더합니다. 몇 가지 패턴이 그것을 감당할 만한 수준으로 유지해 줍니다.
저렴한 검사를 먼저 실행하십시오. 단순한 규칙 기반 필터와 문자열 매칭은 비용이 거의 들지 않습니다. 모델 호출이 필요한 어떤 검사보다 먼저 실행하고, 이른 차단이 나머지를 단락시키도록 하십시오. 비싼 분류기와 모델 검사는 이미 저렴한 관문을 통과한 입력에만 남겨 두십시오.
가능한 곳에서는 독립적인 검사를 병렬로 실행해, 총 지연 시간이 모든 검사의 합이 아니라 가장 느린 검사가 되도록 하십시오. 그리고 차단 검사와 모니터링 검사를 분리하십시오. 사용자가 응답을 보기 전에 반드시 통과해야 하는 검사는 인라인으로 실행해야 하지만, 분석용으로만 원하는 검사는 사후에, 크리티컬 패스 밖에서 실행할 수 있습니다.
마지막으로, 모든 가드레일 결정을 로깅하십시오 — 무엇이, 무엇에 대해 발동했고, 어떤 일이 벌어졌는지를. 가드레일은 그것이 너무 느슨하거나 너무 빡빡한 지점을 볼 수 있는 능력만큼만 좋으며, 그 가시성은 전적으로 로그에서 나옵니다.
가드레일이 할 수 없는 일
한계에 대해서는 정직할 필요가 있습니다. 가드레일은 위험을 줄이지만, 없애지는 못합니다. 작정한 적대자는 여러분의 필터가 놓치는 표현을 찾아낼 것이고, 충분히 유능한 모델은 어떤 검사도 예상하지 못한 놀라운 결과를 가끔 내놓을 것입니다. 또한 가드레일은 애초에 모델이 얌전하게 행동하는 것의 대체물이 아닙니다 — 가드레일은 방어 계층이지, 유일한 방어가 아닙니다.
가드레일은 더 큰 태세의 한 부분으로 다루십시오. 그 태세에는 과업에 맞게 선택되고 프롬프트된 모델, 모델이 촉발할 수 있는 모든 행동에 대한 최소 권한 접근, 위험이 요구하는 곳에서의 사람 검토, 그리고 무언가 빠져나갔을 때를 위한 사고 대응 계획이 포함됩니다. 밤에 발 뻗고 자게 해 주는 가드레일 계층은 이 모든 것이 함께 만들어 낸 산물이지, 영리한 필터 하나가 아닙니다.
정리
가드레일은 모델과, 실제 사용자 앞에 내놓을 수 있는 제품 사이의 차이입니다. 무엇을 실행할 가치가 있는지 정하기 위해 입력을 필터링하고, 무엇을 토대로 행동해도 안전한지 정하기 위해 출력을 필터링하며, 각 관문 뒤에 놓인 것에 맞춰 엄격함을 튜닝하십시오. 저렴한 검사를 먼저, 비싼 검사는 드물게 두고, 모든 결정을 로깅하며, 한계에 대해서는 겸손함을 유지하십시오. 모델은 역량을 주고, 가드레일은 그 역량을 안전하게 출시할 수 있게 하는 경계를 줍니다.
