그럴듯한 규칙 목록이 바로 실행 규칙은 아니다
LLM에게 출입 안내를 요약하게 했더니 “회원은 입장할 수 있다”, “동의하지 않은 사람은 입장할 수 없다”, “보호자와 동행하면 입장할 수 있다”, “이용 정지 중이면 입장할 수 없다”가 나왔다고 하자. 문장마다 자연스럽지만 회원이면서 비동의인 사람, 정지 상태지만 보호자와 온 사람에게 허용과 거부가 동시에 적용된다.
LLM 출력은 규칙 후보 초안이다. 모델은 원문 사이의 우선순위를 누락하거나, 예시를 일반 규칙으로 바꾸거나, 빈 사례를 상식으로 채울 수 있다. 실제 정책 엔진이나 업무 절차에 넣기 전에 원문 대응, 조건 정규화, 조합 검사, 반례 확인, 담당자 승인을 거친다.
먼저 규칙을 같은 문법으로 정규화한다
서술형 규칙을 “조건부→행동” 형식으로 바꾼다. R1: 회원∧동의∧¬정지→허용, R2: ¬동의→동의요청, R3: 정지→거부처럼 쓴다. 각 원자 조건의 기준을 고정하고 행동 이름도 허용·거부·보류·안내처럼 통일한다. 비슷한 말이 같은 행동인지 담당자에게 확인한다.
정규화는 의미를 새로 만드는 작업이 아니다. 원문에 없는 ¬정지 조건을 R1에 보탰다면 “수정 제안”으로 표시하고 승인 전 규칙과 구분한다. 원문 규칙, LLM 해석, 수정 후보를 세 열로 나누면 모델의 보완이 원래 정책처럼 섞이지 않는다.
| ID | 원문 후보 | 정규식 | 상태 |
|---|---|---|---|
| R1 | 회원은 입장 가능 | 회원→허용 | 원문 해석 |
| R2 | 미동의자는 입장 불가 | ¬동의→거부 | 원문 해석 |
| R3 | 정지자는 입장 불가 | 정지→거부 | 원문 해석 |
| P1 | 정지 규칙 우선 | 정지 우선 | 승인 필요한 제안 |
충돌·중복·누락은 서로 다른 문제다
충돌은 같은 입력에서 서로 양립할 수 없는 행동이 선택되는 경우다. 중복은 같은 행동을 내는 여러 규칙이 같은 입력에 맞는 경우로, 결과는 같아도 유지보수 위험이 있다. 누락은 어떤 규칙도 맞지 않아 결과가 없는 경우다. 세 문제를 한꺼번에 “오류”라고 부르면 수정 방법을 고르기 어렵다.
예를 들어 R1 회원→허용과 R2 동의→허용은 회원이면서 동의한 입력에서 중복된다. R1 회원→허용과 R3 정지→거부는 회원이면서 정지인 입력에서 충돌한다. 비회원이면서 동의했고 보호자도 없는 입력에 규칙이 없다면 누락이다. 각 문제에 최소 입력 사례를 붙인다.
| 결함 | 일치 규칙 수 | 행동 관계 | 최소 사례 |
|---|---|---|---|
| 충돌 | 2개 이상 | 허용·거부처럼 양립 불가 | 회원∧정지 |
| 중복 | 2개 이상 | 같은 행동 반복 | 회원∧동의 |
| 누락 | 0개 | 결과 없음 | 비회원∧동의∧보호자 없음 |
| 정상 | 정책에 맞는 개수 | 결과 결정 가능 | 승인된 대표 조합 |
진리표로 작은 조건 집합을 전수 검사한다
조건이 네 개면 16개 조합을 만들고 각 행에 일치하는 규칙 ID와 행동을 적는다. 일치 수가 0이면 누락, 상충 행동이 둘 이상이면 충돌이다. 이 표는 LLM의 설명을 평가하는 도구가 아니라 규칙 집합 자체의 조합을 검사하는 도구다.
LLM에게 표 생성을 맡겼다면 독립 스크립트나 수기 표본으로 재검산한다. 행 수, 중복 입력, 조건식 평가, 우선순위 적용 전후 결과를 구분한다. 우선순위를 적용해 충돌이 사라져도 원래 여러 규칙이 맞았다는 사실은 진단 열에 남긴다.
| 입력 요약 | 일치 규칙 | 원결과 | 진단 |
|---|---|---|---|
| 회원·동의·정상 | R1 | 허용 | 정상 |
| 회원·미동의·정상 | R1,R2 | 허용/거부 | 충돌 |
| 회원·동의·정지 | R1,R3 | 허용/거부 | 충돌 |
| 비회원·동의·정상 | 없음 | 없음 | 누락 |
의사결정표로 행동과 우선순위를 확정한다
진리표에서 찾은 조합을 업무 행동과 연결하려면 의사결정표로 옮긴다. “정지면 다른 조건과 무관하게 거부”를 R0에 두고 우선순위를 명시한다. 정상 상태에서는 회원·동의 조합을 나누어 허용, 동의 요청, 가입 안내 같은 결과를 정한다.
이때 정책 담당자가 결정해야 하는 빈칸을 LLM이 채우지 않는다. 보호자 동행이 비회원에게도 허용을 주는지, 미동의 상태를 보호자가 대신할 수 있는지 질문으로 남긴다. 표에 ‘확인 필요’ 열을 유지하면 미완성 정책을 완성된 것처럼 배포하는 일을 막는다.
원문과 결과를 양방향으로 추적한다
각 규칙에는 sourceIds를 두어 원문 조항으로 돌아가게 한다. 반대로 원문 조항 목록에는 반영된 규칙 ID를 적는다. 규칙에서 원문으로 가는 방향은 근거 없는 추가를 찾고, 원문에서 규칙으로 가는 방향은 빠진 예외와 조건을 찾는다.
한 조항이 여러 규칙으로 분해될 수 있고 여러 조항이 한 규칙을 함께 뒷받침할 수 있다. 단순한 1:1 링크를 강요하지 않는다. 원문 버전이 바뀌면 영향을 받는 규칙과 시험 사례를 표시하고 재검수한다. “지난번에 검토함”은 새 버전의 근거가 되지 않는다.
| 원문 ID | 규칙 ID | 관계 | 변경 시 행동 |
|---|---|---|---|
| S1 회원 자격 | R1,R2 | 조건 분해 | 회원 정의 시험 재실행 |
| S2 동의 | R1,R3 | 필요조건·안내 | 동의 범위 재확인 |
| S3 이용 정지 | R0 | 우선 규칙 | 모든 허용 조합 재검사 |
| S4 보호자 | 보류 | 해석 미확정 | 담당자 승인 요청 |
LLM 요청은 생성과 비판을 분리한다
첫 요청에서는 원문만 구조화해 규칙 후보와 근거 문장 ID를 받는다. 두 번째 요청에서는 그 후보를 비판하는 역할로 충돌·중복·누락·경계 반례를 찾게 한다. 같은 모델을 쓰더라도 단계와 입력을 분리하고, 비판 결과를 독립 사실처럼 믿지 않고 사람이 원문과 계산으로 확인한다.
모델에게 내부 사고 과정을 공개하라고 요구할 필요는 없다. 필요한 것은 검증 가능한 산출물이다. 원자 조건, 규칙식, 출처 ID, 전수 조합 결과, 최소 반례, 확인 질문을 표로 받으면 결론을 재현할 수 있다. 장황한 추론 서술보다 입력과 출력의 대응이 중요하다.
잘못된 수정은 우선순위로 모든 결함을 덮는다
수정 전에는 “위에 있는 규칙이 우선”을 붙여 충돌을 없앴다. 그러나 규칙 순서는 문서 편집 과정에서 바뀔 수 있고, 왜 거부가 허용보다 우선하는지 근거가 없었다. 원문 정책에서 승인된 우선순위를 결과 값과 함께 명시하고, 단순 중복은 조건을 합치거나 규칙을 제거했다.
누락된 조합에는 임의의 기본 거부를 넣지 않았다. 안전상 기본 거부가 필요해 보이더라도 정책 결정이므로 담당자 승인 항목으로 남겼다. 긴급 임시 조치가 있다면 기간, 승인자, 적용 범위를 기록한다. LLM의 상식은 조직의 승인된 규칙을 대신하지 않는다.
완료 기준은 재현 가능한 반례와 승인 기록이다
최종 산출물에는 원문 버전, 원자 조건 정의, 정규화 규칙, 모든 입력 조합의 일치 수, 최소 반례, 히트 정책, 승인자와 승인일을 남긴다. 개인정보나 고위험 결정에 쓰는 규칙은 관련 법·정책과 추가 검토가 필요하다. 이 교육 예시는 실제 법률·안전 판단을 제공하지 않는다.
NIST AI RMF는 AI 위험 관리를 설계·개발·사용·평가 전 과정의 활동으로 본다. 이 글에서는 그 취지에 맞춰 LLM 출력을 정책으로 곧바로 채택하지 않고 측정·검토·승인 가능한 산출물로 바꾼다. 완료는 “모델이 자신 있어 보인다”가 아니라 다른 사람이 같은 입력으로 같은 판정과 근거를 재현하는 상태다.
| 검사 | 통과 기준 | 증거 |
|---|---|---|
| 원문 대응 | 모든 규칙에 sourceIds | 양방향 매핑표 |
| 조합 | 누락·충돌·중복 보고 | 전수 표·시험 로그 |
| 정책 결정 | 히트 정책·기본값 승인 | 승인자·날짜 |
| 버전 | 원문·규칙·시험 버전 고정 | 내용 지문 |
| 재현 | 다른 검토자가 같은 결과 | 입력·출력·반례 |
복사해서 쓸 수 있는 LLM 요청문
아래 요청문은 교육용 예시다. 원문을 함께 제공하고, 모델이 빈칸을 추측하지 않도록 금지 조건을 넣었다. 결과를 받으면 원문 문장과 노드·선의 대응을 사람이 다시 확인한다.
다음은 LLM이 원문 규정을 정리한 규칙 초안이다. 초안을 실행하지 말고 검토 자료로 바꿔 줘. 1. 원문 문장ID, LLM 규칙, 모델이 추가하거나 생략한 표현을 나란히 표시한다. 2. 모든 조건을 판정 가능한 원자 명제로 정의하고 규칙을 “조건식 → 행동”으로 정규화한다. 3. 원문 해석과 수정 제안을 분리하며 승인되지 않은 우선순위·기본 행동을 추가하지 않는다. 4. 조건이 n개면 가능한 2ⁿ개 조합을 만들고 각 조합에 일치하는 규칙 ID와 원행동을 적는다. 5. 일치 0개는 누락, 같은 행동의 다중 일치는 중복, 양립 불가 행동의 다중 일치는 충돌로 구분한다. 6. 각 결함에 가장 작은 반례 입력을 제시한다. 7. 겹침 처리에 필요한 히트 정책과 정책 담당자 질문을 분리한다. 8. 규칙→원문과 원문→규칙의 양방향 누락을 검사하고, 최종 승인 전에는 “검토용 초안”이라고 표시한다. [원문 규정] … [LLM 규칙 초안] …
직접 실습하고 결과를 읽기
이 실습은 브라우저 안에 준비한 교육용 자료만 사용한다. 외부 LLM을 호출하거나 실제 기관 자료를 조회하지 않는다. 입력을 바꾸어 결과가 어떻게 달라지는지 보고, 설명과 맞지 않는 결과가 나오면 어떤 정보가 빠졌는지 적어 본다.
자료와 출처
아래 자료는 이번 글의 정의와 표기법을 확인하는 데 사용했다. 생각그림과 사례 문장은 원자료를 복제하지 않고 이 글의 교육 목적에 맞게 새로 구성했다.