이 글은 누구를 위한 것인가
- GPT나 Claude 같은 AI를 업무에 쓰는데 기대만큼 결과가 안 나오는 분
- AI 서비스를 개발 중인 팀에서 성능 개선 방법을 찾고 있는 분
- 프롬프트 엔지니어링을 배웠는데 더 근본적인 방법이 궁금한 분
들어가며
"AI한테 더 잘 쓰는 방법 없어요?" 요즘 가장 많이 받는 질문 중 하나다.
2023~2024년 프롬프트 엔지니어링 붐이 있었다. "CoT(Chain of Thought)로 써라", "역할을 부여해라", "예시를 포함해라" 같은 기법들이 넘쳐났다. 이 기법들이 효과가 없는 건 아니다. 하지만 조금 써보면 한계가 느껴진다. 프롬프트를 아무리 잘 써도 AI가 모르는 정보는 여전히 모른다. 맥락이 없으면 AI는 틀린 추측을 한다.
2026년 현재 AI 엔지니어링 커뮤니티에서 주목받는 개념이 있다. **컨텍스트 엔지니어링(Context Engineering)**이다. Shopify CEO Tobi Lütke는 2025년에 "프롬프트 엔지니어링은 구식 용어가 됐다. 이제는 컨텍스트 엔지니어링이다"라고 했다. 무슨 뜻일까?
1. 프롬프트 엔지니어링의 한계
프롬프트는 AI에게 보내는 텍스트다. 프롬프트 엔지니어링은 이 텍스트를 잘 쓰는 기술이다. 분명 중요하다.
하지만 생각해보자. 새로 입사한 직원에게 업무를 시킨다고 가정하자. 아무리 지시를 잘해도, 그 직원이 회사 상황, 고객 정보, 과거 사례를 모른다면 좋은 결과를 내기 어렵다. 반대로 회사 전반을 잘 이해하고 있다면, 간단한 지시만으로도 탁월한 결과를 낸다.
AI도 마찬가지다. 프롬프트(지시)도 중요하지만, **컨텍스트(배경 정보)**가 더 중요할 때가 많다.
프롬프트 엔지니어링의 한계:
"훌륭한 마케터처럼 광고 카피를 써줘"
→ AI는 우리 브랜드 톤, 타겟 고객, 경쟁사 상황을 모름
→ 일반적인 광고 카피만 나옴
컨텍스트 엔지니어링 접근:
[브랜드 가이드라인 + 타겟 페르소나 + 성공한 기존 카피 3개 + 경쟁사 포지셔닝]
"이 맥락에서 광고 카피를 써줘"
→ 실제로 쓸 수 있는 결과물이 나옴
2. 컨텍스트 엔지니어링이란
컨텍스트 엔지니어링은 AI에게 전달되는 모든 정보(컨텍스트 윈도우)를 최적으로 설계하는 기술이다.
LLM이 처리할 수 있는 텍스트 길이를 컨텍스트 윈도우라고 한다. Claude 3.5의 경우 200,000 토큰(약 15만 단어), GPT-4o는 128,000 토큰이다. 이 창에 무엇을 얼마나 넣느냐가 AI 성능을 결정한다.
컨텍스트 엔지니어링이 다루는 것:
- 어떤 정보를 컨텍스트에 포함할 것인가
- 어떤 정보를 제외할 것인가 (관련 없는 정보는 오히려 노이즈)
- 어떤 순서로 정보를 배치할 것인가
- 컨텍스트 크기가 한계를 넘을 때 어떻게 압축할 것인가
3. 좋은 컨텍스트의 4가지 요소
1) 관련성 (Relevance)
지금 필요한 정보만 포함한다. 고객 문의 응대 AI에게 회사의 20년 역사를 모두 넣을 필요 없다. 지금 이 고객의 문제와 관련된 정보만 선별해 넣는다.
2) 정확성 (Accuracy)
틀린 정보가 포함되면 AI가 틀린 답을 확신 있게 말한다. 컨텍스트의 정확성이 AI 신뢰성을 결정한다.
3) 적시성 (Timeliness)
최신 정보가 중요하다. 6개월 전 제품 가격으로 고객 문의에 답변하면 안 된다. 컨텍스트에 들어가는 정보의 신선도를 관리해야 한다.
4) 간결성 (Conciseness)
긴 컨텍스트가 항상 좋은 건 아니다. LLM은 컨텍스트가 길어질수록 중간 부분의 정보를 덜 활용하는 경향이 있다 ("Lost in the Middle" 현상). 핵심 정보를 앞뒤에 배치하고, 중요도 낮은 내용은 제거한다.
4. 메모리 시스템 설계: 단기, 장기, 에피소딕
사람이 기억하는 방식처럼, AI 시스템도 다양한 메모리 레이어를 갖도록 설계할 수 있다.
[AI 메모리 시스템 구조]
단기 메모리 (Short-term)
- 현재 대화 내용
- 방금 실행한 도구 결과
- 현재 세션 컨텍스트
→ 컨텍스트 윈도우에 직접 포함
장기 메모리 (Long-term)
- 사용자 선호도와 프로필
- 과거 대화에서 학습한 사항
- 조직의 규칙과 정책
→ 벡터 DB에 저장, 필요 시 검색해 컨텍스트에 추가
에피소딕 메모리 (Episodic)
- 특정 프로젝트의 이전 작업 내용
- 과거 비슷한 사례 해결 방법
→ 문서 저장소에서 관련 에피소드 검색해 포함
예를 들어, 고객 서비스 AI라면:
- 단기: 지금 이 고객이 무슨 말을 하고 있는가
- 장기: 이 고객의 구매 이력, 이전 문의 해결 방식
- 에피소딕: 비슷한 문제를 겪은 다른 고객들의 해결 사례
5. 동적 컨텍스트 주입
정적으로 프롬프트를 만드는 것이 아니라, 사용자 입력에 따라 필요한 정보를 동적으로 검색해 컨텍스트에 추가하는 것이 핵심이다.
사용자: "우리 제품의 환불 정책이 어떻게 되나요?"
동적 컨텍스트 주입 과정:
1. 사용자 질문 분석 → "환불 정책" 키워드 추출
2. 벡터 DB에서 환불 관련 문서 검색
3. 이 고객의 구매 이력 조회 (장기 메모리)
4. 검색된 정보를 프롬프트에 추가
최종 컨텍스트:
[환불 정책 문서] + [이 고객 구매 이력] + [사용자 질문]
→ AI가 이 고객에게 맞는 정확한 환불 안내 제공
이것이 RAG(Retrieval-Augmented Generation)의 핵심 개념이지만, 컨텍스트 엔지니어링은 단순 검색을 넘어 다양한 소스(DB, API, 캐시, 도구 실행 결과)를 조합한다.
6. 컨텍스트 압축 기법
컨텍스트 윈도우는 유한하다. 긴 대화나 많은 문서를 다룰 때 컨텍스트가 한계를 넘으면 어떻게 할까?
방법 1: 요약(Summarization) 오래된 대화 내용을 AI로 요약해서 핵심만 유지한다.
대화 히스토리 20턴 → AI 요약 → "사용자가 재고 관리 시스템 개발 중, API 설계 논의 완료, 인증 방식은 JWT 결정"
방법 2: 관련성 기반 필터링 현재 질문과 관련성이 낮은 과거 컨텍스트는 제거한다.
방법 3: 계층적 압축 중요도에 따라 세부 수준이 다른 압축본을 유지한다.
7. 실제 적용: Claude, GPT-4에서 컨텍스트 최적화
System Prompt 구조화
시스템 프롬프트를 잘 구조화하는 것만으로도 성능이 크게 올라간다.
# 역할과 목적
당신은 [회사명]의 고객 서비스 에이전트입니다.
# 핵심 정보
- 회사: [회사명], 창립 [연도]
- 주요 제품: [제품 목록]
- 서비스 지역: [지역]
# 규칙
1. 환불은 구매 후 30일 이내 가능
2. 가격 정보는 반드시 최신 가격표를 확인
3. 민감한 개인정보는 확인 절차 후 안내
# 현재 컨텍스트
[동적으로 주입되는 사용자별 정보]
구조화된 시스템 프롬프트가 비구조적인 긴 설명보다 AI가 따르기 훨씬 쉽다.
맺으며
프롬프트 엔지니어링을 배우는 것도 의미 있다. 하지만 AI 시스템의 진짜 성능은 컨텍스트의 품질에서 나온다. AI에게 무엇을, 어떻게, 얼마나 알려주느냐가 결과의 80%를 결정한다.
다음번에 AI 결과물에 만족하지 못한다면, 프롬프트를 고치기 전에 먼저 물어보자. "AI에게 이 작업을 잘 하기 위해 필요한 정보를 충분히 제공했는가?" 그 답이 컨텍스트 엔지니어링의 시작이다.