AI에게 같은 작업을 다시 요청하기 전에: 중복 실행을 방지하는 재시도 설계
요약
AI가 외부 작업을 수행할 때 발생하는 '결과 불명확' 상태를 안전하게 처리하는 재시도 설계 원칙을 제시합니다. 단순히 응답이 없다는 사실만으로 실패로 간주하고 재시도하면 중복 전송의 위험이 있습니다. 안전한 재시도를 위해서는 작업 상태를 미착수, 실행 중, 실행 후 세 단계로 구분하고, 외부에서 대조 가능한 고유 식별자를 반드시 확보해야 합니다.
핵심 포인트
- 작업 실패보다 '결과 불명확' 상태가 더 위험하다.
- 재시도 안전성을 위해 작업 상태를 3단계(미착수/실행중/실행후)로 구분해야 한다.
- 대화 로그만 의존하지 말고, 외부에서 대조 가능한 고유 식별자를 확보하는 것이 핵심이다.
- 결과가 불분명할 때는 무작정 재시도하기보다 확인 절차를 거쳐야 한다.
안녕하세요, AI 사범입니다.
게시물 버튼을 누른 후 화면이 멈췄습니다. 전송했는지 안 했는지 알 수 없습니다. 그럴 때 '한 번 더 눌러야지'라고 생각할 수는 없습니다.
첫 번째 작업이 성공적으로 처리되었다면, 같은 게시물이 두 개가 올라갈 수도 있기 때문입니다.
AI에게 외부 작업을 맡길 때, 실패 자체보다 다루기 어려운 것은 '결과를 알 수 없는' 상태입니다. 이 부분을 실패와 동일하게 취급하면 재시도가 중복 전송으로 이어집니다.
'답변이 없음'은 '실행되지 않음'을 의미하지 않는다
예를 들어, AI가 기사를 공개하는 작업을 시작했다고 가정해 봅시다. 사이트 측에서는 공개가 완료되었지만, 화면 응답이 돌아오기 전에 연결이 끊겼습니다. AI 입장에서는 성공 표시가 없습니다.
그래서 같은 작업을 다시 수행하면, 두 번째 게시물이 올라갈 가능성이 있습니다. 반대로, 첫 번째 작업이 사이트에 도달하지 않았다면, 재수행을 하지 않는 한 아무 일도 일어나지 않습니다.
이 둘은 겉모습이 같습니다. 작업 후 응답이 없다는 단 하나의 사실만으로는 구별할 수 없습니다.
전에 작성한 '미검증'과 '검증 실패'의 차이와 마찬가지로, 알 수 없는 상태를 실패라고 단정하지 않는 것이 출발점입니다.
실행 전 · 실행 중 · 실행 후를 구분한다
재시도를 안전하게 하려면, 최소한 상태를 세 가지로 나누어 남겨야 합니다.
| 상태 | 알고 있는 것 | 다음에 할 일 |
|---|---|---|
| 미착수 | 외부 작업을 아직 시작하지 않음 | 조건을 확인하고 한 번 실행한다 |
| ... | ||
| '전송했다고 생각함', '버튼을 눌렀다'는 완료의 증거가 될 수 없습니다. 공개 장소에 같은 내용이 있는지, 메시지 목록에 같은 답장이 남아있는지 등을 읽어봐야 다음 움직임을 결정할 수 있습니다. |
작업마다 대조할 수 있는 표시를 갖는다
재시도 전에 대상(데이터)을 유일하게 가리킬 수 있는 정보를 정해둡니다. 기사라면 제목과 본문, 게시처 계정, 작업 번호 등이 될 수 있고, 답장이라면 상대방의 메시지와 답장 본문이 됩니다.
외부 서비스에 '같은 요청을 한 번만 받는다'는 메커니즘이 준비되어 있다면 그 식별자를 사용합니다. 없다면, 실행 전에 중복 여부를 확인하고, 실행 후에 1차 화면을 확인하는 절차를 세트로 만듭니다.
중요한 것은 AI의 대화 로그만으로 대조해서는 안 된다는 것입니다. 대화에는 '공개했습니다'라고 쓰여 있어도 외부 화면에서는 찾을 수 없는 경우가 있습니다. 반대로, 대화가 끊겼더라도 공개만 완료된 경우도 있습니다.
결과가 불분명하면 멈춰서 확인한다
외부 화면조차 열 수 없고, 성공했는지 확인할 방법이 없습니다. 그럴 때는 재시도를 보류하고, 무엇을 확인해야 다시 시작할지 남겨둡니다.
이 대기 시간은 단순히 신중함 때문만은 아닙니다. 공개 중복이나 같은 상대에게 연달아 보내는 것을 피하기 위한 작업입니다. AI를 상시 운영할 때의 멈추는 방법에 대해서는 이 글에서도 언급했습니다.
재시도 판단을 짧게 하는 요령은 결과 기록에 '작업했는지'뿐만 아니라 '외부에서 무엇을 확인했는지'를 첨부하는 것입니다. 답장이 없을 때는, 다시 누르기 전에 한 번만 읽어보는 것이 좋습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기