AI

LLM 위임의 함정 — 문서 편집을 맡기면 25%가 훼손된다

DELEGATE-52 벤치마크에서 GPT, Claude, Gemini 모두 위임형 문서 편집 시 평균 25% 문서를 훼손하는 것으로 나타났다.

8 min read
LLMAI에이전트문서벤치마크
LLM 위임의 함정 — 문서 편집을 맡기면 25%가 훼손된다

AI 에이전트에게 "이 문서 좀 수정해줘"라고 위임할 때 무슨 일이 벌어질까?

최근 발표된 연구에 따르면, 최고 성능 LLM이라도 연속적인 문서 편집 위임에서 평균 25%의 콘텐츠를 훼손한다. GPT, Claude, Gemini 모두 예외가 없다.

DELEGATE-52 벤치마크

연구팀은 52개 전문 영역에서 20번의 연속 위임 작업을 수행했다.

[💡 잠깐! 이 용어는?] DELEGATE-52: 52개 전문 영역(법률, 의료, 기술 문서 등)에서 LLM에게 문서 편집을 연속으로 위임할 때 품질이 어떻게 변하는지 측정하는 벤치마크 데이터셋.

결과는 명확했다.

모델평균 문서 충실도20회 후 최저치
최고 성능 모델들75%6~48%
Vanilla 단일 편집~95%-

첫 번째 위임은 꽤 잘 된다. 문제는 반복이다. 상호작용이 길어질수록, 문서가 클수록, 주변에 방해 파일이 많을수록 열화가 심해진다. 일부 모델은 20회 상호작용 후 충실도가 6% 수준으로 떨어졌다.

왜 이런 일이 생기나

LLM은 편집 명령을 처리할 때 전체 텍스트를 읽고 다시 쓴다. 이 과정에서 세 가지 문제가 누적된다.

1. 의미 절제

재작성할 때마다 LLM은 내용을 자신의 방식으로 "정상화"한다. 원본의 특정 표현, 뉘앙스, 도메인 전문 용어가 일반적인 표현으로 교체된다. 한 번은 괜찮다. 하지만 20번 반복되면 원본과 완전히 다른 문서가 된다.

비유하면 복사기로 복사한 복사본을 다시 복사하는 것과 같다. 한 번은 거의 같다. 하지만 스무 번 반복하면 원본이 무엇이었는지 알아볼 수 없다.

2. 평균으로의 회귀

LLM은 학습 데이터의 "평균적인 텍스트"로 수렴하는 경향이 있다. 원본이 아무리 특화된 전문 문서여도, 반복 편집을 거치면 일반적인 언어로 밀려난다.

[💡 잠깐! 이 용어는?] 평균으로의 회귀: LLM이 특이한 표현이나 구조를 반복적으로 처리할 때 학습 데이터에서 더 자주 등장하는 "평균적인" 형태로 수렴하는 현상. 통계학 용어를 AI 동작 설명에 차용한 것이다.

3. 컨텍스트 오염

문서가 길거나 주변에 다른 파일이 많으면, LLM이 관련 없는 정보를 실수로 섞어 쓰는 빈도가 높아진다. 방해 파일이 많을수록 열화가 심하다는 실험 결과와 일치한다.

실무적 해결 방향

HN 커뮤니티와 연구팀이 제시한 방향은 전체 재작성을 피하는 것이다.

제한된 편집 명령 사용

편집 명령 예시 — str_replace 방식
# 나쁜 방법: 전체 파일 재작성 위임
result = llm.ask("이 파일 전체를 수정해줘: " + full_document)
 
# 좋은 방법: 제한된 편집 명령
edit_command = {
  "type": "str_replace",
  "old_str": "기존 특정 구절",
  "new_str": "새로운 구절"
}
result = apply_edit(document, edit_command)

str_replace, insert, delete 같은 제한된 편집 명령을 쓰면 LLM이 전체를 재작성할 기회 자체가 없다. 변경 범위를 명확히 제한하는 것이다.

방식훼손 위험이유
전체 파일 재작성높음모든 내용을 LLM이 재해석
str_replace낮음지정 구절만 교체
insert매우 낮음기존 내용에 추가만

LLM 왕복 최소화

문서 수정에 LLM을 반복 호출하는 아키텍처 자체를 줄여야 한다. 검색, 수정, 저장은 결정적 도구로 처리하고, LLM은 최종 렌더링 단계에만 관여시키는 구조가 안전하다.

안전한 문서 수정 아키텍처
async function safeDocumentEdit(
  documentPath: string,
  instruction: string
): Promise<void> {
  // 1. LLM에게 편집 계획만 요청 (전체 재작성 아님)
  const editPlan = await llm.ask(`
    다음 문서에서 "${instruction}"를 수행하기 위한
    str_replace 명령 목록을 JSON으로 반환해줘.
    전체 재작성 금지. 필요한 부분만.
    
    문서: ${await readFile(documentPath)}
  `)
 
  // 2. 편집 계획을 파싱하고 결정적으로 적용
  const edits: Edit[] = JSON.parse(editPlan)
  for (const edit of edits) {
    await applyStrReplace(documentPath, edit.old_str, edit.new_str)
  }
 
  // 3. LLM은 더 이상 관여하지 않음
}

언제 조심해야 하나

모든 위임이 위험한 건 아니다. 위험 수준을 기준으로 나누면 이렇다.

시나리오위험 수준이유
단발성 초안 생성낮음원본 없음, 훼손할 것 없음
한 번의 교정낮음반복 없음
연속 편집 위임높음반복 + 전체 재작성
장기 에이전트 루프매우 높음장기간 누적 열화
법률·의료·기술 문서높음전문 용어 희석 위험

포인트: 중요 문서를 에이전트 루프에 맡길 때는 반드시 diff 기반 검토 단계를 추가하라.

정리

  • 최고 성능 LLM도 연속 문서 편집에서 평균 25% 훼손이 발생한다
  • 원인은 의미 절제, 평균으로의 회귀, 컨텍스트 오염의 누적이다
  • str_replace 같은 제한된 편집 명령을 쓰면 훼손 위험이 크게 줄어든다
  • 중요 문서는 에이전트 루프보다 한 번의 집중 편집이 안전하다

AI 에이전트가 파일을 자유롭게 수정하게 두기 전에, 그 파일이 20번의 수정 후에도 원본과 같을지 한 번 생각해볼 필요가 있다.


참고: