안녕하세요, 여러분! 신입 프로그래머였을 때, 저는 AI 모델에 "재미있는 말 해줘"라고 입력하고 그 반응에 일희일비했습니다. 하지만 지금, AI와의 대화는 단순한 '놀이'에서 '본격적인 개발 방법론'으로 진화하고 있습니다.
Vibe Coding이 유행한 후, 이번에는 Andrej Karpathy가 새로운 버즈워드를 만들어냈습니다—바로 "Context Engineering(컨텍스트 엔지니어링)"입니다.
한국어로는 "컨텍스트 엔지니어링"이라고 불리며, 이것이 지금 AI 개발자들 사이에서 뜨거운 주목을 받고 있습니다. Karpathy는 주저 없이 이렇게 말했습니다:
"컨텍스트 엔지니어링은 컨텍스트 윈도우를 정교하게 설계하는 예술과 과학이다"
Karpathy는 AI 분야의 거장으로 알려져 있으며, 개발자의 직관에 와닿는 언어로 복잡한 기술 트렌드를 정의하는 데 능숙한 인물입니다. "Software 2.0", "Software 3.0", "Vibe Coding", 그리고 최근 제안한 "Bacterial Programming(박테리아 프로그래밍)" 등, 그가 제안하는 개념은 거의 예외 없이 업계에서 화제가 됩니다.
이에 대해 Karpathy 자신은:
"하하, 새로운 용어를 발명하는 것이 아니야. 단지, 모두가 '프롬프트'라는 개념을 너무 단순화해서 그 복잡성을 과소평가하고 있다고 생각했을 뿐이야"
라고 답했습니다.
사실, "컨텍스트 엔지니어링"은 완전히 새로운 개념이 아닙니다. 2025년 AI Agent(에이전트) 붐과 함께 업계에서 점차 형성되어 온 컨센서스입니다.
제가 이해하기로는, 이것은 아직 '유행하는 용어'이면서도 '정의가 모호한' 개념입니다. 하지만, 앞으로의 AI 개발에서 피할 수 없는 중요한 기술이 될 것임은 분명합니다.
"프롬프트"라는 단어를 들으면, 많은 사람들은 ChatGPT에 "양자역학을 설명해줘"와 같은 단순한 지시를 내리는 것을 떠올릴 것입니다. 조금 더 복잡한 프롬프트라도, 작업 설명을 추가하거나, 예시를 보여주거나, 출력 규칙을 정의하는 등, 기본적으로는 "자신의 요구를 최대한 명확하게 전달하는 것"이 핵심입니다.
하지만, 본격적인 애플리케이션을 개발할 때는 단순한 프롬프트 하나로는 충분하지 않습니다. 대규모 언어 모델(LLM)에 복잡하고 커스터마이즈된 작업을 완료시키려면, 컨텍스트(문맥·맥락)를 정교하게 구축해야 합니다.
간단히 말하면:
"프롬프트 엔지니어링"은 사용자를 위한 것, "컨텍스트 엔지니어링"은 개발자를 위한 것입니다.
"이름만 바꾼 것 아닌가"라고 생각하는 사람도 있을 수 있지만, 아닙니다, 이름은 매우 중요합니다. 왜냐하면, 언어가 사고를 형성하기 때문입니다.
Shopify의 CEO인 Tobi Lutke도 "정명(正名)"의 입장에 서서, "컨텍스트 엔지니어링"이 "프롬프트 엔지니어링"보다 우수한 개념이라고 생각하며, 작업에는 모든 배경 정보를 제공해야 한다고 주장합니다.
최근, Google의 장문 컨텍스트 사전 학습 공동 책임자인 Nikolay Savinov(니콜라이 사비노프)가 한 블로그 인터뷰에서 에이전트(Agent)와 컨텍스트(Context) 사이의 깊은 공생 관계에 대해 이야기했습니다. 이는 매우 시사하는 바가 큰 내용이었습니다.
사비노프에 따르면, Agent는 "이중 역할"을 담당하고 있다고 합니다:
한편으로, Agent는 컨텍스트의 소비자입니다. 예를 들어, "5일간의 서울 여행 계획"이라는 복잡한 작업을 수행하는 Agent는 "항공권은 예약 완료", "호텔 가격 비교 중", "아직 일정을 완성해야 함" 등의 상태 정보를 지속적으로 기억해야 합니다. 긴 컨텍스트 지원이 없다면, 질문할 때마다 기억을 잃고, 일관된 작업 흐름을 형성할 수 없습니다. 컨텍스트는 Agent에게 필수적인 "메모리 하드 드라이브"입니다.
다른 한편으로, Agent는 컨텍스트의 창조자이기도 합니다. 현실 세계에서는 사용자가 모든 배경 정보(예산, 시간 선호도, 과거 검색 기록, 지리적 선호도 등)를 수동으로 패키징하여 Agent에게 제공하지 않습니다. 여기서 Agent의 "도구 사용 능력"이 매우 중요해집니다. Agent는 검색, 캘린더, 여행 API 등의 도구를 적극적으로 호출하여 원시 정보를 획득하고, 필터링, 정제, 구조화 처리를 통해 이러한 원재료를 고품질 컨텍스트로 동적으로 조립하여 대규모 언어 모델에 공급합니다.
즉, Agent는 컨텍스트에 의존하여 "살아가는" 동시에, 도구를 통해 적극적으로 컨텍스트를 구축하고, 이를 통해 모델을 더 "똑똑하게" 만듭니다. 이것이 바로 "컨텍스트 엔지니어링"이 과학이 되는 근본적인 이유입니다.
단순한 프롬프트 작성이나 데이터 연결이 아니라, 작업 요구사항의 동적 감지, 정보 구조의 조직화, 토큰 배치의 제어, 입출력의 균형에 관한 완전한 방법론인 것입니다.
더 이해하기 쉽게 말하면, 컨텍스트 엔지니어링의 정의는 이렇습니다:
그것은 동적 시스템을 설계·구축하는 학문이며, 그 유일한 목표는: 적절한 타이밍에, 적절한 형식으로, 작업 완료에 필요한 모든 정보와 도구를 대규모 언어 모델에 정확하게 "공급"하는 것입니다.
Karpathy에 따르면, 컨텍스트 설계에는 다음 요소가 포함되어야 합니다:
고려가 너무 적으면 모델은 작업을 이해할 수 없습니다. 너무 많거나 무관하면 비용이 증가하고 성능이 저하됩니다. 이는 과학적인 기술 작업입니다.
Google DeepMind의 선임 AI 관계 엔지니어인 Philipp Schmid(필립 슈미트)도 최신 블로그에서 컨텍스트 엔지니어링을 여러 구성 모듈로 분해하고 있습니다:
또한, 컨텍스트 엔지니어링의 4가지 주요 특성을 제시합니다:
동적 시스템이며, 정적인 문자열이 아닙니다. 컨텍스트는 "템플릿"으로 고정되는 것이 아니라, LLM을 호출하기 전에 Agent가 실시간 요구에 기반하여 동적으로 조립한 결과입니다. 그것은 생명력을 가지고 있습니다.
필요에 따라 생성되며, 불변이 아닙니다. 어떤 요청에서는 컨텍스트가 당신의 일정일 수 있습니다. 다음 요청에서는 최신 웹 검색 결과나 중요한 이메일이 필요할 수 있습니다. 그것은 "천인천색, 천시천색"입니다.
정보와 도구를 정확히 공급하며, 정보의 홍수가 아닙니다. 핵심은 "딱 알맞은" 것입니다. "쓰레기 입력, 쓰레기 출력"을 피합니다. 작업이 정말로 필요로 하는 정보와 능력만 제공하고, 그 이상은 간섭이 됩니다.
형식을 매우 중시하며, "원시" 데이터가 아닙니다. 모델에 일련의 가공되지 않은 로그를 던지는 것보다, 정제된 요약을 제공하는 것이 좋습니다. 명확한 구조를 가진 도구 호출 지시는 모호한 자연어 설명보다 훨씬 우수합니다.
실제 LLM 애플리케이션/Agent 개발 과정에서는 "컨텍스트를 정교하게 구축하는" 것뿐만 아니라, 많은 엔지니어링 문제도 처리해야 합니다:
이 전체 시스템은 이미 복잡하고 무거운 소프트웨어 시스템이 되었습니다. 컨텍스트 엔지니어링은 그 일부이지만, Agent의 성공을 좌우하는 핵심 중 하나이기도 합니다.
실제 개발 현장에서는 API 문서 관리도 컨텍스트 엔지니어링의 중요한 예입니다. 예를 들어, Apidog와 같은 도구는 API의 사양, 엔드포인트, 파라미터, 응답 예시 등의 정보를 구조화하여 관리하고, 개발자가 필요한 정보를 적절한 타이밍에 참조할 수 있게 합니다. 이는 "정보의 선별", "구조화", "적절한 타이밍에서의 제공"이라는 컨텍스트 엔지니어링의 원칙 그 자체입니다.
API 문서 작성에 고민하고 계신가요? Apidog은 컨텍스트 엔지니어링의 원칙을 도입한 직관적인 인터페이스로, API의 설계부터 테스트, 문서 작성까지를 원활하게 관리합니다. 복잡한 API 컨텍스트도 정리된 형태로 표현할 수 있어, 개발자와 사용자 모두에게 이해하기 쉬운 문서를 자동 생성합니다.
특히 여러 마이크로서비스가 연계되는 현대 시스템에서는 API 컨텍스트의 적절한 관리가 프로젝트의 성공을 좌우하는 경우도 적지 않습니다. 예를 들어, 한 프로젝트에서는 Apidog를 사용하여 API의 목업 데이터를 만들고, 프론트엔드와 백엔드 개발을 병행하여 진행함으로써 개발 기간을 30% 단축할 수 있었다는 사례도 있습니다. 이는 바로 "컨텍스트의 동적 생성"과 "정보의 적절한 공급"이라는 컨텍스트 엔지니어링의 원칙이 실천된 좋은 예라고 할 수 있습니다.
그것은 "정보를 선택하는", "구조를 만드는", "길이를 제어하는" 등의 원칙을 알고 있더라도, 실제 개발에서는 말로 표현할 수 없고, 공식화할 수 없는 많은 판단과 미세 조정이 필요하기 때문입니다.
예를 들어, LLM이 당신의 프롬프트를 어떻게 "보고 있는지"는 알 수 없습니다. 고정된 구문이나 인터페이스 문서는 없습니다. 당신이 의미적으로 거의 같다고 생각하는 두 버전의 입력문이라도, 최종적인 모델의 성능은 크게 다를 수 있습니다.
그래서 경험과 "모델과의 대화 직관"에 의존하여, 반복적으로 시도하고, 표현을 조정하고, 순서를 배치해야 합니다. 마치 까다로운 파트너를 다루는 것과 같습니다.
이것이 "프롬프트 센스"입니다. 왜 어떤 사람은 AI로 10배의 효율을 얻을 수 있고, 어떤 사람은 쓸모없다고 느끼는지, 그 차이는 여기에 있습니다.
그래서 앞으로 특히 우수한 제품을 만났을 때, "또 ChatGPT 래퍼 앱이네"라고 말하는 것은 조금 실례가 될 수 있습니다.
AI 개발 프레임워크 LangChain이 발표한 블로그에서는 4가지 핵심적인 구현 전략이 정리되어 있습니다:
AI도 "초안"이나 "일기"가 필요합니다.
복잡한 작업을 처리할 때, AI에게 중간 단계의 사고를 임시 "초안장"(Scratchpads)에 기록하게 하거나, 중요한 결론을 세션을 넘나드는 "장기 기억"(Memory) 모듈에 저장하게 합니다. 이를 통해 메인 대화 창을 깔끔하게 유지하면서, AI에게 지속적인 학습과 되돌아보는 능력을 갖게 할 수 있습니다.
양보다 질입니다.
AI가 작업에 직면했을 때, 지능적인 "디스패처"를 가동하여, 방대한 지식 베이스(문서, 도구, 기억)에서 RAG 등의 기술을 통해 현재 가장 관련성이 높은 정보를 정확히 선별하여 모델에 "공급"합니다. 이를 통해 정보 과다를 피하고, 모델이 핵심적인 문제에 집중할 수 있게 합니다.
컨텍스트 메모리에는 한계가 있고, 한 치의 땅도 금입니다.
대화 기록이나 검색 문서가 너무 길 경우, "단순화"를 배워야 합니다. 요약이나 가지치기 등의 전략을 통해 컨텍스트를 현명하게 "슬림화"하고, 중요한 정보를 잃지 않으면서, 가장 핵심적인 내용을 귀중한 컨텍스트 창 내에 남깁니다.
분할하여 통치하고, 복잡성을 단순화합니다. 이는 멀티에이전트(Multi-agent) 시스템의 진수입니다. 한 명의 "만능" Agent에게 모든 복잡성을 대응하게 하는 것보다, 큰 작업을 분해하고, 독립적인 최적화된 컨텍스트를 가진 여러 "전문" Agent에게 배포하여, 각자가 자신의 역할을 수행하고, 마지막에 성과를 집약하여 1+1>2의 효과를 실현합니다.
LangChain의 개발자 Drew Breunig(드류 브루닉)은 매우 중요한 관점을 제시했습니다:
대부분의 인텔리전트 에이전트의 실패는 더 이상 모델 자체의 실패가 아니라, 우리가 제공하는 "컨텍스트"에 문제가 있는 것입니다.
그는 이러한 문제를 4가지 전형적인 "병리학"으로 분류하고 있습니다:
흥미롭게도, Shopify에서는 자발적으로 AI를 사용하고, "AI에게 컨텍스트를 읽어들이게 하는" 능력이 직원의 기본적인 기대치가 되어가고 있으며, 더 나아가 성과 평가에도 포함되고 있습니다.
현재, 어떤 팀도 인원 증가를 신청하기 전에, 먼저 회사에 증명해야 합니다: 왜 이 작업은 "적절하게 엔지니어링된 컨텍스트"를 가진 AI 인텔리전트 에이전트에 의해 완료될 수 없는가?
강력하고 신뢰할 수 있는 AI 에이전트를 구축하는 것은 마법 같은 프롬프트나 모델 업데이트를 찾는 것이 아니게 되고 있습니다. 그것은 적절한 타이밍에, 적절한 형식으로, 적절한 정보와 도구를 제공하는 컨텍스트의 엔지니어링입니다.
이는 비즈니스 유스케이스를 이해하고, 출력을 정의하고, LLM이 "작업을 완수하기" 위한 모든 필요한 정보를 구조화하는, 분야 횡단적인 과제입니다. API 문서 관리 도구인 Apidog가 정보의 구조화와 적절한 제공을 실현하는 것처럼, AI 에이전트 개발에서도 정보의 구조화와 적절한 타이밍에서의 제공이 성공의 열쇠가 됩니다.
저 자신도 최근 프로젝트에서 컨텍스트 엔지니어링의 원칙을 적용해 보았는데, AI의 응답 품질과 일관성이 극적으로 향상되었습니다. 특히, 정보의 선별과 구조화에 시간을 투자함으로써, 이전에는 불가능하다고 생각했던 복잡한 작업도 AI에게 맡길 수 있게 되었습니다.
여러분은 "컨텍스트 엔지니어링"이 다음 큰 트렌드가 될 것이라고 생각하시나요? 아니면 과대평가된 개념이라고 생각하시나요? 댓글 섹션에서 여러분의 통찰을 꼭 공유해 주세요!