컨텍스트 낭비 없는 리서치, Bedrock AgentCore의 등장
웹 리서치 양이 많아질수록 AI의 답변이 엉뚱해지거나 중간에 끊기는 현상이 발생한다. LLM이 한 번에 처리할 수 있는 컨텍스트 윈도우가 방대한 웹 페이지 원문 데이터로 가득 차면서, 정작 중요한 분석을 수행할 추론 공간이 부족해지기 때문이다. LangChain Deep Agents는 메인 에이전트가 모든 데이터를 직접 읽지 않고, 전문화된 서브 에이전트에게 업무를 위임해 이 문제를 해결한다.
핵심은 Amazon Bedrock AgentCore가 제공하는 MicroVM(경량 가상 머신) 기반의 독립 환경이다. 메인 에이전트가 일회성 서브 에이전트를 생성하면, 각 에이전트는 격리된 MicroVM 내에서 브라우저를 띄우거나 파이썬 코드를 실행한다. 이후 정제된 요약 결과만 메인 에이전트에게 전달하므로, 메인 에이전트는 원문 데이터에 매몰되지 않고 전체 리서치 방향을 잡는 데 집중할 수 있다.
전체 시스템 구축 전, 아래 명령어로 Bedrock AgentCore의 코드 인터프리터 샌드박스 환경을 즉시 테스트할 수 있다.
deepagents --sandbox agentcore실제 워크플로는 코디네이터 에이전트가 요청을 받아 과거 기록을 확인하는 것으로 시작한다. 이어 브라우저 서브 에이전트들을 병렬로 생성해 여러 경쟁사 사이트를 동시에 조사하고, 분석가 서브 에이전트가 데이터를 넘겨받아 차트나 보고서를 작성한 뒤 최종 인사이트를 메모리에 저장하는 구조다.
MicroVM으로 격리된 브라우저와 코드 인터프리터의 작동 방식
브라우저 서브 에이전트는 Playwright(브라우저 자동화 라이브러리)와 WebSocket을 통해 Chromium 브라우저에 연결된다. 각 에이전트는 독립된 MicroVM에서 작동하며, 세션은 수 초 내에 생성되고 소멸하는 일회성 구조를 가진다.
python
BrowserToolkit 설정 예시
browser_toolkit = BrowserToolkit(
session_wait_timeout=60
)
에이전트는 `navigate_browser`, `extract_text`, `click_element` 등의 도구를 사용한다. 이때 `session_wait_timeout` 설정을 기본 10초에서 60초로 늘리면, 여러 도구가 동시에 호출될 때 발생하는 타임아웃을 방지하고 안정적인 페이지 로딩을 보장할 수 있다. 전용 브라우저를 할당했기에 병렬 처리 중에도 세션 간 간섭 없이 웹사이트별 독립 샌드박스를 유지한다.
분석가 서브 에이전트는 pandas, matplotlib, numpy가 사전 설치된 AgentCore Code Interpreter MicroVM를 사용한다. 데이터 분석과 차트 생성에 최적화된 이 환경은 메인 추론 루프와 완전히 분리되어 작동한다.
python
CodeInterpreter 설정 예시
interpreter_toolkit = CodeInterpreterToolkit()
사용 가능 도구: execute_code, execute_command, write_files, read_files, list_files, upload_file, install_packages
에이전트는 `execute_code`와 `execute_command`로 파이썬 코드를 직접 실행해 시각화 자료를 도출하며, 필요한 패키지는 `install_packages`로 런타임에 즉시 설치한다. 분석 전용 도구 세트만 제공함으로써 LLM이 브라우저 도구와 인터프리터 도구를 혼동해 호출하는 오작동을 원천 차단한다.
코디네이터 에이전트는 AgentCore Memory API를 통해 리서치 통찰을 장기 기억으로 관리한다. 이때 `semanticMemoryStrategy` 같은 추출 전략 설정이 필수적이다.
python
Memory 설정 예시
memory_toolkit = MemoryToolkit(
strategy=semanticMemoryStrategy
)
추출 전략이 없으면 단순 이벤트만 저장되어 구조적인 통찰을 얻기 어렵다. 에이전트는 `recall_past_research` 함수로 저장된 지식을 검색해 중복 작업을 제거한다. 이처럼 도구별로 격리된 환경을 구축하면 각 서브 에이전트의 데이터 처리 범위가 명확해져 워크플로의 예측 가능성이 높아진다.
순차 처리 대비 3배 빠른 병렬 리서치 구조
독립된 MicroVM에서 브라우저 서브 에이전트를 병렬로 실행하면 물리적인 실행 시간을 크게 단축할 수 있다. Claude Sonnet 모델 기준으로 3개 사이트를 동시에 리서치했을 때 전체 소요 시간은 4~6분 수준이다. 이를 순차적으로 처리했다면 최대 3배 더 많은 시간이 걸렸을 작업이다.
컨텍스트 윈도우의 효율성도 동시에 개선된다. 브라우저 서브 에이전트가 상세 내용을 직접 분석해 요약본만 반환하기 때문이다. 코디네이터는 원문 전체를 읽을 필요 없이 정제된 정보만 처리하므로, 토큰 소모를 줄이고 최종 합성 단계의 전략적 분석에만 집중할 수 있다.
또한 도구 권한을 엄격히 제한해 신뢰도를 높였다. 브라우저 에이전트는 브라우저 도구만, 분석가 에이전트는 인터프리터 도구만 사용하도록 설정하면 분석 단계에서 엉뚱하게 브라우저를 호출하는 실수를 방지할 수 있다. 이는 디버깅 지점을 명확히 하는 설계적 이점이 된다.
이러한 구성 요소들을 하나로 연결해 에이전트를 호출하는 코드는 다음과 같다.
python
Wire the components together and invoke the agent:
(The actual wiring code from the notebook would be placed here)
대상 페이지가 많아질수록 순차 처리의 지연 시간과 컨텍스트 포화 문제는 심화된다. 따라서 병렬 리서치로 데이터를 빠르게 수집하고 분석가 에이전트가 보고서를 생성하는 파이프라인을 구축하는 것이 전체 병목을 해결하는 핵심이다.
CloudWatch와 LangSmith로 추적하는 멀티 에이전트 가시성
Amazon Bedrock AgentCore Observability는 Amazon CloudWatch를 통해 실행 과정을 시각화한다. 모든 기록은 OpenTelemetry(OTEL) 형식의 트레이스와 스팬(Span)으로 생성된다. 코디네이터 에이전트를 최상위 계층으로 두고, 그 아래로 브라우저 및 분석가 서브 에이전트가 자식 스팬으로 연결되는 계층 구조를 확인할 수 있다.
각 스팬에서는 도구 호출의 입출력값, 실행 시간, 토큰 사용량을 확인한다. 특히 벽시계 시간(Wall-clock timing)을 통해 브라우저 서브 에이전트가 실제로 병렬 작동하는지 검증하고, 실패 지점을 즉시 식별한다. 이를 위해 계정당 한 번 CloudWatch Transaction Search 기능을 활성화해야 한다. AgentCore Runtime 호스팅 시 OTEL 설정이 자동 적용되지만, 외부 환경에서는 AWS Distro for OpenTelemetry(ADOT) SDK와 LangChain instrumentation 라이브러리를 직접 추가해야 한다. 자세한 내용은 Amazon Bedrock AgentCore Observability documentation에서 확인할 수 있다.
LangSmith를 사용하면 환경 변수 세 가지만으로 멀티 에이전트 구조의 엔드 투 엔드 트레이싱을 활성화해 복잡한 호출 체인을 시각적으로 분석할 수 있다.
OS_TRACING=true
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=your_api_key성과 측정에는 AgentCore Evaluations documentation에서 제공하는 목표 성공률과 도구 선택 정확도 지표를 활용한다. 실무적으로는 트레이스 데이터에서 병목이 발생하는 특정 서브 에이전트의 스팬을 찾아 타임아웃 설정을 조정하거나 프롬프트를 수정하는 방식으로 최적화한다.
모델 교체 가능한 인프라의 실무적 이점
최신 모델의 추론 능력을 즉시 반영하려면 인프라와 모델의 결합도를 낮춰야 한다. Bedrock AgentCore의 브라우저, 인터프리터, 메모리 도구는 오케스트레이션을 담당하는 모델 종류와 상관없이 동일한 인터페이스로 작동한다. 모델이 업데이트되어도 도구 호출 방식이나 실행 환경을 다시 설계할 필요가 없다.
모델 교체는 `ChatBedrock` 클래스에서 모델 ID를 변경하는 것만으로 완료된다.
llm = ChatBedrock(
model_id="us.anthropic.claude-3-5-sonnet-20240620-v1:0"
)여기서 `us.` 접두사는 가용성을 높이기 위한 교차 지역 추론 프로필을 의미한다. 실무자는 SOTA 모델이 출시될 때마다 기존 자동화 로직을 수정하지 않고 모델 ID만 바꿔 성능을 테스트할 수 있어, 재개발 비용 없이 최신 성능을 적용할 수 있다.
노트북 환경에서 검증을 마친 에이전트는 AgentCore CLI를 통해 Bedrock AgentCore Runtime에 배포한다. 이 환경에서는 사용자별 독립 실행 환경을 제공하는 세션 격리형 관리 서비스로 운영된다. MicroVM 환경이 서비스 레벨에서 자동 관리되므로 가상 머신 생성이나 네트워크 설정 같은 인프라 공수가 사라지며, 개발자는 프롬프트 최적화와 도구 활용 전략 고도화에만 집중할 수 있다.
웹 리서치 중 AI가 맥락을 놓치는 현상은 결국 컨텍스트 과부하라는 물리적 한계 때문이다. Bedrock AgentCore는 MicroVM 기반의 서브 에이전트로 이 부하를 분산하고 병렬 처리를 통해 실행 시간을 최대 3배 단축한다. 이제 리서치 대상 사이트 수에 맞춰 서브 에이전트 규모를 결정하는 것이 워크플로 최적화의 핵심 판단 기준이 된다. CloudWatch와 LangSmith로 병목 구간을 찾아 타임아웃 설정을 조정하는 것부터 최적화를 시작하면 된다.




