최근에 코드를 작성하는 친구 몇 명과 이야기하면서 모두가 공통된 고충을 가지고 있다는 것을 알게 되었다. 대모델이 로직이나 알고리즘을 작성할 때는 꽤 능숙한데, 왜 정기 작업이나 시간 스케줄링 부분에 오면 자주 실패하는 걸까? 별표가 하나 빠지거나, 물음표가 하나 더 붙거나, 시간이 맞지 않아서 실행해 보면 전혀 예상대로 되지 않는다.
솔직히 말하면, 문제는 Cron 표현식에 있다. 이건 겉보기에는 간단해 보인다. 다섯 개나 여섯 개의 필드일 뿐이잖아? 하지만 실제로 사용해 보면 함정이 너무 많아서 사람을 묻을 정도다. 대모델이 아무리 똑똑해도 확률에 기반해 텍스트를 생성하는 것이지, 서버의 시간대를 이해하지 못하고, 비즈니스에서 '매주 월요일 아침 9시'가 무엇을 의미하는지 이해하지 못한다. 단지 훈련 데이터의 일반적인 패턴을 적용할 뿐이다. 요구 사항이 조금 특별해지면, 예를 들어 '매월 마지막 평일'이나 '매 2시간의 30분' 같은 경우, 엉터리로 생성하기 시작한다. 문법적으로는 맞지만 의미적으로 완전히 틀린 표현을 만들어 낸다. 그걸 가져다 실행하면 실행이 안 되거나 엉뚱하게 실행되어 결국 다시 디버깅해야 하니 오히려 더 힘들어진다.
내가 본 가장 황당한 경우는 대모델에게 '매일 새벽 2시 30분에 로그 정리'라는 정기 작업을 작성하게 했더니, 0 30 2 ?를 생성한 것이다. 겉보기에는 맞는 것 같지? 그런데 배포해 보니 매일 아침 8시에 실행되는 것이었다. 왜? 서버가 기본적으로 UTC 시간대였기 때문이다. 대모델은 이 점을 전혀 고려하지 않았다. 대모델을 탓하려 해도 억울할 것이다. 그냥 언어 모델일 뿐인데, '베이징 시간 새벽 2시 30분이 UTC로 몇 시인지' 물어보면 맞게 계산할 수도 있지만, 프롬프트에 그냥 '새벽 2시 30분'이라고 쓰면 현재 환경의 기본 시간대를 사용할 것이다. 이것이 전형적인 '조용한 오류'로, 가장 치명적이다.
그래서 지금 내 방법은 시간 스케줄링 같은 요구 사항이 있을 때 절대 대모델이 자유롭게 생성하게 두지 않는 것이다. 요구 사항을 명확히 설명하고, 생성 결과를 Cron 표현식 생성기에 넣어 검증하게 한다. 이건 정말 신기한 도구다. 표현식을 입력하면 즉시 사람이 읽을 수 있는 말로 번역해 준다: '매월 1일과 15일 3시 15분에 실행', 그리고 다음 실행 시간도 표시해 준다. 한눈에 맞는지 틀린지 알 수 있어서 별표를 세느라 시간을 낭비할 필요가 없다.
아마 '매번 수동으로 검증하면 되지 않나?'라고 말할지도 모른다. 문제는 대모델이 생성하는 속도가 빠르니 검증 속도도 따라가야 한다는 것이다. 필드를 하나씩 대조하면 효율이 오히려 떨어진다. 하지만 생성기를 사용하면 일괄 검증이 가능하다. 예를 들어 열 개의 다른 표현식을 생성하게 하고 한 번에 모두 넣어서 문제가 있는 것이 한눈에 보이게 할 수 있다. 이것은 문서를 뒤져가며 'W'가 무엇을 의미하고 'L'이 무엇을 의미하는지 찾는 것보다 훨씬 빠르다.
또한, 나는 한 가지 요령을 발견했다. 대모델에게 Cron을 작성하게 하기 전에 프롬프트에 '표준 답안' 예시를 먼저 주는 것이다. 예를 들어 '매일 0시에 실행: 0 0 0 ?'라고 먼저 쓰고, '이 형식을 참고해서 매주 금요일 오후 6시에 실행되는 것을 작성해 줘'라고 말하는 것이다. 그러면 오류 확률이 크게 줄어든다. 하지만 그렇더라도 마지막 검증 단계는 절대 생략할 수 없다. 시간 스케줄링은 한 번 잘못되면 운영 장애로 이어질 수 있기 때문이다. 가벼우면 데이터가 백업되지 않고, 심하면 업무 피크 시간에 작업이 멈춰 버린다.
결국, 대모델은 좋은 도우미이지만 신은 아니다. 자연어를 코드로 번역하는 데는 능숙하지만, '시간'처럼 강한 맥락과 암묵적인 규칙을 가진 것은 확실히 혼란스러워할 수 있다. 개발자로서 우리는 도구를 사용해 보험을 들어야 한다. 그 Cron 표현식 생성기는 이제 내 코드 라이브러리에 항상 있는 북마크다. 정기 작업을 작성할 때마다 '해석' 버튼을 누르지 않으면 마음이 편하지 않다.
그러니 만약 당신도 대모델이 생성한 시간 스케줄링 코드 때문에 자주 문제를 겪고 있다면, 서둘러 바보라고 욕하지 말고, 자신의 프롬프트가 부족하다고 의심하지 말라. 2분만 투자해 생성기를 사용해 결과를 시각적으로 확인하는 것이 무엇보다 효과적이다. 절약한 디버깅 시간으로 커피 두 잔을 더 마실 수 있을 것이다.