앗, 이건 다른 대화 내용이네요
요약
본 글은 클립보드에 남아있는 무관한 내용물이나 병렬 세션의 잘못된 맥락이 에이전트 작업 수행 중 발생하는 새로운 유형의 오류를 다룹니다. 이는 기존 연구에서 다루던 프롬프트 주입, 주제 변경, 또는 명시적 지침 위반과는 다른 '우발적인 붙여넣기(accidental paste)' 현상입니다.
핵심 포인트
- '우발적인 붙여넣기'는 모호성이 핵심이며, 모델이 구별하기 어렵습니다.
- 이는 기존의 프롬프트 주입이나 주제 변경 공격과 근본적으로 다릅니다.
- 에이전트 시스템에서 잘못된 맥락을 참조하는 것이 새로운 취약점이 될 수 있습니다.
당신은 이런 경험을 해봤을 겁니다. 클립보드에 다른 대화의 내용물이 남아 있어서 — 다른 이유로 복사했거나 아예 거기에 있다는 걸 잊었거나 — 아무 맥락 없는 채팅창에 붙여넣게 되는 경우입니다. 대부분의 경우 보내기 전에 알아차리죠. 하지만 때로는 그렇지 못합니다.
이와 유사한 새로운 버전의 실수가 있고, 에이전트(agents)를 다루면서 이번 주 동안 겪었을 겁니다. 여러 세션이 병렬로 열려 있어서 각각 무언가를 기다리고 있는데, 잘못된 대화에 답변하는 경우입니다. 그 답변 자체는 사실이었지만, 맥락상 적절하지 않았던 것이죠.
제가 바로 이 현상을 실험으로 설정하고 있을 때 저에게도 일어났습니다. 에이전트가 방금 API 키를 제 클립보드에 넣었고, 동시에 그것을 저장할 셸 명령어(shell command)를 제안했습니다. 저는 그 명령어를 복사해서 실행하려고 했습니다. 그런데 이 명령어가 키를 덮어쓰는 바람에, 파일에는 비밀번호 대신 명령어의 텍스트가 들어가게 되었습니다.
이것이 한 번의 동작으로 발생하는 전체 현상이며, 왜 이것이 흥미로운지 정확히 설명할 가치가 있습니다.
이것은 프롬프트 주입(prompt injection)도 아니고, 주제 변경(topic change)도 아닙니다
이와 관련하여 네 가지 연구 분야가 존재하지만, 그 어느 것도 이 현상을 다루고 있지 않습니다.
**작업 프롬프트에 삽입된 무관한 맥락(Irrelevant context injected into a task prompt)**은 매우 잘 연구되었습니다. GSM-IC와 그 후속 연구인 GSM-DC가 있습니다. 하지만 이는 산술 계산에 초점을 맞춘 단일 턴(single-turn)이며, 노이즈가 우발적인 실수라기보다는 문제 진술의 일부인 경우입니다.
**고의적인 주제 변경(Deliberate topic switches)**은 Beyond Continuity에서 다루고 있으며, 이는 모델이 사용자가 화제를 전환했는지(pivoted)를 감지하는지를 측정합니다. 그 결론은 매우 유용합니다. 모델들은 명시적인 신호가 있음에도 불구하고 오래된 맥락을 끌고 나갑니다. 하지만 여기서는 사용자가 주제를 바꾸려고 의도한 경우입니다.
다중 턴(multi-turn)에서 길을 잃는 현상은 Laban et al.에 있습니다: 평균 39%의 하락률을 보였으며, 모델이 잘못된 방향으로 한번 빠지면 회복하지 못한다는 기억할 만한 발견도 있었습니다. 여기에서의 실패는 단순히 붙여넣기 실수(stray paste)가 아니라, 명세 부족(under-specification)에 기인합니다.
**이전 내용을 무시하라는 지침(Instructions to ignore previous content)**은 거의 항상 적대적으로 구성됩니다 — Nevermind, 지침적 방해(instructional distraction), 문맥을 무시하는 공격(context-ignoring attacks) 등이 있습니다.
우발적인 붙여넣기(accidental paste)는 이들 중 어느 것도 아닙니다. 그 정의적인 속성은 모호하다는 것입니다. 저 텍스트 블록은 세 가지 다른 것이 될 수 있으며, 모델은 그것들을 구별할 방법이 없습니다:
_읽기는 모델이 피할 수 없는 선택입니다. 제가 읽은 24개의 대화에서, 그것은 단 한 번도
어떤 답변도 '이것이 이 대화에 적합했나요?'와 같은 내용을 담고 있지 않았습니다. 제가 테스트를 진행하기 전에 예상했던 두 가지 행동, 즉 이를 아마도 오류로 표시하거나 주제를 이어가기 위해 조용히 무시하는 행동은 단 한 번도 나타나지 않았습니다.
대신 저는 여섯 가지 행동을 얻었고, 변화의 축은 감지 여부가 아닙니다. 모델이 얼마나 많은 요청받지 않은 작업을 수행하느냐입니다.
24개의 답변 중 19개는 아무것도 변경되었다는 사실을 인정하지 않습니다. 흥미로운 소수 그룹은 작으며, 좋은 행동이 존재하는 곳입니다.
그저 작업을 수행합니다
24개 중 14개가 붙여넣어진 내용을 새로운 요청으로 간주하고 답변을 제공합니다. 발코니 채소 정원에 대한 대화에 Rust 패닉(panic)이 발생했고, 답변은 다음과 같이 시작됩니다:
문제는 키 조회에서
unwrap()을 사용한 것입니다. 어떤 필드가 누락되었는지 알려주는 상황별 오류로 대체하세요.
전기 요금 청구서에 대한 대화에 호박 카레 레시피가 나타났고, 기름 대신 코코넛 캔 상단에 있는 진한 크림으로 커리 페이스트를 볶는 방법에 대해 정말 좋은 답변을 얻었습니다. 청구서에 관련된 단어는 하나도 없었습니다.
무엇을 할지 묻지만, 그것이 속하는지는 절대 묻지 않습니다
다섯 개의 답변은 명확화를 요청합니다. 이는 좋은 결과처럼 들리지만, 그들이 무엇을 묻는지 읽어보면 다릅니다:
이것을 더 세련된 릴리스 노트로 만들까요, 영어로 번역할까요, 아니면 출시 메시지를 작성해 드릴까요?
이 질문은 출력 형식에 관한 것입니다. 파싱 라이브러리의 변경 로그가 카메라 구매에 대한 대화에 속하는지 여부를 의심하는 내용은 전혀 없습니다. 이 다섯 가지 모두 게이트웨이 모델에서 나왔으며, Opus는 단 한 번도 이런 행동을 보인 적이 없습니다.
알아차리고, 그럼에도 불구하고 따릅니다
두 개의 답변은 내용의 전환(jump)을 언급합니다. 그중 하나가 전체 테스트에서 가장 좋은 행동입니다:
당신이 주제를 바꾼 것 같아 Prometheus 경고 규칙을 붙여넣으셨네요. 혹시 확인하고 싶으시면 빠르게 검토해 드릴게요. 그리고 마지막에는 제가 빚진 대로 정원 이야기로 돌아올게요.
그것은 알아차리고, 도움을 주고, 그리고 돌아오겠다고 약속합니다. 그것은 여전히 붙여넣기가 실수였다는 사실을 받아들이지 않지만 — 이전 대화를 자신이 갚아야 할 빚처럼 다루는 유일한 답변입니다.
만들어낸 연결고리 (The invented bridge)
한 답변은 그럴듯한 연결고리를 만들고 그것을 따라갑니다. 주제는 10K(10km)를 위한 훈련이었는데, 붙여넣기는 야간 근무 제빵사 직업 광고였습니다:
첫 번째 옵션이 혹시 맞다면 참고로 말씀드립니다. 그것은 우리가 이야기하던 것과 연결되는 부분입니다: 새벽 2시부터 오전 10시까지의 교대 근무가 4월에 10K를 준비하는 것을 막지는 않지만, 계획을 재정비하도록 강요합니다.
조언은 좋습니다. 연결고리는 만들어낸 것입니다. 두 가지 모두 동시에 사실이며, 이것이 바로 이 실패 모드를 값비싸게 만드는 지점입니다: 아무것도 i
24개의 답변 중 단 하나만이 제가 원했던 내용이었습니다. 주제는 전기 요금 청구서였고, 붙여넣은 내용은 엘리베이터 수리에 관한 입주민 협회 공지였습니다:
이 텍스트는 전기 요금 청구서가 아니라 입주민 협회의 공지입니다. […]. 만약 이것을 건물 월별 요금과 함께 받았다면, 그 €87이 왜 해당 요금이 더 높은지 설명할 수는 있지만, 실수로 포함된 것이 아니라면 귀하의 전기 요금에는 영향을 미치지 않습니다.
이는 불일치를 지적하고, 실제로 관계가 있을 수 있는지 명시적으로 고려한 다음, 이유와 함께 이를 일축합니다. 이것이 바로 꾸며낸 다리(invented bridge)와 정반대입니다. 즉, 고려되었으나 거부된 연결고리인 셈이죠. 이는 천장(ceiling)이 존재한다는 것을 증명하기 때문에 중요합니다. 이것은 역량 문제가 아닙니다.
가족별 분할, 각 모델당 8개 대화
여섯 가지 행동 양식이 세 가지 모델에 고르게 분포되어 있지는 않으며, 그 대비가 충분히 뚜렷하여 숫자가 작음에도 불구하고 기록할 가치가 있습니다:
| 작업을 수행하는가 | 형식에 대해 질문하는가 | 전환을 언급하는가 | 기타 | |
|---|---|---|---|---|
| GPT-5.6 sol | 5 | 3 | 0 | — |
| ... | ||||
| 모든 |
24개의 대화 내용이 각각 하나씩 붙여넣기(paste)되었고, 사전 등록 절차는 없었으며, 설계 자체가 주제와 길이를 의도적으로 순환시키기 때문에 어떤 것도 통계적 검정력으로 측정할 수 없습니다. 이는 관찰일 뿐, 측정은 아닙니다. 저는 탐지율을 말씀드릴 수 없고, 붙여넣기 내용과 대화 내용 간의 유사성이 무엇인가를 변화시키는지에 대해서도 말씀드릴 수 없습니다. 이 24개 사례에서 인정(acknowledgements) 값은 각각 0.23, 0.26, 0.26, 0.37 코사인 값을 기록했으며, 침묵하는 경우들은 전체 범위에 걸쳐 분포합니다.
다음 기사에서는 적절한 그리드(grid)를 사용하여 셀당 충분한 대화 내용을 가지고 비율에 대해 논할 것입니다. 만약 이 내용과 모순된다면, 그곳에서 말씀드리겠습니다.
다음에 이런 일이 발생했을 때 할 일
모든 것을 읽어보니, 실질적인 조언은 모델 자체보다는 모델로부터 무엇을 기대해야 하는지에 관한 것입니다:
- 진지하게 받아들여질 것이라고 가정하세요. 기본적으로는
이것은 세 개의 아티클 중 첫 번째입니다. 다음 글에서는 커브를 측정하고, 세 번째 글에서는 복구에 관한 내용입니다. 관련 자료: Your Agent Doesn't Know What's Internal — 컨텍스트가 반대 방향으로 흐르는 것, 즉 내부 자료가 속해서는 안 될 곳으로 새어 나가는 것에 대한 내용입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기
