Context Engineering 개요 — 프롬프트 너머의 컨텍스트 설계
Context Engineering 개요
'좋은 프롬프트'를 버리면 문제가 풀리던 시대가 있었어요. 하지만 에이전트가 여러 턴을 돌며 점점 더 많은 정보를 만들면서, LLM이 보는 '전체 컨텍스트'를 어떻게 구성하느냐가 성패를 가르게 됐어요. 이것이 컨텍스트 엔지니어링이에요.
프롬프트 엔지니어링이 아니라면?
- 프롬프트 엔지니어링: 지시문(특히 시스템 프롬프트)을 잘 쓰는 방법.
- 컨텍스트 엔지니어링: 시스템 지시·도구·MCP·외부 데이터·메시지 이력을 모두 아우르는 '컨텍스트 상태'를 설계·유지하는 것.
루프를 도는 에이전트는 매 턴마다 더 많은 데이터를 만들고, 그중 무엇을 한정된 컨텍스트 윈도우에 넣을지 매번 다듬어야 해요. 여기서 핵심 원칙은 단순해요. 가장 작은 고신호 토큰 집합이 원하는 결과를 최대화하도록 만드는 것.
왜 컨텍스트가 유한 자원인가
모델이 컨텍스트가 길어질수록 정보를 정확히 되살리는 능력이 떨어지는 현상을 컨텍스트 로트(context rot) 라고 불러요. 트랜스포머 구조상 토큰 수 n에 대해 n² 개의 쌍별 관계가 생기면서, 긴 컨텍스트에서는 '주의력 예산(attention budget)'이 분산되기 때문이에요. 따라서 컨텍스트는 한계효용이 체감하는 유한 자원으로 다뤄야 해요.
시스템 프롬프트의 '고도(altitude)'
시스템 프롬프트는 너무 장황하고 취약하게(하드코딩) 짜지도, 너무 모호하게 두지도 않아요. 구체적이되 유연한, '적정 고도'를 찾아야 해요. XML 태그나 마크다운 헤더로 섹션을 나누고, 최소 정보로 시작해 실패 케이스를 보며 예제를 추가하는 방식이 권장돼요.