AI 에이전트 실행 중간에 멈추고 인간의 입력을 기다리는 방법
요약
AI 에이전트가 실행 중 인간의 승인을 기다리며 멈추는 방법을 설명합니다. 이는 단순한 루프를 넘어, 외부 결정에 의해 진행이 블록되는 그래프 기반 프레임워크(LangGraph 등) 내 전용 노드를 활용하는 것이 가장 효과적입니다.
핵심 포인트
- 일시 정지는 에이전트 추론 영역 밖에 있어야 합니다.
- 그래프 노드에서 '행동 결정'과 '도구 실행' 사이에 블록 지점을 만듭니다.
- 단순 루프의 경우, 반환하지 않는 함수 호출로 일시 중지 패턴을 구현합니다.
- Claude Code 환경에서는 MCP 클라이언트가 폴링 루프를 단일 도구 호출로 처리할 수 있습니다.
실행 중인 AI 에이전트를 중간에 일시 정지시키고, 사람이 결정을 내릴 때까지 기다린 다음 계속 진행하는 방법을 알아봅니다. 이때 폴링(polling) 해킹이나 상태 손실 없이 처리할 수 있습니다.
문제점: 에이전트는 스스로 멈추지 않는다
플랜을 세우고, 도구를 호출하고, 관찰한 후 반복하는 루프 내에서 작동하는 툴 콜링(tool-calling) 에이전트는 '정말로 이걸 해야 할까?'라고 묻고 멈출 자연스러운 지점이 없습니다. 일단 툴 호출이 전송되면 부작용(side effect)이 발생합니다. 도구에 confirm=True 플래그를 붙이는 것도 도움이 되지 않습니다. 아무것도 에이전트가 실행하기 전에 이 플래그를 확인하도록 강제하지 못하며, 누가 '예'라고 했는지 기록도 남아있지 않습니다.
실제로 필요한 것은 외부 결정이 도착할 때까지 진행될 수 없는 그래프(graph) 내의 단계입니다. 즉, 일시 정지는 에이전트 자체의 추론 영역 밖에 있어야 하며, 에이전트가 스스로 우회할 수 없는 장소여야 합니다.
일시 정지를 삽입할 위치
만약 그래프 기반 프레임워크(LangGraph 또는 직접 구현한 상태 머신)를 구축하고 있다면, 자연스러운 지점은 '에이전트가 행동을 결정함'과 '도구가 실행됨' 사이에 있는 전용 노드입니다. 이 노드는 세 가지 작업을 수행합니다: 제안된 행동을 영구적으로 저장할 곳에 푸시(push)하고, 결정에 대해 블록(block)하며, 그 후에야 실제 도구로 제어권을 넘깁니다.
import time
import requests
...
이 그래프 노드는 루프 내에서 time.sleep(5)에 의해 블록되므로, 에이전트의 자체적인 제어 흐름은 해당 API로부터 `status:
여기서는 expires_in이 '실행 후 잊어버리는(fire-and-forget)' 액션보다 더 중요합니다. 데이터베이스가 이미 변경된 상태에서 25분 전에 제안된 스키마 마이그레이션은 사람이 최종적으로 승인 버튼을 누른다고 해서 자동으로 적용되어서는 안 됩니다. 시간 민감한 모든 것에는 expires_in을 짧게 설정하고 (이 예제에서는 1800초를 사용합니다), 노드에서 expired 상태를 rejected와 동일하게 취급하세요. 즉, 실행하지 않고 통과하며(fall through), 에이전트가 재제안할지 여부를 결정하도록 맡겨야 합니다.
| 결과 (Outcome) | 그래프가 해야 할 일 |
|---|---|
approved | final_preview와 함께 실행 노드로 진행 |
| ... |
그래프 프레임워크 없이 일시 중지하기
에이전트가 그래프가 아니라 단순한 루프라면, 동일한 패턴이 적용됩니다. 즉, '일시 중지'는 액션이 결정될 때까지 반환하지 않는 함수 호출 그 자체입니다. Claude Code나 다른 MCP 클라이언트 내부에서 실행되는 에이전트의 경우, mcp.md가 이 정확한 폴링 루프를 단일 블로킹 도구 호출(impri_await_decision)로 감싸주므로, while 루프를 직접 작성할 필요조차 없습니다.
다음 단계
API 키를 받으려면 quickstart부터 시작하고, 이 일시 중지 노드가 기반으로 하는 세 호출 패턴에 대한 전체 REST/MCP 워크스루는 the full REST/MCP walkthrough를 참고하세요. 특히 Python과 통합하는 경우, 클라이언트 라이브러리는 sdk-python에서 다룹니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기