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

Metadata

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

다음 글은 애디 오스마니(Addy Osmani)의 원문 「 Context Engineering: Bringing Engineering Discipline to Parts」 3부 중 마지막 글이다. 1부는 여기 에서, 2부는 여기에서 볼 수 있다.

컨텍스트 엔지니어링(context engineering)은 매우 중요하다. 하지만 완전한 LLM 애플리케이션을 구축하려면 더 큰 스택(stack)이 필요하며, 여기에는 제어 흐름(control flow), 모델 오케스트레이션(model orchestration), 도구 통합(tool integration), 가드레일(guardrails) 같은 요소도 함께 들어간다.

안드레이 카파시(Andrej Karpathy)의 표현을 빌리면, 컨텍스트 엔지니어링은 실제 LLM 앱을 구동하는 “ 새롭게 형성되고 있는 두터운 비정형 소프트웨어 계층의 작은 한 조각(one small piece of an emerging thick layer of non-trivial software) ”이다. 즉, 지금까지는 좋은 컨텍스트를 어떻게 구성할지에 초점을 맞췄지만, 그것이 전체 아키텍처에서 어디에 들어맞는지도 함께 봐야 한다.

프로덕션급 LLM 시스템은 보통 프롬프트만으로는 해결되지 않는 여러 문제를 다뤄야 한다. 예를 들면 다음과 같다.

우리가 실제로 말하고 있는 것은 새로운 종류의 애플리케이션 아키텍처(application architecture) 다. 여기서는 결정론적 함수를 단순히 실행하는 것이 아니라, 정보인 컨텍스트를 관리하고 그것을 일련의 AI 상호작용을 통해 조정하는 일이 핵심 로직이 된다. 카파시는 컨텍스트 채우기 위에 제어 흐름, 모델 디스패치(dispatch), 메모리 관리, 도구 사용, 검증 단계 같은 요소가 얹힌다고 설명했다. 이 모든 것이 합쳐져 그가 농담처럼 말한 “새롭게 형성되는 두터운 계층”을 이룬다. “두텁다”고 한 이유는 그만큼 처리하는 일이 많기 때문이다. 이런 시스템을 만들 때 우리는 사실상 메타프로그램(metaprogram)을 쓰고 있다. 다시 말해, 어떤 작업을 해결하기 위해 또 다른 “프로그램”, 즉 AI의 출력을 지휘하는 프로그램을 작성하는 것이다.

소프트웨어 엔지니어에게 이는 흥미로우면서도 도전적인 변화다. 흥미로운 이유는 이전에는 없던 능력을 열어 주기 때문이다. 예를 들면 자연어, 코드, 외부 동작을 매끄럽게 다루는 보조 도구를 만들 수 있다. 어려운 이유는 많은 기법이 아직 새롭고 계속 변하고 있기 때문이다. 이제는 프롬프트 버전 관리, AI 신뢰성, 윤리적 출력 필터링 같은 문제를 고민해야 한다. 이런 문제는 과거의 앱 개발에서는 표준적인 요소가 아니었다. 이런 맥락에서 컨텍스트 엔지니어링은 시스템의 중심부에 놓여 있다. 적절한 시점에 올바른 정보를 모델에 넣지 못하면, 다른 무엇도 앱을 구해 주지 못한다. 하지만 앞서 봤듯이, 컨텍스트가 완벽하다고 해서 그것만으로 충분한 것도 아니다. 그 주위를 받쳐 주는 구조 전체가 필요하다.

핵심은 우리가 프롬프트 설계(prompt design)에서 시스템 설계(system design)로 이동하고 있다는 점 이다. 컨텍스트 엔지니어링은 그 시스템 설계의 핵심 요소이지만, 동시에 다른 많은 구성 요소와 나란히 존재한다.

결론

핵심 요점: 완전한 컨텍스트를 조립하는 방법을 익히고, 여기에 탄탄한 테스트를 결합하면, AI 모델에서 최선의 출력을 얻을 가능성을 높일 수 있다.

경험 많은 엔지니어라면 이 패러다임의 핵심이 낯설지 않을 것이다. 본질적으로는 좋은 소프트웨어 관행을 새로운 영역에 적용하는 일이기 때문이다. 생각해 보자.

컨텍스트 엔지니어링을 받아들인다는 것은 사실상 이렇게 말하는 것이다. “개발자인 내가 AI가 하는 일에 책임을 진다.” AI는 신비한 신탁이 아니다. 내가 적절한 데이터와 규칙으로 설정하고 구동해야 하는 하나의 구성 요소다.

이런 사고방식의 전환은 힘을 실어 준다. 이제 우리는 AI를 예측 불가능한 마법처럼 대할 필요가 없다. 탄탄한 엔지니어링 기법과 약간의 창의적인 프롬프트 감각만 있다면 충분히 길들일 수 있다.

그렇다면 실무에서 이런 컨텍스트 중심 접근법을 어떻게 도입할 수 있을까?

앞으로는 컨텍스트 엔지니어링이 제2의 천성이 될 것 이라고 본다. 오늘날 API 호출이나 SQL 질의를 작성하는 일이 자연스러운 것처럼 말이다. 이는 소프트웨어 개발의 표준 역량 목록에 포함될 것이다. 이미 많은 사람이 질문에 필요한 컨텍스트를 가져오려고 빠르게 벡터 유사도 검색을 수행하는 일을 별다른 의식 없이 한다. 그냥 흐름의 일부가 된 것이다. 몇 년 뒤에는 “컨텍스트를 제대로 설정했나요?”가 “그 API 응답은 제대로 처리했나요?”만큼 흔한 코드 리뷰 질문이 될 것이다.

이 새로운 패러다임을 받아들인다고 해서 기존의 엔지니어링 원칙을 버리는 것은 아니다. 우리는 그것을 새로운 방식으로 다시 적용할 뿐이다. 수년간 소프트웨어 기술을 갈고닦아 왔다면, 그 경험은 지금 엄청난 가치가 있다. 그 경험이 있어야 합리적인 흐름을 설계하고, 경계 사례를 찾아내고, 정확성을 보장할 수 있다. AI는 그런 역량을 쓸모없게 만든 것이 아니라, AI를 올바르게 이끌기 위해 오히려 더 중요하게 만들었다. 소프트웨어 엔지니어의 역할은 줄어드는 것이 아니라 진화하고 있다. 우리는 이제 단지 코드를 쓰는 사람이 아니라 AI의 연출자(directors) 이자 편집자(editors) 가 되어 간다. 그리고 AI를 효과적으로 지휘하게 해 주는 기술이 바로 컨텍스트 엔지니어링이다.

무슨 질문을 하느냐만이 아니라, 모델에 어떤 정보를 제공하느냐의 관점에서 생각하라. 직접 실험하고, 반복해서 다듬고, 발견한 내용을 공유하라. 그렇게 하면 오늘날의 AI에서 더 나은 결과를 얻을 뿐 아니라, 앞으로 등장할 훨씬 더 강력한 AI 시스템에도 대비할 수 있다. AI에 무엇을 먹여야 하는지 아는 사람이 늘 유리하다.

즐거운 컨텍스트 코딩을!

오라일리(O'Reilly)와 함께 새로 쓴 AI 보조 엔지니어링 도서 를 소개하게 되어 기쁘다. 여기의 글을 재미있게 읽었다면 이 책도 관심 있게 살펴볼 만하다.


게시물 주제: AI & ML

게시물 태그: