
AI와 규칙 처리(Rule Processing)를 조합할 때의 역할 분담
요약
AI의 모호한 판단 능력과 규칙(Rule) 기반의 확정적 처리 능력을 결합하는 설계 전략을 제안합니다. AI는 초안 추출 및 분류를 담당하고, 금액 계산이나 데이터 검증 등 정답이 명확한 작업은 코드로 처리하여 시스템의 안정성을 높이는 방법론을 다룹니다.
핵심 포인트
- AI는 후보 추출 및 모호한 문장 분류에 활용
- 금액 계산, 데이터 검증 등은 규칙(Rule) 기반으로 처리
- AI 출력을 확정값이 아닌 '검토를 위한 초안'으로 취급
- 결과에 대한 근거(evidence)를 포함하여 추적 가능성 확보
- 오판정 시 리스크와 복구 가능성을 기준으로 역할 분담 결정
최근 문의 내용을 분류하거나, CSV 내용을 정리하는 업무에서 AI를 어디까지 사용해야 할지 고민할 때가 있습니다.
AI에게 문장을 읽게 하면, 그럴듯한 분류나 요약을 즉시 반환합니다. 다만, 그 결과를 그대로 고객 대응이나 금액 계산에 사용하면, 오판정했을 때의 영향이 커집니다.
실제로 해보니, AI를 도입할지 여부보다 「AI에게 후보를 내게 하는 장소」와 「정해진 절차로 확정하는 장소」를 나누는 것이 더 중요하다는 것을 느끼고 있습니다.
결론부터 말하자면, 금액 계산, 코드 변환, 필수 항목 확인, 업데이트 처리는 규칙(Rule)으로 다루고, 모호한 문장의 분류, 요약, 후보 추출은 AI에게 맡기는 구성이 다루기 쉽다고 생각합니다.
AI의 출력은 확정값이 아니라, 「다음에 무엇을 확인할지 좁히기 위한 초안」으로 사용합니다. 특히 외부 시스템의 업데이트나 고객에게 전송되는 처리로 이어지는 경우에는 AI만으로 완결 짓지 않는 것이 안심할 수 있습니다.
| 조건 | 선택 방법 | 적합하지 않은 조건 | 채택 후 남는 운영 부담 |
|---|---|---|---|
| 입력과 출력의 대응이 정해져 있음 | 규칙 처리 중심 | 문면의 의미를 읽지 않으면 판단할 수 없음 | 예외 규칙과 마스터(Master) 업데이트 |
| ... |
이 기사에서는 AI API를 사용하여 문장을 JSON 형식으로 정리하고, 그 이후를 Python 등의 통상적인 처리로 판정하는 구성을 상정합니다. 특정 모델이나 서비스의 성능 비교가 아니라, 업무에 도입할 때의 설계 판단으로서 읽어주시면 좋을 것 같습니다.
예를 들어, 문의 메일로부터 대응 내용을 정리하는 업무를 생각해 보겠습니다.
「반품하고 싶다」, 「청구 내용을 확인하고 싶다」, 「견적을 받고 싶다」와 같은 문면의 의도를 읽는 부분은 AI가 비교적 잘합니다. 같은 내용이라도 쓰는 방식이 제각각이기 때문에, 조건 분기(Conditional Branching)만으로 대응하려고 하면 키워드가 계속 늘어날 수 있습니다.
반면, 「고객 코드가 존재하는가」, 「대응 구분이 허용된 값인가」, 「금액의 합계가 명세와 일치하는가」는 AI에게 생각하게 할 필요가 없습니다. 입력이 같다면 같은 결과가 되는 규칙으로 남겨두는 것이 나중에 설명하기 쉽습니다.
이러한 구분은 AI의 정확도만으로 결정하지 않는 것이 좋다고 생각합니다. 잘못되었을 때 누가 곤란해지는지, 어디까지 되돌릴 수 있는지로 결정하면 구현의 우선순위가 명확해집니다.
규칙 처리에 적합한 것은 정답이 명확하고, 판단 이유를 코드나 설정으로 남기고 싶은 작업입니다.
- 금액, 세액, 기한 등의 계산
- CSV나 Excel의 열 변환, 날짜 형식의 통일
- 필수 항목, 형식, 자릿수 검증
- 고객 코드나 상품 코드의 마스터(Master) 대조
- 중복 등록 방지
- 상태(Status)에 따른 업데이트 가부 판정
예를 들어 AI가 문의문으로부터 category와 customer_code를 추출했다고 하더라도, 그 값을 채택할지는 별개의 문제입니다. 허용된 분류인지, 고객 코드가 실재하는지를 통상적인 코드로 확인합니다.
ALLOWED_CATEGORIES = {"返品", "請求確認", "見積依頼"}
def validate_draft(draft: dict, customer_codes: set[str]) -> list[str]:
errors = []
...
여기서 은근히 중요한 것은 AI의 출력에 evidence와 같은 근거도 포함시키는 것입니다. 분류명만 보는 것보다, 원래 문면의 어느 부분을 읽고 판단했는지 확인할 수 있는 편이 사람이 되돌릴 때 헤매지 않게 됩니다.
규칙 처리는 초기 구현에서 다소 수고가 들 수 있습니다. 하지만 일상적인 운용에서는 「왜 이런 결과가 나왔는지」를 설명하기 쉽고, 에러 발생 시 조사도 진행하기 쉽습니다.
반면, 예외가 너무 많은 업무를 억지로 규칙만으로 표현하면 조건 분기가 읽기 어려워집니다. 그런 상태가 되면 문장의 해석만 AI로 분리해낼 수 없을지 고민할 여지가 있습니다.
AI가 적합한 것은 입력의 표현이 일정하지 않고, 사람이라면 문맥(Context)으로부터 판단하고 있는 작업입니다.
예를 들어, 다음과 같은 처리가 있습니다.
- 문의 내용을 대응 구분에 따라 분류하기
- 긴 메일이나 의사록을 짧게 요약하기
- 자유 기술에서 상품명, 요구사항, 기한 같은 정보를 추출하기
- 사내용 답장 초안이나 확인 사항의 초안 만들기
- 표기 불일치(表記ゆれ)를 포함한 문면에서 후보 찾기
다만, AI는 그럴듯한 값을 반환할 때가 있습니다. 존재하지 않는 고객 코드를 보충하거나, 문면에 없는 기한을 추측할 가능성도 있습니다.
그렇기에 AI에게는 「판단」이 아니라 「후보 작성」을 맡기는 설계가 다루기 쉽습니다. 반환 형식도 자연문 그대로가 아니라, 용도를 좁힌 JSON으로 합니다.
{
"category": "請求確認",
"customer_code": "A-001",
...
이 JSON을 받은 후에, 앞서 언급한 것과 같은 규칙 처리(Rule Processing)와 사람의 확인 과정을 거칩니다. AI에게 자유로운 문장을 쓰게 하는 범위와 시스템이 받아들이는 항목을 나누는 것만으로도, 후속 공정을 상당히 정리하기 쉬워집니다.
AI의 결과를 그대로 확정하는 설계는 처음에는 구현량이 적어 보입니다. 하지만 오판정이 발생했을 때, 원인이 입력, 프롬프트 (Prompt), 모델의 응답, 후속 처리 중 어디에 있는지 구분하기 어려워집니다.
추천하는 방법은 처리를 다음 단계로 나누는 것입니다.
- AI가 분류·추출·요약의 후보를 생성
- 규칙(Rule)으로 형식, 마스터 (Master), 중복, 권한을 확인
- 문제가 없으면 '확인 대기' 또는 '초안'으로 설정
- 사람 또는 별도의 확정 규칙으로 실행
예를 들어, 사내 티켓을 기표하는 것이라면 AI의 결과를 초안으로 등록하여 나중에 수정하기 쉽게 만들 수 있습니다. 반면, 환불 처리나 청구 금액 변경은 초안 단계일지라도 사람의 승인을 거쳐야 합니다.
'AI의 정밀도가 높을 것 같으니까 자동화한다'가 아니라, '실패해도 취소할 수 있으니까 초안 단계까지 자동화한다'라고 생각하는 것이 도입 후의 불안감을 줄이는 길입니다.
AI에게 신뢰도 (Confidence Score)를 반환하게 하는 방법은 있습니다. 다만, 그 수치를 정밀도 보증처럼 다루는 데는 주의가 필요합니다. 모델 스스로 높은 신뢰도를 나타내더라도, 그것이 업무상의 정답과 일치한다고 단정할 수는 없습니다.
신뢰도는 사람이 확인하는 순서를 결정하는 보조 정보로 사용하는 것이 현실적입니다.
예를 들어, 다음과 같은 조건에 해당하는 것을 '확인 대기'로 돌립니다.
- AI의 분류와 본문 중의 키워드가 모순됨
- 고객 코드가 마스터에 존재하지 않음
- 필수 항목이 공란임
- 금액, 계약, 개인정보, 사외 전송과 관련됨
- 과거에 오판정이 많았던 분류에 해당함
이 지점에서는 AI의 자기 평가보다 규칙으로 검출할 수 있는 부자연스러움이 더 유용할 때가 있습니다. 사람의 확인을 완전히 없애는 것이 아니라, 확인해야 할 안건을 좁히기 위해 AI를 사용하는 이미지입니다.
처음부터 본 운영 업데이트까지 연결하지 않고, 기존의 업무 데이터를 사용하여 '결과를 보기만 하는' 상태에서 시작하면 진행하기 수월합니다.
먼저 대표적인 입력뿐만 아니라 표기 불일치, 정보 부족, 여러 의뢰가 섞인 문장, 판단이 모호한 문장도 포함합니다. 정답이 되는 분류나 추출 결과는 AI에게 전달하기 전에 사람이 별도로 결정해 둡니다.
검증 시에는 다음과 같은 표를 남겨두면 개선 사항을 찾기 쉬워집니다.
| 입력 ID | 예상 결과 | AI 결과 | 규칙 판정 | 사람의 최종 판단 | 수정 이유 |
|---|---|---|---|---|---|
| 문의 A | 청구 확인 | 청구 확인 | 통과 | 올바름 | - |
| 문의 B | 확인 대기 | 반품 | 고객 코드 불명 | 확인 필요 | 문장에 고객 정보가 없음 |
실제로 해보면 AI의 분류를 고치는 것보다, 분류 정의가 모호했다는 사실을 깨닫는 경우가 있습니다. '반품'과 '교환'을 나눌 것인지, '청구 확인'과 '결제 방법 질문'을 나눌 것인지를 먼저 결정하지 않으면, AI와 사람 모두에게 동일한 판단을 요구할 수 없습니다.
AI를 사용하는 처리에서는 입력문, AI의 출력, 사용한 프롬프트의 버전, 규칙 판정, 최종적인 사람의 판단을 남길 수 있도록 해두면 안심할 수 있습니다.
특히 외부 서비스로 등록·전송하기 전에 처리 대상을 한 번 큐(Queue)나 초안으로 저장해 두면, 오류를 발견했을 때 멈추기 쉽습니다. 동일한 입력을 재실행했을 때 중복 등록되지 않는 메커니즘도 필요합니다.
또한 프롬프트나 분류 규칙을 변경할 때는 과거의 대표 데이터로 재확인하는 것이 좋습니다. AI 측만 조정했다고 생각해도, 확인 대기로 넘어가는 건수나 후속 처리의 동작이 변할 수 있습니다.
AI는 모호한 문장을 다루는 입구로서 편리하지만, 업무의 확정 처리까지 맡길 필요는 없습니다.
금액·마스터 대조·갱신 가능 여부는 규칙으로 확정하고, AI는 분류·추출·요약의 후보 생성에 사용한다. 이 역할 분담을 하면 도입 후에도 설명, 확인, 복구가 용이해집니다.
처음 시도한다면 사외 전송이나 데이터 갱신을 동반하지 않는 '문의 분류 결과를 목록으로 확인하는' 작업부터 시작하는 것을 추천합니다. 거기서 오류가 발생하는 양상을 확인한 뒤, 규칙 검증이나 확인 화면을 추가해 나가면 무리 없이 확장할 수 있을 것입니다.
마찬가지로 AI를 도입할 곳과 일반적인 처리로 충분한 곳을 업무별로 구분하고 싶다면, 나고야 업무 툴 공방(名古屋業務ツール工房)에서 무료 상담을 받을 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기