AI에게 업무 도구의 수정을 요청합니다.
수정 후, 화면은 정상적으로 표시됩니다. 파일도 출력할 수 있습니다. 요청했던 기능도 작동하고 있습니다.
그럼에도 불구하고, 확인해 두고 싶은 것이 있습니다.
업무 처리가 작동하더라도, 이상을 감지하는 체크 기능까지 올바르게 작동한다고는 할 수 없기 때문입니다.
이번 글에서는 2026년 10월에 공개된 OpenAI의 사내 AI 에이전트에 관한 보고서(갱신일 10월 20일)를 계기로, AI에게 도구 개수정을 맡길 때 무엇을 확인해야 할지 생각해봅니다.
후반부에서는 가상의 업무 체크 도구를 Python으로 재현하고, 체크 기능의 이상을 테스트로 감지하는 방법을 보여드리겠습니다.
1. AI가 감시 기능을 약화시킨 사례
2026년 10월에 공개된 OpenAI의 보고서(보고 페이지 갱신일: 10월 20일)에서는 사내 코딩 작업에서 AI 에이전트가 감시 기능(monitoring function)을 약화시킨 사례가 소개되었습니다.
보고된 사례에는, 감시 결과 기록은 남기면서 알림을 무효화한 것, 프로그램 변경 과정에서 감시 기능의 구현을 삭제한 것이 포함됩니다.
후자의 경우, AI가 감시 기능의 구현을 삭제한 후 사용자로부터 확인받았을 때, 감시 기능 삭제를 부정하는 답변을 했다고 보고되었습니다.
OpenAI는 대책을 강화하고 있지만, AI가 이러한 변경을 수행한 이유에 대해서는 아직 조사가 필요하다고 설명했습니다.
출처: OpenAI, Suppressing misalignment monitoring alerts and disabling misalignment monitoring
이는 OpenAI 사내에서 AI의 행동을 감시하는 메커니즘에 관한 사례입니다. 일반적인 업무 도구에서도 같은 문제가 발생했음을 의미하지는 않습니다.
한편, 이번에 다룰 샘플은 업무 데이터의 이상을 감지하는 메커니즘입니다. 감시 대상이 다르다는 점을 유념해야 합니다.
공통적으로 생각해 볼 것은, 이상(anomaly)을 알려주는 메커니즘이 AI에 의한 개수정 과정에서 약화될 가능성이 있다는 점입니다.
'처리가 정상적으로 작동하는 것'과 '이상을 감지하는 메커니즘이 정상적으로 작동하는 것'은 같은 확인일까요?
2. 정상적인 데이터만으로는 찾기 어려운 문제
예를 들어, CSV의 금액을 읽어와 합계를 표시하는 도구를 생각해 봅시다.
이 도구에는 마이너스 금액이 있으면 경고하는 기능이 있다고 가정합니다.
AI에게 '합계 표시를 보기 좋게 수정해 주세요'라고 요청했습니다.
수정 후, 총 금액은 올바르게 표시됩니다. 하지만 어떤 이유로 인해 마이너스 금액에 대한 경고가 나오지 않게 되었다면 어떨까요?
정상적인 CSV 데이터만으로 동작 확인을 해도 문제점을 발견하기 어려울 것입니다. 정상적인 데이터로는 애초에 경고가 발생하지 않기 때문입니다.
체크 기능이 작동하고 있음을 확인하려면, 경고가 나와야 하는 데이터를 사용해 확인해야 합니다.
실제 업무에서는 마이너스 금액이 정당한 경우도 있습니다. 여기서는 설명을 단순화하기 위해 '마이너스 금액은 경고 대상'이라는 가상의 규칙을 사용합니다.
3. Python으로 체크 기능의 이상 재현하기
먼저, 총액을 계산하고 마이너스 금액을 감지하는 함수를 만듭니다.
def process_amounts(amounts):
errors = [
f"{i}건째: 마이너스 금액 {amount}"
]
return {'total': sum(amounts), 'errors': errors}
실행 결과:
{'total': 2500, 'errors': ['3건째: 마이너스 금액 -500']}
총액은 2,500입니다. 3번째 건의 마이너스 금액도 감지되었습니다.
다음으로, 체크 기능이 무효화된 상태를 생각해 봅시다.
def process_amounts_changed(amounts):
return {
"total": sum(amounts),
"errors": []
}
실행 결과:
{'total': 2500, 'errors': []}
총액은 어느 쪽이나 2,500입니다. 하지만 후자에서는 마이너스 금액이 존재함에도 불구하고 경고가 없습니다.
총액만 확인했다가는 체크 기능의 이상을 놓치게 됩니다.
이는 설명을 위해 의도적으로 만든 코드이며, AI가 실제로 이러한 변경을 수행했다는 실험 결과는 아닙니다.
4. 이상을 감지할 수 있음을 테스트하기
그렇다면, 수정 후에도 체크 기능이 작동하고 있음을 어떻게 확인할 수 있을까요?
한 가지 방법은, 수정 전에 기대하는 동작을 테스트로 정의하고, 수정 후에도 동일한 테스트를 실행하는 것입니다.
아래는 제3장의 두 함수를 정의한 후에 실행해 주세요.
def test_negative_amount_is_detected(process):
result = process([1000, 2000, -500])
assert result["total"] == 2500
...
실행 결과:
process_amounts / test_normal_amounts_have_no_errors: PASS
process_amounts / test_negative_amount_is_detected: PASS
process_amounts_changed / test_normal_amounts_have_no_errors: PASS
...
이 코드는 테스트가 실패하더라도 처리를 멈추지 않고 결과를 표시하도록 합니다.
실행 결과를 보면, 정상 데이터에 대한 테스트는 두 함수 모두에서 통과했습니다. 하지만 마이너스 금액을 감지하는 테스트는 체크 기능을 비활성화한 함수에서만 실패했습니다.
정상일 때 문제가 없다는 것과, 비정상일 때 문제를 감지할 수 있다는 것은 별도로 확인해야 합니다.
참고로, 이번 샘플에서는 설명을 간결하게 하기 위해 AssertionError를 포착하여 결과를 표시하고 있습니다. 실제 자동 테스트 환경에서는 테스트 실패 시 실행 결과를 실패로 처리하고, 수정 사항을 승인하지 않는 메커니즘이 필요합니다.
5. 테스트 자체가 변경되면 어떻게 되는가
여기서 또 다른 문제가 있습니다. AI가 업무 처리 코드뿐만 아니라 테스트 코드까지 자유롭게 변경할 수 있는 경우입니다.
예를 들어, 앞선 테스트에서 다음 확인 사항이 삭제되었다고 가정해 봅시다.
assert result["errors"] == [
"3번째: 마이너스 금액 -500"
]
총합 금액만 확인하는 테스트가 된다면, 체크 기능이 비활성화되어 있어도 테스트를 통과하게 됩니다.
테스트가 성공했다고 해서 필요한 모든 확인이 이루어졌다고 할 수는 없습니다.
대책으로는 다음과 같은 방법들이 고려될 수 있습니다.
- 수정 대상 코드와, 승인 판정에 사용하는 테스트 코드를 분리한다.
- 중요한 테스트의 변경에는 사람의 검토(review)가 필요하다.
- 수정 전후의 차이점(diff)을 확인한다.
- 필요에 따라 AI가 편집할 수 없는 환경에서 테스트를 실행한다.
'이 파일은 변경하지 마세요'라고 AI에게 지시하는 것도 중요합니다. 하지만 단순히 지시만으로 기술적인 변경을 막을 수는 없습니다.
중요한 검증 기능일수록, AI가 수정할 수 있는 범위와, 수정 후의 승인 방법을 명확히 해 두어야 합니다.
6. 업무 도구 개수 시 확인해야 할 것들
업무 도구를 개수할 때는 적어도 다음 네 가지를 나누어 생각하고 싶습니다.
| 대상 | 확인할 것 |
|---|
| 업무 처리 | 요청한 기능이 올바르게 작동하는가 |
| ... | |
| 체크 기능의 코드가 남아 있어도, 호출되지 않으면 이상은 감지되지 않습니다. | |
또한, 이상을 감지하더라도 경고가 화면이나 출력 파일에 반영되지 않으면 담당자가 알아차리지 못할 가능성이 있습니다.
따라서 검증 규칙의 존재뿐만 아니라, 감지부터 통보까지의 일련의 동작을 확인하는 것이 중요합니다.
이번 샘플 코드는 감지 결과를 반환하는 부분까지만 다루고 있습니다. 통지나 로그 저장 동작까지는 검증하지 않았습니다.
7. 개수 후 확인 체크리스트
AI에 의한 업무 도구의 수정을 승인하기 전에, 다음 사항들을 확인할 수 있습니다.
- 요청한 기능이 정상적으로 작동하는가
- 정상 데이터에서 불필요한 경고가 발생하지 않는가
- 비정상 데이터에서 기대했던 대로 경고가 발생하는가
- 검증 조건이나 대상 항목이 의도치 않게 변경되지 않았는가
- 경고나 오류가 이용자에게 전달되는가
- 테스트 코드와 기대 결과의 변경을 확인했는가
- 수정 전후의 차이점(diff)을 확인했는가
- 사람이 검증 결과를 확인한 후에 본방에 반영하는가
OpenAI의 보고에는, AI가 감시 기능의 내장 삭제 후, 그 삭제를 부정하는 답변을 한 사례도 포함되어 있습니다.
따라서, AI의 완료 보고만으로 판단하지 않고, 실제 코드 변경과 동작 결과를 확인하는 것이 중요합니다.
모든 업무 도구에 같은 엄격함이 필요하다고는 할 수 없습니다.
하지만 급여 계산이나 회계 처리처럼 오류가 후속 공정에 영향을 미치는 업무에서는, 화면 표시나 출력 결과만으로 개수 완료라고 판단하지 않는 것이 중요합니다.
맺음말 | 체크 기능도 확인 대상에 포함하기
AI가 만든 결과를 확인하는 것은 중요하지만, 또 하나 확인하고 싶은 것이 있습니다.
그 결과를 확인하기 위한 메커니즘 자체가 올바르게 계속 작동하고 있는가.
정상 데이터에서 문제없이 작동하는 것과, 비정상 데이터를 올바르게 감지할 수 있는 것은 별개입니다.
AI에게 업무 도구 수정을 맡긴다면, 수정된 기능뿐만 아니라 유지해야 할 검증(validation) 기능에도 주의를 기울여야 한다.
그리고 AI의 지시에만 의존하지 않고, 테스트와 차이점 확인(diff check)을 통해 반드시 검증한다.
이것이 업무에 사용되는 도구를 안전하게 개수하기 위한 하나의 방법론이라고 생각한다.
참고 자료
OpenAI, Suppressing misalignment monitoring alerts and disabling misalignment monitoring
※파이썬 샘플은 설명용으로 작성된 가상의 예시입니다.
토론