My AI Smarteasy와 글 읽기 – 컨텍스트 엔지니어링 시리즈 2 – Context Engineering for Agents
Context Engineering for Agents – YouTube
일타 강사 저스틴의 컨텍스트 엔지니어링 강의: 에이전트의 성능을 극대화하는 비법
안녕하세요, 여러분! 일타 강사 저스틴입니다. 오늘은 2025년 7월 3일에 LangChain 채널에서 공개된 Lance님의 “Context Engineering for Agents” 강의를 바탕으로, AI 에이전트 구축에 있어 핵심적인 컨텍스트 엔지니어링에 대해 자세히 알아보겠습니다. Lance님은 LangChain에서 일하고 계시며, 이 분야에 대한 깊은 이해를 바탕으로 명쾌한 설명을 제공해주셨습니다.
강의의 핵심: 에이전트가 작업을 수행하는 데 필요한 최적의 정보를 컨텍스트 윈도우에 채워 넣는 기술과 과학, 즉 컨텍스트 엔지니어링에 대한 전략을 소개합니다.
1. 컨텍스트 엔지니어링이란 무엇인가? [Basic]
- 정의: 컨텍스트 엔지니어링은 에이전트가 특정 작업을 수행하는 각 단계에서 컨텍스트 윈도우를 적절한 정보로 채우는 기술이자 과학입니다. 쉽게 말해, 에이전트가 똑똑하게 일할 수 있도록 필요한 정보만 쏙쏙 넣어주는 것이죠.
- 배경: Shopify의 Toby님과 Karpathy님의 논의에서 시작된 용어로, Karpathy님은 이를 “다음 단계를 위해 컨텍스트 윈도우를 올바른 정보로 채우는 섬세한 기술이자 과학”이라고 정의했습니다.
- LLM과 운영체제의 비유: LLM(Large Language Model)을 CPU, 컨텍스트 윈도우를 RAM에 비유하여 이해하면 쉽습니다. RAM 용량이 제한적인 것처럼, 컨텍스트 윈도우도 제한된 용량을 가지므로 어떤 정보를 넣을지 신중하게 결정해야 합니다.
- 컨텍스트의 종류: 프롬프트 엔지니어링, 기억(Memory), Few-shot 예제, 도구 설명, 지식(사실, 기억), 도구 피드백 등 다양한 형태가 있습니다.
2. 왜 에이전트에게 컨텍스트 엔지니어링이 중요할까? [Critical]
- 에이전트의 특징: 에이전트는 장기적인 작업이나 복잡한 작업을 처리하고, 도구 호출(Tool calling)을 활용합니다. 이 두 가지 특징 때문에 컨텍스트 활용량이 증가하게 됩니다.
- 도구 호출 피드백의 누적: 턴(Turn)이 많아질수록 도구 호출에서 발생하는 피드백이 컨텍스트 윈도우에 계속 쌓이게 됩니다.
- 컨텍스트 실패의 문제점: Drew Brun님의 블로그 글에서 언급된 컨텍스트 실패 유형(Context poisoning, Distraction, Curation, Clash)처럼, 컨텍스트가 길어질수록 LLM이 혼란스러워하거나 잘못된 정보를 주입받을 가능성이 커집니다.
- 결론: 에이전트는 일반적으로 더 긴 컨텍스트를 처리해야 하므로, 컨텍스트 엔지니어링이 특히 중요합니다. Cognition에서도 컨텍스트 엔지니어링을 “AI 에이전트 구축 엔지니어의 가장 중요한 업무”라고 강조했습니다.
3. 컨텍스트 엔지니어링의 4가지 전략 [Complex]
Lance님은 다양한 에이전트 사례와 경험을 바탕으로 컨텍스트 엔지니어링 접근 방식을 4가지 범주로 정리했습니다.
- Writing Context (쓰기 컨텍스트): 에이전트가 작업을 수행하는 데 도움이 되도록 컨텍스트 윈도우 외부에 정보를 저장하는 것을 의미합니다.
- 스크래치 패드 (Scratch Pad): 에이전트가 작업을 수행하는 동안 정보를 기록하고 유지하는 방법입니다. Anthropic의 multi-agent researcher 사례에서, 리드 연구원이 접근 방식을 계획하고 이를 파일에 저장하여 유지하는 것을 예시로 들 수 있습니다.
- 메모리 (Memory): 에이전트와의 여러 세션에 걸쳐 정보를 저장하고 활용하는 방법입니다. Generative Agents나 ChatBot의 기억 기능, Cursor Windsurf의 자동 생성 메모리 등이 좋은 예시입니다.
- Selecting Context (선택 컨텍스트): 에이전트가 작업을 수행하는 데 도움이 되도록 컨텍스트 윈도우 내부로 컨텍스트를 선택적으로 가져오는 것을 의미합니다.
- 다양한 메모리 유형 활용: 해결하려는 문제에 따라 Few-shot 예제, 선별된 프롬프트, 사실(Facts) 등 다양한 유형의 메모리를 활용할 수 있습니다.
- 절차적 메모리: 규칙 파일(Rules files)이나 Cloud MD처럼 코드 에이전트 작업 시 스타일 가이드라인이나 도구 사용 지침을 담은 파일을 활용합니다.
- 사실 (Facts): 임베딩 기반 유사성 검색(Embedding-based similarity search)이나 그래프 데이터베이스를 사용하여 관련 정보를 선택적으로 가져옵니다.
- 도구 선택 (Tool Selection): 에이전트가 많은 수의 도구를 다루기 어려워하는 문제를 해결하기 위해, RAG(Retrieval-Augmented Generation)를 사용하여 도구 설명을 임베딩하고, 의미론적 유사성을 기반으로 관련 도구를 선택합니다.
- 지식 (Knowledge): RAG는 LLM의 지식 기반을 확장하는 데 사용됩니다. 코드 에이전트가 대표적인 예시이며, 청크 나누기(Chunking), 임베딩 기반 검색, LLM 기반 순위(Ranking) 등 다양한 기술이 사용됩니다.
- 다양한 메모리 유형 활용: 해결하려는 문제에 따라 Few-shot 예제, 선별된 프롬프트, 사실(Facts) 등 다양한 유형의 메모리를 활용할 수 있습니다.
- Compressing Context (압축 컨텍스트): 작업 수행에 필요한 가장 관련성 높은 토큰만 유지하는 것을 의미합니다.
- 요약 (Summarization): Cloud Code에서 세션이 컨텍스트 윈도우의 95%에 도달하면 자동으로 요약을 수행하는 것이 좋은 예시입니다. Anthropic이나 Cognition에서는 완료된 작업 섹션이나 에이전트 간 인터페이스에서 요약을 적용하기도 합니다.
- 트리밍 (Trimming): 휴리스틱(Heuristic) 또는 LLM 기반 접근 방식을 사용하여 관련 없는 토큰을 선택적으로 제거합니다.
- Isolating Context (격리 컨텍스트): 에이전트가 작업을 수행하는 데 도움이 되도록 컨텍스트를 분리하는 것을 의미합니다.
- 멀티 에이전트 (Multi-agent): OpenAI의 Swarm 라이브러리처럼, 여러 에이전트가 각자 독립적인 컨텍스트 윈도우, 도구, 지침을 가질 수 있도록 합니다. Anthropic은 이를 통해 전체 시스템이 처리할 수 있는 토큰 수를 늘릴 수 있다고 강조했습니다.
- 샌드박스 (Sandbox): Hugging Face의 Open Deep Research 사례처럼, 코드 에이전트가 생성한 코드를 샌드박스에서 실행하고, 필요한 정보만 LLM에 전달하여 토큰 과부하를 방지합니다.
- 런타임 상태 객체 (Runtime State Object): Pydantic 모델과 같은 데이터 모델을 사용하여 컨텍스트를 여러 필드(버킷)로 분리하고, 필요한 시점에 필요한 정보만 LLM에 전달합니다.
4. LangGraph는 어떻게 컨텍스트 엔지니어링을 지원하는가? [Moderate]
Lance님은 LangGraph가 컨텍스트 엔지니어링을 어떻게 지원하는지 설명합니다.
- 전제 조건: 컨텍스트 엔지니어링을 시작하기 전에 토큰 추적(Tracing) 및 관찰 기능(Observability)(LangSmith 활용)과 컨텍스트 엔지니어링 노력의 효과를 측정할 수 있는 평가 방법이 필요합니다.
- 쓰기 컨텍스트: LangGraph는 상태 객체(State object)를 중심으로 설계되어 있어, 스크래치 패드 개념을 쉽게 구현할 수 있습니다. 각 노드에서 상태 객체에 접근하여 정보를 읽고 쓸 수 있으며, 에이전트 수명 동안 상태가 유지됩니다. 또한, LangGraph는 장기 메모리(Long-term memory)를 기본 구성 요소로 제공하여 여러 세션에 걸쳐 정보를 저장할 수 있습니다.
- 선택 컨텍스트: LangGraph에서는 상태에서 정보를 선택하거나, 장기 메모리에서 다양한 유형의 메모리(파일, 컬렉션, 임베딩 기반 유사성 검색)를 검색할 수 있습니다. LangGraph Big Tool은 임베딩 기반 의미론적 유사성 검색을 통해 도구를 선택하는 좋은 예시입니다. RAG를 위해서도 LangGraph는 다양한 기술을 구현할 수 있는 로우 레벨 프레임워크를 제공합니다.
- 압축 컨텍스트: LangGraph는 요약 및 트리밍 유틸리티를 제공하며, 각 노드 내에서 로직을 정의할 수 있는 유연성을 제공합니다.
- 격리 컨텍스트: LangGraph는 Supervisor 및 Swarm과 같은 멀티 에이전트 구현을 지원하며, Jacob님의 E2B 저장소처럼 샌드박스와 함께 사용할 수도 있습니다. 또한, 상태 객체를 사용하여 컨텍스트를 격리하고 관리할 수 있습니다.
마무리
오늘 강의에서는 AI 에이전트 구축에 필수적인 컨텍스트 엔지니어링의 4가지 전략(쓰기, 선택, 압축, 격리)과 LangGraph를 활용한 구현 방법에 대해 자세히 알아봤습니다. 컨텍스트 엔지니어링은 끊임없이 진화하는 분야이므로, 오늘 배운 내용을 바탕으로 자신만의 전략을 개발하고 LangGraph를 활용하여 더욱 강력하고 효율적인 에이전트를 만들어보시길 바랍니다.
[중요]: 컨텍스트 엔지니어링은 단순히 기술적인 문제가 아니라, 에이전트의 성능과 직결되는 중요한 요소입니다. 오늘 강의에서 강조한 4가지 전략을 기억하고, 실제 에이전트 개발에 적용하여 여러분의 AI 역량을 한 단계 업그레이드하시기 바랍니다!