Docs | Src |   A-  |  A+   | -/-

Metadata

Context Engineering: 프롬프트에 엔지니어링 규율을 도입하다--1부

다음 글은 애디 오스마니(Addy Osmani)의 원문 「 Context Engineering: Bringing Engineering Discipline to Parts 3부작 가운데 1부이다.*

컨텍스트 엔지니어링(Context Engineering) 팁:

AI에서 최상의 결과를 얻으려면 명확하고 구체적인 컨텍스트(context)를 제공해야 합니다. AI 출력 품질은 입력 품질에 직접 좌우됩니다.

AI 프롬프트를 개선하는 방법:

프롬프트 엔지니어링(prompt engineering)이 질문을 영리하게 표현하는 일에 가까웠다면, 컨텍스트 엔지니어링(context engineering)은 AI가 문제를 안정적으로 해결할 수 있도록 전체 정보 환경을 구축하는 일이다.

“프롬프트 엔지니어링(prompt engineering)”은 더 나은 출력을 얻기 위해 입력을 어떻게 표현하느냐의 기술이라는 뜻으로 유행어가 되었다. 이 개념은 우리에게 영리한 한 줄 문장으로 “산문으로 프로그래밍(program in prose)”하는 법을 가르쳐 주었다. 하지만 AI 커뮤니티 밖에서는 이를 그저 챗봇에 그럴듯한 요청을 입력하는 일쯤으로 받아들이는 경우가 많았다. 이 용어는 LLM을 효과적으로 활용할 때 필요한 실제 정교함을 끝내 온전히 담아내지 못했다.

애플리케이션이 점점 복잡해지자, 단일 프롬프트에만 초점을 맞추는 접근의 한계가 분명해졌다. 어떤 분석에서는 이렇게 재치 있게 말했다. 프롬프트 엔지니어링이 걸었기에 컨텍스트 엔지니어링이 뛸 수 있게 됐다. 다시 말해, 기발한 단발성 프롬프트는 데모에서 사람들을 놀라게 할 수 있었지만, 신뢰할 수 있고 산업 현장에서 쓸 만한 수준의 LLM 시스템을 만들려면 훨씬 더 포괄적인 접근이 필요했다.

이런 인식 때문에 우리 분야는 AI에서 훌륭한 결과를 끌어내는 작업을 설명하는 더 적절한 표현으로 “컨텍스트 엔지니어링(context engineering)”에 점차 뜻을 모으고 있다. 컨텍스트 엔지니어링이란 LLM이 보는 전체 컨텍스트 윈도(context window)를 구성하는 일이다. 짧은 지시문 하나만이 아니라, 작업에 필요한 모든 배경 정보, 예시, 가이드를 함께 제공하는 것이다.

이 표현은 2025년 중반, 쇼피파이(Shopify) CEO 토비 뤼트케(Tobi Lütke)와 AI 리더 안드레이 카파시(Andrej Karpathy) 같은 개발자들에 의해 널리 퍼졌다.

“저는 ‘프롬프트 엔지니어링’보다 ‘컨텍스트 엔지니어링’이라는 표현이 정말 마음에 듭니다.” 토비는 이렇게 썼다. “이 용어가 핵심 역량을 더 잘 설명해 주기 때문입니다. LLM이 그럴듯하게 문제를 풀 수 있도록 작업에 필요한 모든 컨텍스트를 제공하는 기술이죠.” 카파시도 강하게 동의했다. 그는 “사람들은 프롬프트를 짧은 지시문으로 연상하지만, 진지한 모든 LLM 애플리케이션에서 컨텍스트 엔지니어링 이란 각 단계에 꼭 맞는 정보를 컨텍스트 윈도에 채워 넣는 섬세한 예술이자 과학입니다.”라고 말했다.

즉, 현실 세계의 LLM 애플리케이션은 운이나 원샷(one-shot) 프롬프트로 성공하지 않는다. 모델의 질의 주위에 컨텍스트를 세심하게 조립하기 때문에 성공한다.

이 용어 변화는 접근 방식의 진화를 보여 준다. 프롬프트 엔지니어링이 마법 같은 한 문장을 만들어 내는 일이었다면, 컨텍스트 엔지니어링은 AI를 위한 전체 각본을 쓰는 일에 가깝다. 이것은 구조적 전환이다. 프롬프트 엔지니어링은 좋은 프롬프트를 만드는 순간 끝나지만, 컨텍스트 엔지니어링은 기억, 지식, 도구, 데이터를 체계적으로 끌어오는 전체 시스템을 설계하는 데서 시작한다.

카파시의 설명처럼, 이를 잘 수행하려면 명확한 작업 지시와 설명은 물론, 퓨샷(few-shot) 예시, 검색된 사실(RAG), 경우에 따라 멀티모달(multimodal) 데이터, 관련 도구, 상태 이력까지 모두 다뤄야 한다. 그리고 이 모든 것을 제한된 윈도 안에 신중하게 압축해 넣어야 한다. 컨텍스트가 너무 적거나(또는 종류가 맞지 않으면) 모델은 최적으로 수행하는 데 필요한 정보를 얻지 못한다. 반대로 관련 없는 컨텍스트가 너무 많으면 토큰만 낭비하고 성능이 오히려 떨어질 수 있다. 그 균형점을 찾는 일은 결코 쉽지 않다. 카파시가 이를 과학이자 예술이라고 부르는 것도 무리가 아니다.

컨텍스트 엔지니어링(context engineering)이라는 표현이 퍼지는 이유는, 우리가 실제로 LLM 솔루션을 만들 때 하는 일을 직관적으로 잘 담아내기 때문이다. “프롬프트(prompt)”는 짧은 질의 하나처럼 들리지만, “컨텍스트(context)”는 AI를 위해 준비하는 더 풍부한 정보 상태를 떠올리게 한다.

의미상의 차이를 넘어, 왜 이런 전환이 중요할까? 이는 AI 개발을 바라보는 우리의 사고방식이 성숙해졌다는 신호이기 때문이다. 우리는 이제 프로덕션 환경의 생성형 AI는 단 하나의 마법 주문을 거는 일보다, AI를 위한 전체 환경을 엔지니어링하는 일에 더 가깝다는 점을 배웠다. 단발성 프롬프트로도 멋진 데모는 만들 수 있다. 하지만 견고한 솔루션을 만들려면 각 단계에서 모델이 무엇을 “알고”, 무엇을 “보는지”를 통제해야 한다. 그러려면 관련 문서를 검색해 오고, 대화 이력을 요약하고, 구조화된 데이터를 주입하고, 도구를 제공해야 하는 경우가 많다. 한마디로, 모델이 어둠 속에서 추측하지 않게 만드는 데 필요한 것은 무엇이든 해야 한다. 그래서 우리는 더 이상 프롬프트를 AI가 잘 해석해 주길 바라는 일회성 지시문으로 보지 않는다. 대신 AI가 성공하도록 돕는 모든 정보와 상호작용의 조합, 즉 컨텍스트 파이프라인(context pipelines)으로 생각한다.

프롬프트 엔지니어링 대 컨텍스트 엔지니어링

프롬프트 엔지니어링 대 컨텍스트 엔지니어링

이를 더 분명히 보려면 관점 차이를 생각해 보면 된다. 프롬프트 엔지니어링은 종종 영리한 문구를 짜내는 연습이었다. “이렇게 표현하면 LLM이 내가 원하는 대로 해 주지 않을까?” 하는 식이다. 반면 컨텍스트 엔지니어링은 전통적인 엔지니어링에 더 가깝다. 이 시스템이 작업을 수행하려면 어떤 입력(데이터, 예시, 상태)이 필요한가? 그것들을 어떻게 가져와 주입할 것인가? 어떤 형식으로 넣을 것인가? 어느 시점에 넣을 것인가? 우리는 사실상 단일 프롬프트에서 성능을 억지로 끌어내는 단계에서, LLM 기반 시스템 자체를 설계하는 단계로 넘어왔다.

컨텍스트 엔지니어링이란 정확히 무엇인가?

컨텍스트 엔지니어링이란 AI가 성공하는 데 필요한 모든 것, 즉 지시문, 데이터, 예시, 도구, 이력을 실행 시점에 모델 입력 컨텍스트 안에 동적으로 담아 주는 일이다.

유용한 사고 모델(mental model)은 안드레이 카파시와 다른 이들이 제안한 것으로, LLM을 CPU에, 컨텍스트 윈도를 RAM 또는 작업 메모리에 비유하는 것이다. 엔지니어의 역할은 운영체제와 비슷하다. 즉, 해당 작업에 꼭 맞는 코드와 데이터로 작업 메모리를 채워 넣는 것이다. 실제로 이 컨텍스트는 다양한 출처에서 온다. 사용자의 질의, 시스템 지시문, 데이터베이스나 문서에서 검색한 지식, 다른 도구의 출력, 이전 상호작용 요약 등이 모두 포함될 수 있다. 컨텍스트 엔지니어링은 이런 조각들을 모델이 최종적으로 보게 되는 프롬프트 안에 오케스트레이션하는 일이다. 정적인 프롬프트가 아니라, 실행 시점에 정보를 동적으로 조립하는 과정인 셈이다.

그림: 여러 정보 출처가 LLM의 컨텍스트 윈도(그의 “작업 메모리”) 안으로 조합된다. 컨텍스트 엔지니어의 목표는 그 윈도를 올바른 정보로, 올바른 형식으로 채워 모델이 작업을 효과적으로 수행하게 만드는 것이다.

그림: 여러 정보 출처가 LLM의 컨텍스트 윈도(그의 “작업 메모리”) 안으로 조합된다. 컨텍스트 엔지니어의 목표는 그 윈도를 올바른 정보로, 올바른 형식으로 채워 모델이 작업을 효과적으로 수행하게 만드는 것이다.

이 개념을 조금 더 풀어 보자.

무엇보다도 컨텍스트 엔지니어링은 AI가 성공하도록 판을 깔아 주는 일이다.

LLM은 강력하지만 초능력자는 아니다. 입력으로 받은 내용과 학습 과정에서 익힌 내용을 바탕으로만 답할 수 있다. 모델이 실패하거나 환각(hallucination)을 일으킨다면, 그 근본 원인은 대개 우리가 올바른 컨텍스트를 주지 않았거나, 주더라도 형편없이 구조화된 형태로 줬기 때문이다. LLM “에이전트”가 엉뚱하게 행동할 때는 대개 “적절한 컨텍스트, 지시, 도구가 모델에 제대로 전달되지 않았기” 때문이다. 잘못 넣으면 잘못 나온다. 반대로 관련 정보와 명확한 가이드를 모두 제공하면 모델 성능은 극적으로 좋아진다.

고품질 컨텍스트 공급하기: 실용 팁

그렇다면 실제로 AI에 필요한 것을 빠짐없이 주려면 어떻게 해야 할까? 다음은 AI 코딩 어시스턴트와 기타 LLM 애플리케이션을 만들면서 내가 유용하다고 느낀 실용적인 팁들이다.

황금률을 기억하라. LLM은 강력하지만 마음을 읽지는 못한다. 출력 품질은 제공한 컨텍스트의 품질과 관련성에 정비례한다. 컨텍스트가 너무 적거나(또는 필요한 조각이 빠지면) AI는 빈틈을 추측으로 메우려 들고, 그 추측은 종종 틀린다. 관련 없거나 잡음이 많은 컨텍스트도 마찬가지로 해롭다. 모델을 엉뚱한 방향으로 이끌 수 있다. 그러니 컨텍스트 엔지니어의 일은 모델에 꼭 필요한 것만, 그리고 불필요한 것은 빼고 공급하는 것이다.