AI 에이전트 파이프라인: 8단계보다 중요한 실행 경계

English version

TECH INSIGHT / EXPLAINED

에이전트 루프를 나누는 목적은 코드를 짧게 보이게 하는 것이 아닙니다. 모델 응답이 잘렸을 때 도구 실행을 막고, 사용자가 취소했을 때 무엇을 저장할지 결정하는 경계를 만드는 데 있습니다.

세 사람이 준비·모델과 도구 반복·저장 구역을 나누어 에이전트 실행을 설명한다.
개념을 설명하는 AI 제작 일러스트. 세 사람이 준비·모델과 도구 반복·저장 구역을 나누어 에이전트 실행을 설명한다.

여덟 책임, 세 실행 구역

context·history·prompt는 입력·권한·이전 대화·프롬프트를 준비합니다. think·act·observe는 모델 호출, 검증된 도구 실행, 결과 관찰을 반복합니다. memory·summarize는 저장과 요약 책임입니다. 이것은 한 가지 설계안이며 모든 앱에서 정확히 여덟 클래스를 만들라는 규칙은 아닙니다. 긴 실행은 중간 체크포인트도 필요합니다.

토큰 예산 검사는 모델 호출 이전에 둡니다. 중간 결과가 커지면 다음 think 전에 축약하되 도구 호출과 대응 결과를 함께 유지합니다. 요약에는 삭제된 원문을 복원할 수 있는 식별자와 버전을 남깁니다.

단계 객체에 실행 결과를 저장하지 않는다

하나의 단계 인스턴스를 여러 요청이 공유한다면 s.result 같은 가변 필드가 다른 실행과 섞일 수 있습니다. 결정 값을 반환하고 요청마다 RunState를 새로 만드세요. 공유 의존성이 thread-safe한지도 별도 조건입니다. 아래는 인터페이스 설계 조각입니다.

type Decision int
const (
    Next Decision = iota
    RetryModel // skip tool execution for this iteration
    Complete   // preserve answer, then finalize
    Abort
)
type Stage interface {
    Name() string
    Execute(context.Context, *RunState) (Decision, error)
}
// The returned decision belongs to this call, not a shared stage field.
// RunState is allocated separately for every request.

잘린 응답이 act로 새지 않도록

모델 응답을 받으면 종료 이유, 도구 이름, 인자 JSON과 스키마, 현재 사용자 권한을 검증합니다. 불완전한 도구 인자는 실행하지 않습니다. RetryModel은 그 반복의 act·observe를 건너뛰고 제한 횟수 안에서 모델 단계로 돌아갑니다. 텍스트가 잘린 경우도 '정상 완료'로 숨기지 말고 불완전 상태를 표시하거나 이어쓰기 정책을 적용합니다.

Complete라면 최종 답변을 RunState에 먼저 저장한 뒤 도구 실행 없이 체크포인트와 마무리로 갑니다. Abort와 오류는 새 외부 동작을 멈춥니다. 최대 반복 수, 토큰·비용·시간 한도 중 하나라도 넘으면 종료 상태를 남깁니다.

취소 후 정리는 제한된 시간 안에서

Go의 WithoutCancel은 부모 취소뿐 아니라 deadline도 분리합니다. 그래서 저장만 남기더라도 별도 짧은 timeout을 붙여야 정리 작업이 무기한 대기하지 않습니다. Go 1.21 이상을 전제로 한 조각입니다.

cleanupCtx, cancel := context.WithTimeout(
    context.WithoutCancel(ctx), 3*time.Second,
)
defer cancel()
err := saveCheckpoint(cleanupCtx, state)

정리 단계는 새 도구 실행이나 무제한 요약 호출을 하지 않습니다. 체크포인트 저장 실패는 응답에 저장 여부를 구분하고 재처리 가능한 운영 기록을 남기세요.

검증할 네 경로

  • 정상 텍스트 → 답변 저장, 도구 호출 0회.
  • 잘린 JSON → 도구 호출 0회, 제한된 모델 재시도.
  • 도구 접수 후 연결 단절 → 식별자로 상태 조회, 무조건 재실행 금지.
  • 취소 → 새 작업 중지, 제한 시간 내 체크포인트 처리.

이 경계에 훅을 붙이는 방법

참고 자료

내용·예제 검토: 2026-09-29

댓글