The rise of "context engineering"
요약
상세 내용
Context Engineering은 LLM(Large Language Model)이 주어진 작업을 성공적으로 수행할 수 있도록, 적절한 정보와 도구를 올바른 형식으로 제공하는 동적인 시스템을 구축하는 것을 의미합니다. 에이전트 시스템이 불안정하게 작동하는 주요 원인은 LLM에 적절한 Context, 지침 및 도구가 전달되지 않았기 때문이라고 지적합니다. LLM 애플리케이션이 단일 프롬프트에서 복잡하고 동적인 에이전트 시스템으로 진화함에 따라 Context Engineering의 중요성이 더욱 강조됩니다.
Context Engineering의 핵심 구성 요소는 다음과 같습니다:
Context Engineering의 중요성은 에이전트 시스템의 오류가 대부분 LLM의 Context 부족 또는 부적절한 형식에서 비롯된다는 점에 있습니다. 모델 자체의 성능 문제보다는 Context 문제가 훨씬 더 자주 발생하며, 이는 LLM이 개선될수록 더욱 두드러집니다. Context가 없으면 모델은 존재하지 않는 정보를 알 수 없고, Context의 형식이 좋지 않으면 모델의 반응 방식에 부정적인 영향을 미칩니다.
Context Engineering과 Prompt Engineering의 차이점: 초기에 개발자들은 프롬프트 문구를 영리하게 다듬는 데 집중했지만, 애플리케이션이 복잡해짐에 따라 완전하고 구조화된 Context를 제공하는 것이 훨씬 더 중요해졌습니다. Prompt Engineering은 Context Engineering의 부분집합으로 간주됩니다. Prompt Engineering이 특정 입력 데이터에 잘 작동하는 프롬프트를 설계하는 데 중점을 둔다면, Context Engineering은 동적인 데이터를 받아 적절하게 포맷하여 프롬프트에 조립하는 시스템을 구축하는 데 중점을 둡니다. LLM이 어떻게 행동해야 하는지에 대한 핵심 지침 또한 Context의 중요한 부분으로, 이는 Prompt Engineering과 Context Engineering 모두에 걸쳐 있습니다.
Context Engineering의 예시:
* Tool use: LLM이 외부 정보에 접근해야 할 때, 접근 도구를 제공하고 그 반환 정보를 LLM이 소화하기 쉽게 포맷하는 것.
* Short term memory: 대화가 길어질 때 대화 요약을 생성하여 다음 상호작용에 활용하는 것.
* Long term memory: 이전 대화에서 사용자가 표현한 선호도를 검색하여 활용하는 것.
* Prompt Engineering: 에이전트의 행동 방식을 프롬프트에 명확하게 열거하는 것.
* Retrieval: 정보를 동적으로 가져와 LLM 호출 전에 프롬프트에 삽입하는 것.
LangChain의 제품들은 Context Engineering을 지원하도록 설계되었습니다. LangGraph는 에이전트 프레임워크로서 모든 단계를 제어할 수 있어, LLM에 어떤 내용이 들어갈지, 어떤 단계가 실행될지, 결과가 어디에 저장될지 등을 완벽하게 제어함으로써 Context Engineering을 가능하게 합니다. 다른 에이전트 추상화 프레임워크가 Context Engineering을 제한하는 반면, LangGraph는 이러한 제어를 제공합니다. LangSmith는 LLM 애플리케이션의 가시성과 평가 도구로, 에이전트 호출을 추적하여 LLM에 전달된 데이터, 형식, 도구 접근성 등을 시각화함으로써 Context Engineering의 디버깅을 돕습니다.
결론적으로, Context Engineering은 LLM과의 효과적인 소통의 핵심이며, 에이전트 시스템의 신뢰성을 높이는 데 필수적인 기술입니다. 이 개념은 새로운 것이 아니지만, 증가하는 그 중요성을 적절하게 설명하는 용어로 부상하고 있습니다.