AI 분야에서 새로운 패러다임이 등장하고 있다. 그동안 우리가 집중했던 '프롬프트 엔지니어링'에서 한 단계 더 나아간 '컨텍스트 엔지니어링'이라는 개념이다. Shopify의 CEO인 토비 뤼트케(Tobi Lutke)는 이를 "LLM이 작업을 그럴듯하게 해결할 수 있도록 모든 맥락을 제공하는 기술"이라고 정의했는데, 이는 정말 정확한 표현이다.
에이전트 시대의 새로운 도전
AI 에이전트가 부상하면서 '제한된 작업 메모리'에 어떤 정보를 로드하느냐가 더욱 중요해졌다. 실제로 에이전트의 성공과 실패를 가르는 가장 큰 요인은 제공되는 컨텍스트의 품질이다. 흥미롭게도 대부분의 에이전트 실패는 더 이상 모델 자체의 한계가 아니라 컨텍스트의 부족에서 비롯된다.
이는 AI 기술의 성숙도를 보여주는 중요한 신호다. 모델의 성능이 충분히 발전한 지금, 병목지점은 모델 자체가 아니라 모델에게 얼마나 적절한 정보를 제공하느냐로 옮겨간 것이다.
컨텍스트란 무엇인가?
컨텍스트 엔지니어링을 이해하려면 먼저 '컨텍스트'의 정의를 확장해야 한다. 이는 단순히 LLM에 보내는 하나의 프롬프트가 아니다. 모델이 응답을 생성하기 전에 보는 모든 것이 컨텍스트다.
시스템 프롬프트/지시사항: 대화 중 모델의 행동을 정의하는 초기 지시사항으로, 예시와 규칙들을 포함한다.
사용자 프롬프트: 사용자로부터의 즉각적인 작업이나 질문이다.
상태/히스토리(단기 메모리): 현재 대화의 맥락으로, 지금까지의 사용자와 모델 응답을 포함한다.
장기 메모리: 여러 대화에 걸쳐 수집된 지속적인 지식 베이스로, 사용자 선호도, 과거 프로젝트 요약, 미래 사용을 위해 기억해야 할 사실들을 담고 있다.
검색된 정보(RAG): 특정 질문에 답하기 위한 외부의 최신 지식, 문서, 데이터베이스, API로부터의 관련 정보다.
사용 가능한 도구들: 호출할 수 있는 모든 함수나 내장 도구들의 정의(예: 재고_확인, 이메일_전송)다.
구조화된 출력: 모델 응답의 형식 정의로, 예를 들어 JSON 객체 형태다.
값싼 데모에서 마법 같은 제품으로
진정으로 효과적인 AI 에이전트를 구축하는 비밀은 작성하는 코드의 복잡성과는 거의 관련이 없고, 제공하는 컨텍스트의 품질과 모든 관련이 있다.
간단한 이메일을 바탕으로 미팅을 스케줄링하라는 요청을 받은 AI 어시스턴트를 상상해보자:
"안녕, 내일 간단한 싱크업 시간 있는지 확인해줘."
값싼 데모 에이전트는 빈약한 컨텍스트를 가지고 있다. 사용자의 요청만 보고 다른 것은 아무것도 모른다. 코드는 완벽하게 작동할 수 있지만(LLM을 호출하고 응답을 받는다), 출력은 도움이 되지 않고 로봇 같다:
"메시지 감사합니다. 내일은 괜찮습니다. 몇 시를 염두에 두고 계신지 여쭤봐도 될까요?"
마법 같은 에이전트는 풍부한 컨텍스트로 구동된다. 코드의 주요 역할은 어떻게 응답할지 알아내는 것이 아니라, LLM이 목표를 달성하는 데 필요한 정보를 수집하는 것이다. LLM을 호출하기 전에 컨텍스트를 확장하여 다음을 포함한다:
- 캘린더 정보(완전히 예약되어 있음을 보여줌)
- 이 사람과의 과거 이메일(적절한 비공식적 톤을 결정하기 위해)
- 연락처 목록(주요 파트너로 식별하기 위해)
- 초대장_보내기나 이메일_보내기 도구들
그러면 다음과 같은 응답을 생성할 수 있다:
"안녕 짐! 내일은 하루 종일 빡빡해서, 연달아 미팅이 있어. 목요일 오전에 시간 되면 어때? 초대장 보냈으니 확인해봐."
마법은 더 똑똑한 모델이나 더 영리한 알고리즘에 있지 않다. 올바른 작업에 올바른 컨텍스트를 제공하는 것에 있다. 이것이 컨텍스트 엔지니어링이 중요한 이유다.
프롬프트에서 컨텍스트 엔지니어링으로
'프롬프트 엔지니어링'이 하나의 텍스트 문자열에서 완벽한 지시사항 세트를 만드는 데 초점을 맞춘다면, 컨텍스트 엔지니어링은 훨씬 더 광범위하다.
컨텍스트 엔지니어링은 LLM이 작업을 수행하는 데 필요한 모든 것을 제공하기 위해, 올바른 정보와 도구를 올바른 형식으로 올바른 시간에 제공하는 동적 시스템을 설계하고 구축하는 학문이다.
컨텍스트 엔지니어링의 특징들을 살펴보면:
문자열이 아닌 시스템: 컨텍스트는 단순한 정적 프롬프트 템플릿이 아니다. 메인 LLM 호출 전에 실행되는 시스템의 출력이다.
동적: 즉석에서 생성되고 즉각적인 작업에 맞춤화된다. 한 요청에서는 캘린더 데이터일 수 있고, 다른 요청에서는 이메일이나 웹 검색일 수 있다.
올바른 시간에 올바른 정보와 도구: 핵심 작업은 모델이 중요한 세부사항을 놓치지 않도록 하는 것이다("쓰레기가 들어가면 쓰레기가 나온다"). 이는 필요하고 도움이 될 때만 지식(정보)과 능력(도구) 모두를 제공한다는 의미다.
형식이 중요한 곳: 정보를 어떻게 제시하느냐가 중요하다. 간결한 요약이 원시 데이터 덤프보다 낫다. 명확한 도구 스키마가 모호한 지시사항보다 낫다.
미래를 위한 새로운 접근법
강력하고 신뢰할 수 있는 AI 에이전트를 구축하는 것은 마법의 프롬프트를 찾거나 모델 업데이트를 기다리는 것과는 점점 관련이 없어지고 있다. 대신 컨텍스트 엔지니어링과 올바른 정보와 도구를 올바른 형식으로 올바른 시간에 제공하는 것에 관한 것이다.
이는 비즈니스 사용 사례를 이해하고, 출력을 정의하며, LLM이 "작업을 수행"할 수 있도록 모든 필요한 정보를 구조화하는 것을 포함하는 다기능적 도전이다.
컨텍스트 엔지니어링의 등장은 AI 기술의 성숙함을 보여주는 동시에, 우리가 AI와 상호작용하는 방식의 근본적인 변화를 의미한다. 단순히 "어떻게 물어볼까"에서 "어떤 맥락을 제공할까"로 사고의 전환이 필요한 시점이다. 이러한 변화를 이해하고 적응하는 개발자와 조직이 AI 시대의 진정한 승자가 될 것이다.