//
알아서 잘하는 에이전틱 AI 시스템 구축하기 · 안자나바 비스와스, 릭 탈루크다르
6장에서 시스템 프롬프트의 구성 요소를 다뤘다면, 7장에서는 프롬프트의 품질을 높이는 구체적인 기법을 다룬다.
프롬프트의 최상단에 에이전트가 달성해야 할 목표를 명확하고 측정 가능한 형태로 기술한다. "좋은 여행 계획을 세워라"보다 "사용자의 예산, 일정, 선호도를 반영하여 일별 일정을 생성하되, 이동 시간이 하루 총 3시간을 초과하지 않도록 한다"가 더 효과적이다.
에이전트가 수행해야 할 단계를 순서대로 기술한다. 각 단계의 입력과 기대 출력을 함께 정의하면 에이전트의 행동 예측 가능성이 높아진다.
에이전트가 현재 자신이 처한 상황을 이해할 수 있도록, 관련 배경 정보를 프롬프트에 포함한다. 이전 단계의 결과, 다른 에이전트가 제공한 정보, 사용자의 히스토리 등이 해당한다.
에이전트가 동작하는 환경을 체계적으로 모델링하는 것은 안정적인 시스템 설계의 기반이다.
상태 공간(State Space) 은 에이전트가 처할 수 있는 모든 가능한 상태의 집합이다. 여행 계획 에이전트의 상태 공간에는 "항공편 검색 중", "숙소 비교 중", "일정 생성 중", "사용자 확인 대기 중" 등이 포함된다.
환경 모델링에서 고려해야 할 요소는 다음과 같다.
| 요소 | 설명 | 설계 영향 |
|---|---|---|
| 관측 가능성 | 에이전트가 환경의 전체를 볼 수 있는지 | 부분 관측 시 불확실성 처리 필요 |
| 결정론 | 같은 행동이 항상 같은 결과를 내는지 | 비결정적 환경은 재시도 로직 필요 |
| 동적성 | 에이전트가 행동하지 않아도 환경이 변하는지 | 동적 환경은 실시간 모니터링 필요 |
| 이산/연속 | 상태와 행동이 이산적인지 연속적인지 | 연속 환경은 더 정교한 계획 필요 |
에이전트가 과거 경험과 정보를 저장하고 활용하는 메모리 시스템은 세 가지 유형으로 구성된다.
현재 진행 중인 작업과 관련된 정보를 일시적으로 저장한다. 대화의 최근 턴, 현재 단계의 중간 결과 등이 해당한다. LLM의 컨텍스트 윈도우가 단기 메모리의 물리적 구현체라 할 수 있다.
도메인 지식, 학습된 패턴, 축적된 경험을 영구적으로 저장한다. 벡터 데이터베이스나 구조화된 저장소를 통해 구현된다. "도쿄 여행 시 벚꽃 시즌은 3월 말~4월 초"와 같은 도메인 지식이 여기에 저장된다.
과거 에이전트와 사용자 간의 상호작용 이력을 저장한다. "이 사용자는 이전에 채식 식당을 선호한다고 했다"와 같은 정보가 해당한다. 개인화된 서비스 제공에 핵심적이다.
| 메모리 유형 | 저장 대상 | 지속 기간 | 구현 방식 |
|---|---|---|---|
| 단기 | 현재 작업의 중간 상태 | 작업 종료까지 | LLM 컨텍스트 윈도우 |
| 장기 | 도메인 지식, 학습된 패턴 | 영구적 | 벡터 DB, 지식 그래프 |
| 일화적 | 상호작용 이력 | 영구적 (정책에 따라 만료) | 대화 로그 DB |
에이전트의 콘텍스트를 효과적으로 관리하는 것은 제한된 컨텍스트 윈도우 내에서 최대한의 성능을 끌어내는 핵심 기술이다.
모든 에이전트가 공유하는 시스템 수준의 정보다. 프로젝트 목표, 전역 제약 조건, 공통 도메인 지식 등이 포함된다.
현재 세션에 한정된 정보다. 사용자의 현재 요청, 대화 이력, 세션 중 수집된 정보가 해당한다.
개별 작업 수행에 필요한 정보다. 현재 단계의 입력 데이터, 이전 단계의 출력, 사용할 도구의 스펙 등이 포함된다.
콘텍스트 윈도우가 제한되어 있으므로, 세 가지 콘텍스트의 비율을 적절히 조절하는 것이 중요하다. 글로벌 콘텍스트는 최소한으로 유지하고, 작업 콘텍스트에 가장 많은 공간을 할당하는 것이 일반적인 전략이다.
에이전트의 작업을 어떤 순서로 실행할지는 시스템의 응답 속도와 정확도에 직접적인 영향을 미친다.
작업들이 선후 의존관계를 가질 때 사용한다. 항공편이 확정되어야 숙소 날짜를 결정할 수 있는 경우가 해당한다. 안정적이지만 병목이 발생할 수 있다.
독립적인 작업을 동시에 실행하여 전체 소요 시간을 단축한다. 항공편 검색과 관광지 조사는 독립적이므로 병렬 실행이 가능하다.
에이전트 워크플로를 설계할 때, 모든 작업을 병렬화하려는 유혹을 경계해야 한다. 병렬 처리는 속도를 높이지만, 에이전트 간 상태 동기화의 복잡성도 함께 높인다. 먼저 순차적으로 동작하는 안정적인 워크플로를 만든 뒤, 병목 지점을 측정하고 해당 부분만 선택적으로 병렬화하는 접근이 바람직하다.
7장은 에이전틱 시스템 설계의 실전 기법을 총망라한다. 프롬프트 설계, 상태 모델링, 메모리 아키텍처, 콘텍스트 관리, 워크플로 최적화까지 -- 각각은 독립적으로도 중요하지만, 이들을 통합적으로 설계할 때 비로소 안정적이고 효율적인 에이전트 시스템이 완성된다. 특히 메모리 아키텍처의 세 가지 유형 분류는 설계 시 빠뜨리기 쉬운 일화적 메모리의 중요성을 환기시켜 준다.