AI 에이전트에게 필요한 건 더 많은 프롬프트가 아닌 제어 흐름

프롬프트의 한계

AI 에이전트 개발자라면 "MANDATORY" 또는 "DO NOT SKIP"같은 키워드를 프롬프트에 넣어본 경험이 있을 것이다. 이는 이미 프롬프트 기반 접근법이 한계에 달했다는 신호다. 개발자 Bryan Suh는 최근 블로그 글에서 이 문제를 정면으로 다뤘다.

그의 핵심 주장은 간단하다. LLM은 명령문이 제안이고 함수가 성공을 반환하면서 환각을 일으키는 프로그래밍 언어처럼 동작한다. 이런 환경에서는 신뢰할 수 있는 추론과 일관된 결과를 기대하기 어렵다.

소프트웨어가 증명한 확장성

전통적인 소프트웨어는 라이브러리, 모듈, 함수를 조합하는 재귀적 구성 가능성을 통해 확장된다. 이 구조는 예측 가능한 동작을 만들고, 로컬 추론이 가능하게 한다. 반면 프롬프트 체인은 비결정론적이고 약하게 명세되어 있으며 검증이 어렵다.

해결책은 LLM을 전체 시스템이 아닌 더 큰 아키텍처의 컴포넌트로 취급하는 것이다. 명시적인 상태 전환과 검증 체크포인트를 가진 결정론적 스캐폴드 안에 LLM을 배치해야 한다. 로직은 산문에서 런타임으로 이동해야 한다.

오류 감지의 중요성

결정론적 오케스트레이션만으로는 충분하지 않다. 에이전트는 적극적인 오류 감지를 요구한다. 그렇지 않으면 잘못된 결론에 빠르게 도달하는 수단이 될 뿐이다.

세 가지 불충분한 대안 모두 실용적이지 않거나 근본 문제를 해결하지 못한다: 실행 내내 인간이 감독하는 것, 실행 후 결과를 철저히 검증하는 것, 검증 없이 출력을 수용하는 것.

아키텍처적 엄밀함

복잡한 에이전트 시스템의 신뢰성은 프롬프트 정교화가 아닌 소프트웨어 아키텍처적 엄밀함에서 나온다. HN 커뮤니티에서 552점이라는 높은 점수가 이 주장의 공감대를 입증한다.