AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

AI가 짠 코드는 “돌아간다”와 “맞다”가 다르다

AI에게 데이터 파이프라인을 짜달라고 하면 실행은 잘 됩니다. 코드는 초록불이고, 에러 하나 없이 숫자가 나옵니다. 그런데 그 숫자가 평균 기온 179.6도라면, 무언가 잘못된 겁니다.

사진 출처: MotherDuck

데이터 플랫폼 MotherDuck의 엔지니어가 자신이 실제로 겪은 사례를 바탕으로, AI가 짠 파이프라인을 그냥 믿어도 되는지 판단하는 방법을 정리했습니다. 핵심은 하나입니다. 코드가 도는 것과 코드가 맞는 것은 다른 문제라는 겁니다.

출처: Code that runs is not code that’s correct: 4 ways to trust an AI-written data pipeline – MotherDuck

179.6도가 나온 이유

미국 기상관측소의 일별 최고기온 데이터를 불러와 평균과 최고 기록을 알려달라고 AI에 프롬프트를 던졌습니다. 프롬프트 자체는 틀린 게 없었습니다. 문제는 AI가 데이터를 직접 보지 못한 채 짐작으로 코드를 짰다는 점입니다.

원본 데이터는 기온을 10분의 1도 단위 정수로 저장합니다. 151이면 15.1도라는 뜻인데, 소수점이 없으니 AI는 이를 그냥 151로 읽어버렸습니다. 게다가 원본에는 품질 불량 표시가 붙은 값도 섞여 있는데, 이를 걸러내지 않고 그대로 계산에 넣었습니다. 그 결과 평균 179.6도, 최고 기록 807.8도라는 터무니없는 숫자가 나왔지만, 코드는 에러 없이 멀쩡히 돌아갔습니다.

이런 일이 생기는 이유는 두 가지입니다. AI는 같은 프롬프트를 세 번 던지면 세 번 다른 구현을 내놓을 만큼 비결정적입니다. 그리고 AI는 대개 실제 데이터를 보지 못한 채 스키마나 단위, 중복 기준을 추측으로 채웁니다. 이 추측이 틀리면 조용한 버그가 됩니다. 에러 로그에는 아무것도 남지 않고, 그럴듯해 보이는 틀린 숫자만 남습니다.

AI에게 실제 데이터를 먼저 보여주면 달라진다

해결책은 의외로 단순합니다. 코드를 짜기 전에 AI가 실제 데이터를 들여다보게 하는 겁니다. 데이터베이스에 연결된 MCP를 통해 AI에게 “먼저 데이터를 살펴봐 달라”고 요청하면, AI는 몇 개의 쿼리를 스스로 돌려보고 값이 10분의 1도 단위라는 것, 품질 불량 플래그가 있다는 것, 연도별로 데이터가 나뉘어 있다는 것을 알아냅니다.

이렇게 실제 데이터를 확인한 뒤에 나온 코드는 완전히 달라집니다. 연도를 하드코딩하는 대신 파라미터로 받고, 불량 값을 걸러내고, 다시 실행해도 중복이 쌓이지 않도록 해당 연도만 지우고 다시 채워 넣습니다. 데이터를 직접 보지 못하고 짐작에 의존했던 첫 시도와 달리, 이번엔 짐작할 필요가 없어진 겁니다.

코드가 아니라 결과물을 계약에 대해 검증한다

가장 중요한 원칙은 따로 있습니다. 코드 자체를 검토하는 대신, 결과물이 미리 정해둔 목표에 맞는지 확인하는 겁니다. MotherDuck 엔지니어는 이를 “계약”이라 부릅니다. 파이프라인을 만들기 전에, 완성됐을 때 어떤 표가 존재해야 하고 한 행이 무엇을 의미하는지, 애매한 용어는 어떻게 정의하는지를 먼저 문서로 못박아 둡니다.

이 계약은 코드에 그대로 검증 로직으로 들어갑니다. 예를 들어 기온 값이 세계 기록 범위(영하 90도에서 영상 60도 사이)를 벗어나면 파이프라인이 그 자리에서 에러를 냅니다. 10분의 1도 변환을 깜빡하는 실수가 있으면 이 범위 검사에서 곧바로 걸립니다. 조용히 틀린 숫자를 내놓는 파이프라인보다, 시끄럽게 멈추는 파이프라인이 훨씬 낫다는 게 이 방식의 요지입니다.

이렇게 만든 계약이 실제로 결론을 뒤집은 사례도 있습니다. 미국 전체 관측소의 평균 기온만 보면 1974년 18.23도에서 2024년 17.92도로 떨어져 마치 냉각되는 것처럼 보입니다. 하지만 이 기간 관측소 수는 6,160개에서 8,726개로 늘었고, 새로 추가된 관측소 상당수가 더 춥고 높은 지역에 있습니다. 매년 공통으로 존재한 2,652개 관측소만 놓고 비교하면 18.16도에서 19.27도로, 약 1.1도 오른 것으로 나타납니다. 같은 데이터인데 무엇을 고정하느냐에 따라 정반대 결론이 나온 겁니다.

이 원칙들을 파라미터화, 증분 적재, 데이터 사전 확인, 계약 검증까지 하나의 규칙 세트로 묶어 매번 재사용하는 방법도 소개합니다. 매번 처음부터 다시 판단하는 대신, 한 번 정리한 규칙을 새 파이프라인마다 그대로 적용하는 방식입니다.


AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다