가드레일

Guardrail

도구

언어 모델이 주고받는 입력과 출력에 넘으면 안 되는 선을 코드로 정해 두고 어기면 막는 장치입니다.

등장 배경

대규모 언어 모델은 앞의 말에 이어질 법한 말을 고르는 방식으로 답을 만듭니다. 그래서 같은 질문을 두 번 던져도 답이 똑같지 않고, 틀린 답도 맞는 답과 똑같이 자신 있는 문장으로 나옵니다. 모델을 붙여 만든 기능이 시연에서는 매번 잘 돌다가 고객 앞에서 사고를 내는 이유가 이것입니다.

페이지덱에서 실제로 그랬습니다. 태오가 고객 문의에 초안 답장을 써 주는 기능을 붙였고, 사내 시연에서는 스무 건 내리 멀쩡했습니다. 붙인 다음 주에 한 고객이 결제 다음 날 전액 환불을 요청했는데, 초안이 "일주일 안에는 전액 환불해 드립니다" 라고 썼습니다. 페이지덱에는 그런 규정이 없었습니다. 수아가 그 문장을 그대로 보냈고, 고객은 회사가 한 약속으로 받아들였습니다.

처음 꺼낸 대책은 지시문을 고치는 것이었습니다. "규정에 없는 내용은 쓰지 마" 라는 문장을 지시문에 넣었고 시연에서는 다시 잘 돌았습니다. 하지만 지시문은 부탁이지 보장이 아닙니다. 천 건 중 몇 건에서는 여전히 없는 규정이 나왔고, 그 몇 건도 고객에게 가는 문장입니다. 가드레일은 모델에게 부탁하는 대신 모델 바깥에 검사를 세워 둔다는 발상입니다. 모델이 무엇을 내놓든 그 답이 회사 밖으로 나가기 전에 코드가 한 번 읽고 통과 여부를 정합니다.

해결하는 문제

모델의 답이 정해진 선을 넘었는지 사람이 아니라 코드가 매번 확인하게 만드는 문제를 해결합니다. 선을 넘는 방식은 대개 네 가지입니다.

  1. 근거 없는 사실. 환각은 모델이 사실이 아닌 내용을 그럴듯한 문장으로 내놓는 현상입니다. 앞의 환불 규정이 그것입니다. 검사는 답에 담긴 문장이 근거로 준 문서 안에 실제로 있는지를 대조하는 식으로 겁니다.
  2. 형식 이탈. 모델의 답을 화면이나 다른 프로그램이 받아 쓰는 경우, 정해 둔 형식에서 조금만 벗어나도 그 뒤가 전부 멈춥니다. 항목 세 개짜리 목록을 기대한 자리에 설명 문장이 붙어 오면 화면이 빈 채로 뜹니다.
  3. 나오면 안 되는 내용. 경쟁사를 깎아내리는 말, 법률이나 의료 판단으로 읽힐 문장, 회사가 한 적 없는 약속이 여기 듭니다. 금지 주제 목록을 두고 걸러 냅니다.
  4. 들어오면 안 되는 입력. 고객이 붙여 넣은 글에 개인 식별 정보가 섞여 모델에 그대로 넘어가는 경우, 또는 앞선 지시를 무시하라고 적어 넣어 지시문을 흔드는 경우입니다. 이쪽은 답이 만들어지기 전에 입력을 검사해 막습니다.

검사가 걸렸을 때 하는 일도 미리 정해 둡니다. 세 갈래입니다. 그대로 막고 정해진 안내 문구를 대신 내보내거나, 조건을 덧붙여 모델에게 한 번 더 시키거나, 사람에게 넘겨 확인을 받습니다. 마지막 갈래를 사람 개입이라 합니다. 걸린 사실은 기록으로 남깁니다. 어떤 검사가 몇 번 걸렸는지를 세어야 선을 너무 좁게 그었는지 알 수 있습니다.

대안

같은 문제를 다루는 수단이 넷 더 있고, 어느 하나가 나머지를 대신하지는 않습니다.

  1. 지시문을 다듬습니다. 프롬프트 엔지니어링은 모델에게 주는 지시문을 설계하는 일입니다. 가장 싸고 가장 먼저 꺼내는 수단이지만 어디까지나 부탁이라, 백 번 중 아흔여덟 번을 맞히고 두 번을 틀립니다.
  2. 근거를 붙여 줍니다. RAG는 질문이 들어오면 사내 자료에서 관련 대목을 먼저 찾아 지시문에 붙여 주고 모델이 그 대목만 보고 답하게 하는 방식입니다. 지어낼 여지를 줄이는 쪽이지 없애는 쪽은 아닙니다.
  3. 기능의 입구를 좁힙니다. 무엇이든 쓸 수 있는 입력창 대신 고를 수 있는 선택지를 주면 답의 범위도 함께 좁아집니다. 답장 초안을 자유롭게 쓰게 하는 대신 미리 승인된 문단 다섯 개 중 하나를 고르게 하는 식입니다.
  4. 사람이 확인하고 내보냅니다. 가장 확실하지만 처리량이 사람 수에 묶이고, 하루 수천 건이 오가는 자리에서는 쓸 수 없습니다.

넷과 가드레일의 자리가 다릅니다. 앞의 셋은 틀린 답이 나올 확률을 낮추고, 가드레일은 이미 나온 답을 내보낼지 말지를 정합니다. 그래서 실제 제품은 대개 셋으로 확률을 낮춘 다음 남은 몫에 가드레일을 걸고, 가드레일이 걸러 낸 것 중 판단이 필요한 것만 사람에게 올립니다.

실무 용례

"이 기능 가드레일 없이는 못 내보냅니다. 답장이 그대로 고객한테 가잖아요."

모델의 답이 사람 확인 없이 밖으로 나가는 자리이니 출력 검사를 먼저 붙이자는 말입니다.

"가드레일이 너무 세요. 멀쩡한 답까지 막혀서 거부율이 3할입니다."

선을 좁게 그은 탓에 쓸 만한 답까지 버려지고 있다는 지적입니다.

"그건 가드레일로 막을 게 아니라 프롬프트에서 풀어야 할 것 같은데요."

검사로 걸러 내기보다 지시문을 고쳐 애초에 그런 답이 덜 나오게 하자는 제안입니다.

페이지덱의 답장 초안 기능에는 지금 검사 세 개가 걸려 있습니다. 근거 문서에 없는 금액과 기간이 문장에 들어 있으면 막고, 환불과 계약 해지라는 말이 들어 있으면 수아에게 넘기고, 고객이 붙여 넣은 글에서 주민등록번호와 카드번호 모양의 숫자를 지운 뒤에 모델로 보냅니다.

셋 다 태오가 한 번에 만든 것이 아니라 사고가 한 번씩 난 뒤에 하나씩 붙은 것입니다. 지현은 분기마다 각 검사가 몇 번 걸렸는지를 확인합니다. 환불 검사가 한 분기에 두 번밖에 안 걸렸다면 그 검사는 값을 못 하고 있는 것이고, 반대로 3할이 걸린다면 선이 잘못 그어져 있을 가능성이 큽니다.

흔한 오해

가드레일을 걸면 모델이 안전해진다고 읽는 경우가 많습니다. 이름이 차선을 벗어나지 않게 해 주는 장치라서 모델의 성질 자체가 바뀌는 그림이 떠오릅니다. 실제로는 모델은 그대로이고, 검사는 모델 바깥에서 오가는 문장을 읽을 뿐입니다. 그래서 검사 목록에 없는 방식으로 선을 넘는 답은 그대로 통과합니다. 이 오해를 그대로 두면 팀은 가드레일을 붙인 날부터 출력을 들여다보지 않게 되고, 목록에 없던 고장은 고객이 먼저 발견합니다.

세게 걸수록 좋다고 여기는 것도 흔합니다. 막는 장치이니 많이 막을수록 안전해 보입니다. 하지만 검사는 확실한 신호가 아니라 대체로 맞는 규칙으로 판정하기 때문에 멀쩡한 답도 함께 걸립니다. 열 건 중 세 건이 안내 문구로 바뀌어 나가면 사용자는 기능이 고장 났다고 여기고 다시 쓰지 않습니다. 선은 한 번 긋고 두는 것이 아니라 걸린 건수를 보며 옮깁니다.

자주 헷갈리는 용어

용어무엇을 하는가가드레일과의 차이
평가셋입력과 기대하는 답을 짝지어 모아 두고 품질을 반복 측정합니다내보내기 전에 미리 재는 자리입니다. 가드레일은 실제 사용자 요청마다 실시간으로 걸리고, 평가셋은 지시문이나 모델을 바꿀 때 개발자가 돌립니다
가드레일 지표목표 지표를 올리다 망가질 수 있는 것을 감시합니다이름만 같고 다루는 것이 다릅니다. 이쪽은 사람이 보는 숫자라 나빠지면 팀이 판단해 되돌리고, 가드레일은 코드가 그 자리에서 막습니다

같이 보면 좋은 페이지

  • AI 개발

    이 장치가 어느 단계에 끼어드는지 분야 전체를 봅니다

  • 환각

    가드레일이 가장 자주 상대하는 고장입니다

  • 사람 개입

    검사에 걸린 것을 사람에게 넘길 때의 설계입니다

마지막 업데이트 2026-09-16