본문 바로가기
홈 AI 학습 AI 실무 안내서 안전한 AI 운영 도구 — 검증·비식별·추적
L2 중급 · 14분 읽기

안전한 AI 운영 도구 — 검증·비식별·추적

2026.10.26 갱신 AI를 업무에 도입·운영하려는 담당자·연구자
직군정보화
#운영#평가#비식별#관측성
검토 상태: 전문 검토 전 위험도 미분류

업무에 AI를 쓸 때 확인하면 좋은 방법과 점검 항목을 정리한 참고 자료입니다. 실제 업무에 적용할 때는 소속 기관의 기준과 담당자 검토를 함께 확인합니다.

AI를 기관 업무에 올릴 때는 모델을 고르기 전에 어느 단계에서 무엇을 검사하고, 어떤 기록을 남기고, 실패하면 누가 멈출지를 정합니다. 도구별 소개는 오픈 소스의 카드에서 봅니다. 평가 설정을 Claude Code·Codex 같은 코딩 에이전트에게 맡기더라도 합격 기준, 외부 전송 여부, 답을 채점하는 모델의 위치는 사람이 정합니다.

🎯 이 장의 목표
  • 입력 전·배포 전·운영 중 통제 지점과 각 지점에서 남길 기록을 구분할 수 있습니다.
  • 평가·문서 변환 도구가 기본값으로 외부에 보내는 것을 설치 전에 확인하고 끌 수 있습니다.
  • 코딩 에이전트에게 평가 설정을 맡길 때 사람이 정할 기준을 프롬프트에 담을 수 있습니다.
  • 자동 검사 결과와 사람 승인 사이의 경계를 정할 수 있습니다.

AI에게 맡기는 프롬프트

코딩 에이전트에게 내부 규정 안내 챗봇의 회귀 평가 설정을 맡길 때 쓰는 프롬프트입니다. 실제 민원·신고 기록이 없는 작업 폴더에서, 사람이 작성한 고정 질문 파일을 함께 줍니다.

TEXT
[목적] 내부 규정 안내 챗봇의 프롬프트를 고칠 때마다 이전에 맞던 답이 깨지지 않았는지 확인하는 회귀 평가 설정을 만듭니다.
[자료] golden.csv: 고정 질문, 반드시 포함할 내용, 포함하면 안 되는 내용. 사람이 작성했고 실제 민원 문장은 없습니다.
[완성 기준]
- 평가 설정 파일, 실행 방법, 질문별 통과·실패를 적은 결과 CSV를 만들어 주세요.
- 결과 CSV의 행 수가 golden.csv의 질문 수와 같은지 출력해 보여 주세요.
- 실패한 질문은 어느 조건에서 실패했는지 한 줄씩 적어 주세요.
[하지 말 것]
- 답을 채점하는 판정 모델은 승인된 내부 서버만 씁니다. 서버 주소는 [확인 필요]로 두고 저에게 물어 주세요. 외부 AI 서비스 키를 쓰거나 새로 설정하지 마세요.
- 사용 통계, 결과 공유, 원격 생성 기능은 도구 공식 문서에 적힌 방법으로 끄고, 끈 설정을 근거 문서 주소와 함께 목록으로 보여 주세요.
- golden.csv의 질문과 합격 조건은 바꾸지 마세요. 바꿀 필요가 보이면 제안만 해 주세요.
- 작업 폴더 밖의 파일은 열지 마세요.
맥락은 https://119-ai-studio.kr/kg/topic-privacy-deid.txt 에서 먼저 파악하고, 근거는 원문 주소와 함께 정리해 주세요.
확인 기준은 https://119-ai-studio.kr/ai-ops-toolkit.html 안내서를 따릅니다.
자료에 없는 값은 [확인 필요]로 남겨 주세요.
작업 전에 빠진 정보가 있으면 먼저 질문해 주세요.

결과를 받은 뒤 확인할 것은 다음과 같습니다.

  • 결과 CSV의 행 수와 고정 질문 수가 같은지 출력에서 확인합니다.
  • 설정 파일의 판정 모델 주소가 내부 서버인지, 외부 서비스 키 항목이 없는지 봅니다.
  • golden.csv가 바뀌지 않았는지 변경 내역으로 확인합니다.
  • 끈 설정 목록을 아래 '도구별 외부 전송 기본값' 표와 대조합니다.

동작 원리

운영 도구는 AI 앞뒤에 검사 지점과 기록을 더합니다. 통제 지점은 세 곳입니다.

통제 지점막는 실패남길 기록사람이 확인할 것
입력 전 비식별신고자·환자 정보가 AI 입력이나 로그로 들어감탐지·마스킹 결과, 사람 확인 목록자동 도구가 놓친 이름·주소
배포 전 회귀 평가프롬프트·검색·모델을 바꾼 뒤 이전에 맞던 답이 깨짐고정 질문별 이전·현재 결과와 통과 여부고정 질문과 합격 조건이 업무 기준에 맞는지
운영 중 추적이상한 답이 나갔는데 원인을 재현하지 못함입력, 프롬프트 버전, 검색 결과, 출력을 한 실행 ID로 묶은 기록로그 안의 개인정보, 접근 권한, 보존 기간

세 지점은 서로를 대신하지 못합니다. 추적 로그가 잘 남아도 민감정보가 이미 입력됐다면 늦고, 회귀 평가를 통과해도 운영 중 처음 만난 질문에서는 틀릴 수 있습니다. 비식별만 해서는 근거 누락이나 버전 변경의 영향을 알 수 없습니다. 그래서 지점마다 다음 단계로 넘어갈 조건과, 실패했을 때 멈추거나 사람에게 올릴 경로를 함께 정합니다.

도구가 내놓는 점수나 통과 표시는 기록의 일부입니다. 어떤 입력·규칙·버전으로 얻은 결과인지 함께 남아야 다시 확인할 수 있습니다. 최종 사용 여부는 업무 기준, 공개 범위, 오류의 영향을 보고 사람이 정합니다.

도구별 외부 전송 기본값

일부 도구는 설치한 그대로 실행하면 판정 모델 호출이나 사용 통계를 외부로 보냅니다. 아래 표는 2026-10-26에 각 도구의 공식 문서로 확인한 내용이며, 판이 바뀌면 달라질 수 있으므로 설치할 때 다시 확인합니다.

도구문서에 적힌 동작끄거나 바꾸는 방법
DeepEval대부분의 지표가 판정 모델을 쓰고, 지정하지 않으면 OpenAI를 씁니다. 사용 통계를 기본으로 보냅니다.판정 모델을 내부 모델로 지정(deepeval set-ollama 등), DEEPEVAL_TELEMETRY_OPT_OUT=1
promptfoo환경에 있는 외부 서비스 인증 정보에 따라 판정 제공자를 고릅니다.defaultTest.options.provider로 내부 모델 지정, PROMPTFOO_DISABLE_TELEMETRY=1, PROMPTFOO_DISABLE_UPDATE=1, PROMPTFOO_DISABLE_REMOTE_GENERATION=true, PROMPTFOO_DISABLE_SHARING=1
Ragas지표 계산에 판정 모델을 씁니다.llm_factory에 내부 서버 주소를 준 클라이언트로 판정 모델 지정
Guardrails검증기가 원격 추론 주소를 쓰도록 설정될 수 있습니다.guardrails configure --disable-remote-inferencing
Unstructured불러올 때와 변환할 때 사용 통계를 보냅니다. 문서 내용은 담지 않는다고 적혀 있습니다.불러오기 전에 DO_NOT_TRACK 또는 SCARF_NO_ANALYTICS 설정
MarkItDownPDF 기본 변환은 외부 호출이 없습니다. llm_client(이미지 설명)나 docintel_endpoint(Azure Document Intelligence)를 지정하면 파일을 그 서비스로 보냅니다.두 옵션을 쓰지 않거나 내부 모델을 지정

promptfoo 문서는 이 환경 변수들이 네트워크 방화벽을 대신하지 않는다고 적고 있습니다. 망분리 환경에서는 설정을 끈 뒤에도 실행 중 외부 연결이 없는지 네트워크 기록으로 확인합니다. 추적 도구를 쓸 때는 기록이 저장되는 서버가 기관 안에 있는지 설정에서 확인합니다.

선택지와 트레이드오프

도구를 많이 들이는 것보다 비어 있는 통제 지점 하나를 정확히 채우는 편이 낫습니다. 도구 설명과 갱신 상황은 각 카드에서 봅니다.

선택지먼저 필요한 상황대표 도구남는 부담
입력 비식별 검사원문에 이름·주소·연락처가 섞일 수 있을 때Presidio, 공공 AX의 개인정보 마스킹 지원 K-PoliShield문맥형 정보와 미탐을 계속 검토해야 함
배포 전 회귀 평가프롬프트·검색·모델 변경이 반복될 때promptfoo, DeepEval고정 질문과 합격 조건을 사람이 유지해야 함
운영 추적실패를 재현하고 버전별 원인을 찾아야 할 때Opik로그 자체의 개인정보·권한·보존 기간을 관리해야 함

가상 상황: 프롬프트 수정 뒤 규정 챗봇의 근거가 빠질 때

다음은 학습용 가상 상황입니다. 어느 소방서가 내부 규정을 안내하는 챗봇을 만들었습니다. 담당자가 답변 말투를 다듬으려고 프롬프트를 한 줄 고치자, 전에는 잘 나오던 "소화기 점검 주기" 답에서 근거 규정이 빠지기 시작합니다. 다른 질문은 그대로라서 화면만 봐서는 알아채기 어렵습니다. 한쪽을 고친 뒤 다른 쪽이 깨지는 이런 현상을 회귀라고 합니다.

며칠 뒤 이상한 답을 받았다는 문의가 들어오지만, 어떤 질문에 어떤 답이 나갔는지 기록이 없어 다시 확인하지 못합니다. 고정 질문으로 회귀 평가를 돌렸다면 배포 전에 잡았을 문제이고, 추적 기록이 있었다면 문의가 들어온 뒤 원인을 찾았을 문제입니다.

가상 사례: 코딩 에이전트에게 회귀 평가 설정을 맡긴 정보화 담당자

다음은 실제 기관과 무관한 가상 사례입니다. 정보화 담당자가 앞의 규정 챗봇에 회귀 평가를 붙이려고 코딩 에이전트에게 위 프롬프트로 설정을 맡깁니다. 고정 질문 파일, 내부 판정 모델, 외부 전송을 끄는 설정, 결과의 사람 검토는 담당자가 미리 정했습니다.

첫 실행에서 고정 질문 세 개가 실패하자 에이전트가 합격 조건을 느슨하게 고치자고 제안합니다. 담당자는 받지 않고 프롬프트를 고쳐 다시 돌립니다. 합격 조건을 바꿔 통과시키면 회귀 평가가 확인하려던 기준이 사라지기 때문입니다.

판정 모델이 외부 서비스 기본값으로 남은 설정 파일을 확인 없이 실행하면 실패합니다. 개인정보가 없더라도 내부 규정 문장과 챗봇 답변이 외부로 나가므로, 실행 전에 판정 모델 주소부터 봅니다.

입력 전 비식별

개인정보, AI에 넣기 전에 점검하기는 패턴·문맥·사람의 3단 점검을 설명합니다. Presidio는 정규식 인식기와 문맥 기반 인식기를 한 엔진에서 함께 쓰는 도구입니다. 기본 설정은 영어만 켜져 있어 한국어는 개인정보 비식별 파이프라인, 이름·주소까지 자동으로처럼 직접 구성합니다.

한국어 공공문서용으로는 공공 AX에 개인식별정보 비식별 처리 같은 도구도 있습니다. 실행 위치와 조건은 저장소에서 확인합니다. 자동 비식별 뒤에도 이름·상세 주소·의료 정보는 사람이 최종 확인합니다.

문서를 AI 입력으로 바꾸기

소방 업무에 쓸 공공데이터 고르는 법이나 법령 근거 확인 브리프 만들기에서 모은 문서를 AI 입력으로 바꿀 때는 MarkItDown이나 Unstructured를 씁니다. MarkItDown의 내장 변환기에는 HWP·HWPX가 없으므로, HWP 공문·매뉴얼은 공공 AX의 kordoc이나 마크다운 변환기를 먼저 봅니다.

답변 품질 회귀 테스트

회귀 테스트는 사람이 매번 확인하던 합격 기준을 표로 적어 두고, 프롬프트를 고칠 때마다 같은 표로 다시 채점하는 방법입니다. 앞의 규정 챗봇이라면 다음과 같은 표가 됩니다(가상 예시).

고정 질문반드시 포함포함하면 안 됨
소화기 점검은 누가 하나요?근거 규정 인용, 불확실하면 [확인 필요] 표시지어낸 조문 번호
우리 아파트 방화문 기준은?규정 원문을 확인하라는 안내"무조건 …입니다" 같은 단정

합격 조건은 사람이 정하고 반복 채점은 도구가 맡습니다. 실행 중 출력 형식과 금칙 조건 검사(가드레일)는 Guardrails로 합니다. 공개 전 프롬프트 주입·정보 유출 점검은 garak으로 하고, 모의 공격 절차는 AI 보안 레드티밍 가이드를 참고합니다.

운영 중 추적

추적 기록에는 어떤 질문에, 어떤 프롬프트 버전으로, 무엇을 검색해, 어떤 답이 나갔는지가 남습니다. 이 기록에도 질문 원문의 개인정보가 섞이므로 로그의 비식별과 접근 권한도 함께 설계합니다.

AI 시스템이 개인정보를 처리하면 접속기록 보관 기간과 점검 방식을 개인정보의 안전성 확보조치 기준으로 확인합니다. 이 사이트의 법령 카드는 접속기록을 기본 1년 이상, 민감정보나 고유식별정보를 처리하는 등의 경우 2년 이상으로 정리했습니다. 어느 쪽인지는 시스템 성격에 따라 개인정보 담당과 함께 확인합니다.

▸ 소방 활용 포인트
내부 규정 안내 챗봇이나 민원 답변 초안 도구를 기관 안에서 운영하려면, 도입 계획서에 통제 지점별 담당자, 남길 기록, 실패하면 멈추는 조건을 먼저 적습니다. 도구는 그다음에 비어 있는 지점에 맞춰 고릅니다.

도입 순서

작은 팀이라면 다음 순서가 안전합니다.

  1. 실데이터를 AI에 붙이기 전에 개인정보부터 뺍니다.
  2. 프롬프트를 고칠 때마다 이전에 통과한 답이 깨지지 않는지 고정 질문으로 확인합니다.
  3. 운영에 올린 뒤에는 무엇이 오갔는지 추적 기록을 남깁니다.

세 지점을 한꺼번에 갖추기보다 지금 가장 위험한 지점부터 채웁니다. 문서 추출·검색·답변 생성·보관의 처리 위치는 로컬 AI의 기관 도입 확인 항목으로 점검합니다. 도입 계획이 2027-02-28 이후에 걸치면 시행 예정인 공공분야 인공지능 영향평가 기준을 인공지능 및 데이터 기반 행정 활성화에 관한 법률 시행령 카드에서 미리 확인합니다.

⚠️ 흔한 실수
자동 평가와 비식별 결과는 사람이 최종 확인합니다. 자체 호스팅 도구는 인증 설정과 보안 업데이트를 맡을 담당자를 정해 둡니다.

문제 해결

증상가능한 원인처방확인
검사 도구는 통과했는데 민감정보가 남음규칙이 문맥형 이름·주소를 잡지 못함미탐 사례를 비식별된 형태로 모으고 사람 검토 단계를 강화자동 결과와 별개로 승인 샘플을 사람이 다시 확인
평가 도구를 설치한 뒤 외부 연결 경고가 생김판정 모델이나 사용 통계가 외부 기본값으로 설정됨위 표의 방법으로 끄고 판정 모델을 내부 서버로 지정실행 중 네트워크 기록에 외부 주소가 없는지 확인
프롬프트 수정 뒤 일부 질문만 근거가 사라짐고정 질문이나 필수 조건이 부족함실패 질문을 고정 질문에 추가하고 근거 조건을 명시변경 전후 같은 질문의 출력과 조건 결과 비교
이상 답변을 재현할 수 없음입력·프롬프트·검색 결과·버전을 잇는 기록이 없음최소 추적 항목을 정하고 한 실행 ID로 묶음그 기록만으로 같은 흐름을 설명할 수 있는지 확인
도구는 많지만 누가 실패를 처리할지 모름경고 뒤 중단·검토·승인 경로가 없음지점마다 담당과 실패 시 다음 상태를 정함모의 실패 한 건이 사람 확인까지 전달되는지 점검

자주 묻는 질문

Q. 비식별 도구를 쓰면 원문을 외부 AI에 보내도 되나요?

자동 도구가 모든 문맥형 정보를 잡는다는 보장은 없습니다. 소속 기관 기준, 처리 목적, 사람 확인, 승인된 환경을 함께 검토하며 도구 통과만으로 전송을 결정하지 않습니다. 넣기 전 점검은 생성형 AI 입력 확인으로 합니다.

Q. 회귀 테스트 점수가 좋아지면 배포해도 되나요?

점수는 정한 질문과 기준 안의 변화만 보여 줍니다. 중요한 실패가 고정 질문에 빠졌는지, 실제 업무 영향과 사람 검토 경로가 준비됐는지 따로 확인합니다.

Q. 추적 로그는 자세할수록 좋은가요?

재현에 필요한 기록은 남겨야 하지만 원문과 민감정보를 많이 남기면 새 위험이 됩니다. 목적에 필요한 최소 항목, 접근 권한, 보존 기간을 함께 정합니다.

Q. 코딩 에이전트에게 평가 설정을 맡기면 무엇을 직접 봐야 하나요?

설정 파일의 판정 모델 주소, 외부 전송을 끄는 설정, 고정 질문과 합격 조건이 바뀌지 않았는지를 직접 봅니다. 에이전트가 실패를 통과로 바꾸려고 합격 조건을 고치자고 하면 받아들이지 않고 원인을 먼저 찾게 합니다.

핵심 정리

  • 입력 전 비식별, 배포 전 회귀 평가, 운영 중 추적은 서로 다른 실패를 막으며 서로를 대신하지 못합니다.
  • 도구는 제품 이름보다 비어 있는 통제 지점, 남길 기록, 실패 시 처리 경로를 기준으로 고릅니다.
  • 평가·문서 변환 도구는 설치 전에 판정 모델과 사용 통계의 외부 전송 기본값을 확인하고 끕니다.
  • 코딩 에이전트에게 설정을 맡겨도 합격 조건, 판정 모델 위치, 외부 전송 여부는 사람이 정하고 확인합니다.

다음 단계