Mistral의 Shieldstral: 멀티모달 모더레이션 (Multimodal Moderation)을 위한 3B 오픈 웨이트 (Open-weights) 모델
8월 4일에 Mistral이 공개한 Shieldstral 공지를 보았다. 이미지를 포함한 콘텐츠의 모더레이션 (Moderation)을 오픈 웨이트 (Open-weights)로 다룰 수 있게 하는 모델이라고 한다.
이를 보고 내가 먼저 해결하고 싶었던 것은 모델 선택이 아닙니다. 영업 자료, 의사록, 스크린샷을 생성 AI에 첨부하기 전의 확인입니다. 내용이 적절한지 판정하는 메커니즘이 발전하더라도, 첨부한 파일에 담당자의 연락처나 카드 번호가 남아 있다면, 보낼지 말지에 대한 판단은 별도로 필요합니다.
사내에서 "보내기 전에 확인해 둬"라고 말해도, 바쁘면 놓치게 됩니다. 그래서 첨부 후보 파일명과 OCR(광학 문자 인식)이 완료된 텍스트를 JSON으로 출력하고, 개인정보로 보이는 문자열이 있으면 전송을 보류하는 작은 Python 스크립트를 마련했습니다. 이것이 은근히 효과적입니다. 사람에게 최종 판단을 남겨두면서, 놓치기 쉬운 부분만 미리 붉게 표시할 수 있습니다.
참조한 뉴스: Mistral: Shieldstral
이 스크립트는 이메일 주소, 전화번호, 마이넘버(My Number)로 보이는 12자리, 카드 번호로 보이는 13~19자리를 찾아냅니다. 정규 표현식 (Regular Expression)만 사용하므로 개인정보를 완벽하게 판정하는 것은 아닙니다. 예를 들어 12자리의 수주 번호도 차단될 가능성이 있습니다.
그럼에도 전송 직전의 게이트 (Gate)로서는 충분히 사용할 수 있습니다. 오탐지라면 내용을 확인하고 통과시킵니다. 탐지를 놓쳤을 때만, 애초에 첨부 조작 단계로 넘어가지 않도록 합니다. 이 우선순위입니다.
입력은 OCR 도구나 PDF 추출 도구의 출력을 다음 형태로 맞춥니다. 본문을 API로 전달할 필요는 없습니다.
[
{"name": "提案メモ.txt", "text": "窓口は [email protected]、03-1234-5678"},
{"name": "製品概要.pdf", "text": "公開済みの製品説明です"}
...
]
attachment_preflight.py로 저장합니다.
import csv
import json
import re
...
수중에 있는 위의 JSON을 attachments.json으로 실행했을 때의 출력입니다.
$ python3 attachment_preflight.py attachments.json
attachment_review.csv 를 생성했습니다
전송 보류 提案メモ.txt 이메일 주소 / 전화번호
...
utf-8-sig로 CSV를 쓰는 이유는 현장에서 Excel로 여는 사람이 있기 때문입니다. BOM이 포함된 UTF-8로 해두면 일본어 헤더가 글자 깨짐 현상이 일어나기 어렵습니다. 여기서 CSV를 연다면, 수식으로 해석되는 값을 다루는 운용과는 분리하는 것이 안전합니다.
처음에는 본문만 검사했습니다. 하지만 공유 폴더에서 선택한 스크린샷의 이름에 거래처명과 담당자명이 들어있는 경우가 있었습니다. 본문이 비어 있어도 파일명을 목록으로 만드는 것만으로 알아챌 수 있습니다.
이 코드는 파일명 문자열 그 자체를 검지 대상으로 삼지는 않습니다. 거래처명까지 기계적으로 차단하면 영업 자료가 거의 전부 차단되기 때문입니다. 대신 CSV로 반드시 출력하여, 전송 보류 행뿐만 아니라 첨부물의 착오도 눈으로 확인할 수 있는 형태로 만들었습니다. 검사 정밀도보다 작업을 멈추지 않고 확인이 계속되는 것을 우선시하고 있습니다.
OCR 결과가 없는 이미지나 PDF는 text를 비워두고 "확인 완료"로 간주하는 운용이 필요합니다. 그 경우에는 입력 JSON을 만드는 단계에서 OCR 미실시 행을 추가하거나, 이미지 첨부를 일단 보류합니다. 이 부분을 자동으로 통과시켜 버리면, 이미지 대응 모더레이션 (Moderation) 모델이 나왔다는 이야기와 업무상의 전송 확인이 뒤섞이게 됩니다.
Shieldstral과 같은 모델이 늘어날수록 이미지를 포함하여 AI에게 전달할 수 있는 범위는 넓어집니다. 그렇기 때문에 업무 측면에서는 "무엇을 판정시킬 것인가"보다 먼저 "무엇을 전달해도 좋은가"를 짧은 절차로 만들어 두면 원활하게 돌아갑니다.
우선 자주 사용하는 제안 메모 2건으로 실행해 보고, 오탐지된 번호를 기록하는 것이 좋습니다. 정규 표현식 (Regular Expression)을 똑똑하게 만들기 전에, 전송 보류 CSV를 한 번 살펴보는 흐름을 만듭니다. 저는 이 순서가 현장에서 가장 지속 가능하다고 생각합니다.