textlize pricing account
Context Engineering vs. Prompt Engineering: Smarter AI with RAG & Agents
Cover

00:07:52

Context Engineering vs Prompt Engineering: RAG와 에이전트로 구현하는 더 똑똑한 AI

대부분의 사람들은 이제 프롬프트 엔지니어링(Prompt Engineering)이라는 용어에 익숙해졌을 것입니다. 프롬프트 엔지니어링은 대형 언어 모델(LLM)에 입력하는 텍스트를 설계하는 과정으로, 지시문, 예시, 형식 지정 단서 등을 포함해 LLM의 행동과 출력을 조종하는 역할을 합니다. 반면 컨텍스트 엔지니어링(Context Engineering)은 LLM이 추론 중에 접하는 모든 요소—프롬프트, 검색 문서, 메모리, 도구 등—를 프로그램적으로 조립하는 더 광범위한 분야입니다. 이는 정확한 응답을 제공하는 데 필요한 전체 시스템을 구성하는 discipline에 가깝습니다.

에이전트 그레이엄 사례: 프롬프트와 컨텍스트의 차이

여행 예약을 전문으로 하는 에이전트 AI 모델인 '그레이엄(Agent Graeme)'을 예로 들어보겠습니다. 사용자가 "다음 달 DevOps 컨퍼런스를 위해 파리 호텔을 예약해 줘"라는 프롬프트를 보내면, 에이전트는 "Best Western Paris Inn이 와이파이와 무료 주차가 좋다"며 예약 완료를 응답합니다. 문제는 이 호텔이 미국 켄터키주의 파리에 위치한 반면, 컨퍼런스는 프랑스 파리에서 열린다는 점입니다. 이는 프롬프트 엔지니어링의 실패—위치를 명시하지 않음—로 볼 수 있지만, 동시에 컨텍스트 엔지니어링의 실패이기도 합니다. 에이전트가 더 똑똑했다면, 사용자 캘린더를 확인하거나 컨퍼런스 정보를 온라인에서 조회하는 도구를 사용해 정확한 위치를 파악했어야 합니다.

후속 프롬프트로 "내 컨퍼런스는 프랑스 파리야"라고 지정하면, 에이전트는 고급 호텔을 예약해 비용 문제를 일으킬 수 있습니다. 여기서는 회사의 출장 정책을 에이전트에 제공하지 않은 컨텍스트 부족이 근본 원인입니다. 예를 들어, 지역별 최대 호텔 요금을 명시한 JSON 파일 같은 동적 데이터가 필요했죠. 이처럼 프롬프트 엔지니어링은 지시문의 wording에 집중하는 반면, 컨텍스트 엔지니어링은 모델이 task를 완수할 수 있도록 필요한 모든 요소를 제공하는 시스템 수준의 접근입니다.

프롬프트 엔지니어링의 주요 기법

프롬프트 엔지니어링은 예술과 과학의 결합으로, 널리 채택된 몇 가지 기법이 있습니다:

  • 역할 할당(Role Assignment): LLM에게 특정 persona를 부여합니다. 예를 들어 "보안 취약점을 검토하는 시니어 Python 개발자"로 설정하면, 모델은 해당 전문성과 용어를 adopt해 출력을 생성합니다.
  • Few-Shot 예시: 직접 보여주는 방식으로, 2-3개의 input/output 예시를 제공해 모델이 원하는 형식과 스타일을 이해하도록 합니다. JSON 출력에 특정 필드명이 필요하다면 예시를 포함해야 합니다.
  • Chain of Thought (COT) 프롬프팅: 모델에게 단계별 추론을 요구합니다. "단계별로 생각해 봅시다"나 "추론을 설명하세요" 같은 phrases를 추가해 복잡한 reasoning task에서 성능을 향상시킵니다.
  • 제약 조건 설정(Constraint Setting): 응답의 경계를 명시적으로 정의합니다. "응답을 100단어로 제한하라"나 "제공된 컨텍스트 정보만 사용하라" 같은 지시로 tangents를 방지합니다.

컨텍스트 엔지니어링의 구성 요소

컨텍스트 엔지니어링은 동적이고 에이전트적인 시스템을 구축하기 위해 전체 환경을 orchestrate합니다. 주요 구성 요소는 다음과 같습니다:

  • 메모리 관리(Memory Management):
    • 단기 메모리: 긴 대화를 summarization해 컨텍스트 창 내에서 유지하며, past conversations을 잊지 않도록 합니다.
    • 장기 메모리: 벡터 데이터베이스(vector databases)를 사용해 사용자 선호도, 과거 여행 기록, 학습된 패턴 등을 retrieve합니다.
  • 상태 관리(State Management): multi-step process에서 현재 위치를 추적합니다. 예를 들어 여행 예약 에이전트가 flight, hotel, transportation을 booking할 때, 각 operation 간 state를 유지해 arrival time 같은 context를 mid-task에서 잃지 않도록 합니다.
  • Retrieval Augmented Generation (RAG): 에이전트를 동적 지식 소스에 연결합니다. RAG는 semantic과 keyword matching을 결합한 hybrid search를 사용해, 컨텍스트에 relevant한 sections만 retrieve합니다. 전체 문서가 아닌 relevant exceptions와 parts만 반환해 효율성을 높입니다.
  • 도구 접근(Tool Access): LLM 자체는 database 조회나 API 호출을 할 수 없으므로, 도구를 통해 gap을 bridge합니다. SQL database query, 실시간 pricing data fetch, infrastructure deployment 등이 tool에 포함되며, 컨텍스트 엔지니어링은 tool descriptions—what, when, constraints—을 정의해 LLM의 올바른 usage를 guide합니다.

또한 프롬프트 엔지니어링 자체도 컨텍스트 엔지니어링의 일부입니다. 기본 프롬프트(예: "보안 로그 anomaly 분석")에 runtime에서 current context(최근 alerts, known false positives 등)를 inject해 final prompt를 80% dynamic content와 20% static instructions로 구성할 수 있습니다.

결론: 프롬프트와 컨텍스트의 시너지

프롬프트 엔지니어링은 better questions를 제공하는 반면, 컨텍스트 엔지니어링은 better systems를 구축합니다. 둘을 적절히 결합하면, 예산 내에서 정확한 위치의 호텔을 예약하는 등 정확하고 실용적인 AI 에이전트를 만들 수 있습니다. 그러나 여전히 관리자 approval 같은 human factors는 별도의 challenge로 남아있죠. 궁극적으로 AI 시스템의 성능은 프롬프트의 정교함과 컨텍스트의 풍부함에 달려 있습니다.

© 2025 textlize.com. all rights reserved. terms of services privacy policy