LangGraph와 Strands 기반의 시장 감시 에이전트 구조

금융 서비스 산업의 시장 감시 시스템은 거래 패턴 분석과 의심 활동 조사를 위해 여러 전문 에이전트를 조율하며 엄격한 규제 준수와 신뢰성 표준을 유지한다. 기존의 단일 에이전트 방식은 전문 지식이 필요하거나 동적 의사결정과 견고한 오류 복구가 요구되는 복잡한 비즈니스 프로세스를 처리하는 데 한계가 있다. 특히 금융 규제 환경에서는 모든 단계를 LLM에 맡기기보다 정해진 절차를 따르는 것이 중요하므로 결정론적 오케스트레이션이 국소적인 동적 지능을 수용하는 멀티 에이전트 구조를 도입했다.

LangGraph(랭그래프, 워크플로 제어 도구)는 전체 워크플로의 상위 수준 오케스트레이션을 담당한다. 전체적인 흐름을 결정론적으로 제어하여 금융 규제에서 요구하는 절차적 정당성을 확보하는 뼈대 역할을 수행한다. 워크플로의 각 단계는 노드로 정의되며 시스템이 설계된 경로를 정확히 따라 움직이도록 강제한다. 이는 LLM이 임의로 단계를 건너뛰거나 잘못된 방향으로 추론하는 위험을 방지하고 전체 프로세스의 일관성을 보장한다.

개별 노드 내부의 지능적 추론은 Strands(스트랜즈, 추론 엔진) 에이전트가 수행한다. 복잡한 워크플로 중 LLM(대규모 언어 모델)의 심층 분석이 필요하거나 모호함을 해결해야 하는 특정 노드에 Strands 에이전트를 배치한다. 이 에이전트들은 유연성이 엄격하게 요구되는 지점에서만 자율적 추론과 도구 사용 능력을 발휘하며 독립적인 지능을 수행한다. 매크로 수준의 제어와 마이크로 수준의 추론을 분리함으로써 시스템의 예측 가능성과 유연성을 동시에 확보하는 구조를 완성했다.

Amazon Bedrock AgentCore(아마존 베드락 에이전트코어, 에이전트 배포 서비스)는 이러한 에이전트들을 대규모로 배포하고 운영하는 완전 관리형 인프라를 제공한다. AgentCore 런타임은 로컬 에이전트 코드를 최소한의 설정으로 클라우드 네이티브 환경에 배포하며 컨테이너화와 네트워킹 및 컴퓨팅 프로비저닝을 자동으로 처리한다. 이 서비스는 프레임워크에 구애받지 않는 특성을 가지며 LangGraph와 Strands를 즉시 지원한다. 긴 조사가 필요한 워크로드에는 확장된 런타임을 제공하고 인터랙티브 워크플로에는 낮은 지연 시간을 보장하며 수요에 따라 자동으로 확장하는 기능을 갖췄다. 개발자는 AgentCore Python SDK(파이썬 소프트웨어 개발 키트)와 스타터 툴킷을 사용해 LangGraph 오케스트레이터와 Strands 에이전트를 실제 생산 환경에 배포한다.

Strands의 모델 독립적 추론 루프와 도구 통합 방식

LLM 제공자에 상관없이 동일한 추론 루프를 유지하려는 개발자는 Strands의 모델 독립적 아키텍처를 활용한다. Strands는 전체 워크플로의 뼈대 사이에서 실질적인 판단을 내리는 지능형 엔진으로 작동하며, 특정 벤더의 API 업데이트나 모델 교체 시에도 추론 로직을 수정할 필요가 없다. 이는 인프라 종속성을 낮추면서 최신 모델의 성능을 즉시 반영할 수 있는 유연성을 제공한다. 특히 데이터 발견과 검색 과정을 엄격히 분리해 모델이 임의로 정보를 지어내는 환각 현상과 외부 입력값으로 시스템을 조작하는 인젝션 공격을 방어한다. 구체적으로는 리포트 목록을 확인하는 `get_report_list`와 데이터 구조를 파악하는 `get_report_schema` 같은 도구를 순차적으로 호출해 데이터에 접근한다.

도구 통합의 효율을 높이기 위해 Model Context Protocol(MCP, 모델이 외부 도구와 데이터를 일관된 방식으로 주고받게 하는 표준 규약)을 적용했다. MCP 통합을 통해 에이전트는 복잡한 설정 없이도 다양한 외부 리소스에 연결되며, 세션 관리 기능을 통해 사용자별 상태를 독립적으로 유지한다. 또한 종합적인 관찰 가능성(Observability, 시스템 내부 상태를 외부에서 파악할 수 있게 하는 능력) 기능을 제공해 추론 과정의 모든 단계와 도구 호출 이력을 투명하게 기록한다. 여기에 모델의 응답 톤이나 제약 사항을 세밀하게 조정하는 스티어링 컨트롤(모델의 응답 방향을 세밀하게 조정하는 제어 장치)과 안전 가드레일을 결합했다. 이는 LLM의 비결정론적인 특성, 즉 매번 답이 달라질 수 있는 불안정성을 제어하고 정해진 도구 사용 순서를 따르게 만드는 실질적인 제어 계층으로 작동한다.

실제 데이터 추출 과정은 모델이 바로 쿼리를 짜지 않고 단계적 확인 과정을 거치는 루프로 구성된다. 먼저 리포트 목록을 식별하고, 선택한 리포트의 스키마를 통해 컬럼명과 데이터 타입을 정확히 읽어 들인 뒤에야 `run_report`를 실행해 SQL 쿼리를 수행한다. 모델이 데이터 구조를 정확히 인지한 상태에서만 쿼리를 생성하게 함으로써 런타임 에러를 줄이고 결과의 신뢰도를 높였다. 이는 모델의 지능에만 의존하지 않고 도구 호출의 순서를 논리적으로 격리해 데이터 접근의 정확성을 확보하는 전략이다.

추론 루프의 성능을 검증하기 위해 내장된 평가 기능을 활용한다. 모델이 도구를 호출한 순서가 적절했는지, 최종 결과값이 스키마와 일치하는지를 정량적으로 측정해 추론 경로를 최적화한다. 이는 단순히 모델의 답변이 자연스러운지를 보는 것이 아니라, 도구 통합 과정에서 발생한 논리적 오류를 추적하고 수정하는 디버깅 과정에 가깝다. 이러한 평가 체계는 모델을 교체했을 때 기존의 추론 성능이 유지되는지 빠르게 판단하는 기준이 되며, 실제 운영 환경에서 에이전트의 신뢰성을 보장하는 근거가 된다.

단일 에이전트(Monolithic) 대비 노드별 에이전트(Nodal)의 이점

단일 거대 에이전트는 시스템 프롬프트에 포함된 지침이 많아질수록 특정 명령을 누락하거나 수행 능력이 저하된다. 한 명의 작업자에게 수십 가지의 세부 매뉴얼을 동시에 주고 모든 상황에 대응하라고 요구하는 것과 같다. 지침이 서로 충돌하거나 컨텍스트 창이 가득 차면 에이전트는 우선순위를 놓치고 엉뚱한 도구를 호출하는 오류를 빈번하게 범한다.

이를 해결하기 위해 개별 노드에 에이전트를 배치해 메모리를 격리하는 방식을 쓴다. 각 전문가는 LangGraph(워크플로를 그래프 형태로 관리하는 상태 머신)의 개별 노드로 정의된다. 노드가 활성화되면 해당 작업에 최적화된 시스템 프롬프트와 도구 세트를 가진 새로운 Strands 에이전트(지능적 추론 엔진)가 생성된다. 이 에이전트는 오케스트레이터가 부여한 단일 목적의 작업만 수행한 뒤 상태 업데이트 값을 반환하고 소멸한다. 이러한 선언적 접근 방식은 복잡한 다단계 추론 과정을 읽기 쉽고 유지보수가 가능한 코드로 변환한다.

메모리 관리의 핵심은 컨텍스트 격리와 공유 상태의 분리다. 개별 에이전트는 자신에게 할당된 좁고 집중된 컨텍스트와 도구 사용 이력만 관리하므로 정보 오염이 발생하지 않는다. LangGraph는 전체 세션의 공유 상태(Shared State)를 유지하며 각 노드가 반환한 부분 업데이트를 병합해 저장한다. 이후 단계의 노드들은 이 공유 상태에서 필요한 정보만 읽어와 작업을 수행하며, 이를 통해 컨텍스트 창이 넘치는 현상을 방지한다.

전체 흐름은 결정론적으로 제어하되 노드 내부에서만 동적 지능을 사용하는 구조다. LangGraph는 노드와 엣지로 구성된 방향 그래프를 통해 조건부 분기, 병렬 실행, 동적 라우팅을 수행하며 실행 경로를 명확히 규정한다. 반면 노드 내부의 Strands 에이전트는 추론 루프를 통해 도구 출력값을 지속적으로 평가하고 중간 결과에 따라 다음 행동을 결정한다. 예측 가능한 워크플로 경로 위에 국소적인 유연성을 배치해 신뢰성과 지능을 동시에 확보했다.

체크포인트와 AgentCore를 통한 생산 환경 신뢰성 확보

모든 노드 실행 직후 상태를 자동으로 스냅샷하여 저장하는 체크포인트 시스템은 워크플로의 중단 없는 복구를 가능하게 한다. 워크플로 중간에 예기치 못한 오류가 발생해도 전체 과정을 처음부터 다시 시작할 필요 없이 실패한 정확한 지점에서 복구할 수 있다. 이러한 상태 유지 기능은 분석가가 중간 결과물을 직접 확인하고 승인하거나 수정하는 Human-in-the-loop(인간 개입) 패턴을 구현하는 기술적 기반이 된다. 실무 관점에서 이는 단순한 오류 복구를 넘어, LLM의 판단이 불확실한 구간에 인간의 검토 단계를 강제함으로써 생산 환경의 신뢰도를 높이는 장치가 된다.

시스템의 지속 가능성을 위해 지수 백오프(Exponential Backoff, 요청 실패 시 재시도 간격을 기하급수적으로 늘려 서버 부하를 줄이는 방식) 기반의 재시도 전략을 기본으로 채택했다. API 호출 제한이나 일시적인 네트워크 장애로 인한 스로틀링 현상이 발생해도 시스템이 즉시 중단되지 않고 정해진 규칙에 따라 복구를 시도한다. 동시에 OpenTelemetry(오픈텔레메트리, 애플리케이션의 추적 데이터와 메트릭을 수집하는 오픈소스 표준)를 통해 관찰 가능성을 확보했다. 이를 통해 운영자는 복잡한 에이전트 워크플로 내에서 어떤 노드가 지연되는지, 어디서 데이터 누수가 발생하는지를 실시간으로 추적하고 대응할 수 있다.

로컬 환경에서 검증한 코드를 실제 서비스로 전환하는 과정에는 `AgentCore Runtime`이 사용된다. 이 런타임은 작성된 코드를 클라우드 네이티브 환경에 최적화하여 배포하며, 컨테이너화와 네트워킹 설정을 자동으로 처리해 배포 복잡도를 낮춘다. 개발자가 쿠버네티스 설정이나 네트워크 인터페이스 구성 같은 인프라 작업에 시간을 쏟지 않고 에이전트의 논리 구조에만 집중하게 만드는 구조다. `AgentCore Python SDK`는 이러한 런타임 배포와 확장 가능한 인프라 프로비저닝(Provisioning, 서버나 네트워크 자원을 자동으로 할당하고 설정하는 과정)을 수행하며, 실제 트래픽 증가에 따라 인프라 규모를 유연하게 조정하는 역할을 담당한다.

한국 금융 AI 실무자를 위한 도입 판단 기준

한국 금융권의 엄격한 컴플라이언스 기준을 충족하려면 LLM의 자율성에 모든 단계를 맡기지 않고 사전 정의된 결정론적 워크플로(Deterministic Workflow, 입력에 따라 결과 경로가 고정된 흐름)를 강제해야 한다. 금융 사고 방지를 위해 데이터가 정해진 경로로만 흐르도록 설계하여 감사 추적 가능성을 확보하는 방식이다. LLM은 특정 노드 내의 추론 엔진으로만 활용하고 전체 제어권은 오케스트레이션 계층이 관리하는 구조를 택한다. LLM의 답변이 매번 달라지는 비결정론적 특성을 제어하기 위해 오케스트레이션 계층이 가이드라인을 강제하는 구조가 필수적이다. 이는 예외 상황을 시스템 수준에서 원천 차단하여 규제 준수 리스크를 낮추는 실무적인 접근이다.

분석가가 중간 결과물을 직접 검토하는 휴먼 인 더 루프(Human-in-the-loop, 인간 개입) 패턴은 금융 AI 시스템의 신뢰도를 결정하는 실질적인 장치다. LangGraph의 체크포인트 시스템은 모든 노드 실행 후 전체 워크플로 상태를 자동으로 스냅샷하여 저장한다. 분석가가 중간 단계에서 계산 오류를 발견하거나 추가 검증이 필요할 때 시스템은 정확히 해당 체크포인트 지점에서 상태를 복구한다. 이전 작업 내용을 유지한 채 다시 시작할 수 있어 수 시간에서 수 일이 소요되는 장기 조사 업무나 반복적인 정교화 과정에서도 데이터 손실 없이 업무를 이어갈 수 있다. 이러한 상태 유지 아키텍처는 다회차 대화나 복잡한 조사 업무를 수행하는 금융 실무 환경의 요구사항을 충족한다.

인프라 구축 단계에서는 직접 서버를 구축하고 운영하는 비용보다 Amazon Bedrock AgentCore(에이전트 배포 및 관리형 서비스)와 같은 관리형 서비스가 제공하는 런타임 효율성을 먼저 검토해야 한다. 엔터프라이즈 애플리케이션이 요구하는 인프라 신뢰성과 관찰 가능성을 빠르게 확보하는 것이 우선이기 때문이다. 확장 가능한 생산 배포 환경을 구축하려면 AgentCore Python SDK를 활용해 에이전트를 배포하고 관리하는 방식이 유리하다. 이를 통해 복잡한 유스케이스를 처리하면서도 기업 수준의 안정성을 유지하는 생산 준비 완료(Production-ready) 시스템을 구축할 수 있다. 전체 솔루션의 구현 코드는 GitHub 저장소에서 확인할 수 있다.

단일 거대 에이전트에게 모든 지침을 부여하는 대신, 업무 단위로 노드를 분리하고 각 노드에 독립적인 프롬프트를 배치하는 노달(Nodal) 구조를 채택해 컨텍스트 격리를 구현하는 것이 가장 구체적인 실행 기준이다.