본문으로 건너뛰기

Amazon Bedrock과 LangGraph, MLflow를 활용한 서버리스 대화형 AI 에이전트 구축 가이드

Amazon Bedrock, LangGraph, MLflow를 결합하여 상태 유지와 도구 사용이 가능한 고성능 서버리스 대화형 AI 에이전트를 구축하고 모니터링하는 방법을 제시한다.

섹션별 상세

01
기존 고객 서비스 자동화의 한계인 규칙 기반 시스템의 경직성과 LLM의 상태 관리 부재를 해결하기 위해 에이전트 아키텍처를 도입했다. 에이전트는 LLM의 자연어 처리 능력에 구조화된 워크플로와 외부 도구 통합을 결합하여 복잡한 다단계 비즈니스 프로세스를 수행한다.
Amazon Bedrock, Lambda, DynamoDB, SageMaker 등을 포함한 전체 AWS 서버리스 아키텍처 다이어그램
Diagram사용자 클라이언트부터 API Gateway를 거쳐 Lambda가 비즈니스 로직을 처리하고, Bedrock과 RDS 등 외부 서비스와 통신하는 전체 인프라 구조를 상세히 나타낸다. VPC 내의 보안 구성과 관리형 MLflow의 통합 위치를 명확히 보여준다.
02
대화 흐름은 LangGraph를 사용하여 진입 의도 파악(Entry Intent), 주문 확인(Order Confirmation), 해결(Resolution)의 세 단계 노드로 구성된 유향 그래프로 설계되었다. 각 노드는 독립적인 비즈니스 로직을 처리하며, 조건부 라우팅을 통해 사용자 입력에 따라 동적으로 다음 단계를 결정한다.
python
class State(TypedDict):
    messages: list
    transcript: list
    session_id: str
    order_number: str
    session_end: bool
    current_turn: int
    next_node: str
    order_confirmed: bool
    order_info_found: bool

LangGraph에서 대화 흐름 전반에 걸쳐 유지되는 상태 객체의 구조 정의

진입 의도 파악부터 주문 확인, 해결 단계로 이어지는 고객 서비스 워크플로 다이어그램
Diagram에이전트가 사용자 입력을 받아 의도를 분석하고, 주문 정보를 확인한 뒤 최종적으로 요청을 해결하는 논리적 흐름을 보여준다. LangGraph로 구현된 각 노드 간의 전이 과정을 시각화하여 전체 시스템의 작동 방식을 설명한다.
03
Amazon Bedrock의 Claude 3.5 Sonnet 모델은 의도 인식, 엔티티 추출, 도구 사용 결정 등 지능 계층 역할을 수행한다. JSON 스키마로 정의된 도구를 통해 Amazon RDS에 저장된 고객 및 주문 데이터를 조회하거나 수정하는 등 실제 시스템과 상호작용한다.
python
def use_tool(messages):
    tool_use = messages[-1]["content"][-1].get("toolUse")
    if tool_use:
        tool_name = tool_use["name"]
        tool_input = tool_use["input"]
        tool_result = _process_tool_call(tool_name, tool_input)
        message = {
            "role": "user",
            "content": [
                {
                    "toolResult": {
                        "toolUseId": tool_use["toolUseId"],
                        "content": [{"text": json.dumps(tool_result)}],
                        "status": "success",
                    }
                }
            ],
        }
        return message

LLM의 도구 사용 요청을 처리하고 결과를 메시지 형식으로 변환하는 함수

04
대화의 연속성을 위해 Amazon DynamoDB를 상태 저장소로 활용하여 세션 ID, 대화 이력, 추출된 주문 번호 등을 유지한다. TTL 기능을 적용하여 비활성 대화를 자동으로 만료시킴으로써 저장 비용을 최적화하고 보안을 강화했다.
python
# Save conversation state to DynamoDB
ttl_value = int(time.time()) + (3600 * 4) # 4 hrs
item = {
    'conversationId': session_id,
    'state': json.dumps(state_dict),
    'chat_status': state_dict['session_end'],
    'update_ts_pst': str(datetime.now(pst)),
    'ttl': ttl_value,
    'timestamp': int(time.time())
}
ddb_table.put_item(Item=item)

대화 상태를 Amazon DynamoDB에 저장하고 4시간의 TTL을 설정하는 코드

05
Amazon SageMaker AI에서 관리되는 MLflow를 도입하여 에이전트의 비결정론적 특성과 복잡한 추론 체인을 모니터링한다. @mlflow.trace 데코레이터를 사용하여 각 노드의 실행 시간, 토큰 사용량, 도구 호출 결과 등을 시각화함으로써 성능 최적화와 디버깅을 지원한다.
MLflow UI에서 에이전트의 실행 단계별 지연 시간과 입력 파라미터를 추적하는 화면
ScreenshotLangGraph의 각 노드 실행 시간과 도구 호출 내역이 타임라인 형태로 표시되어 성능 병목 지점을 한눈에 파악할 수 있다. 실제 대화 세션의 컨텍스트와 모델 응답을 상세히 기록하여 디버깅 및 품질 평가에 활용되는 모습을 보여준다.

용어 해설

랭그래프(LangGraph)
LangChain 생태계의 라이브러리로, 순환 구조를 가진 상태 저장 멀티 에이전트 애플리케이션을 구축하기 위한 프레임워크이다. 대화 흐름을 그래프의 노드와 엣지로 정의하여 복잡한 논리 구조를 명시적으로 제어할 수 있게 한다.
에이전트 워크플로(Agentic Workflow)
LLM이 단순히 텍스트를 생성하는 것을 넘어, 스스로 도구를 선택하고 계획을 세우며 외부 시스템과 상호작용하여 목표를 달성하는 자율적인 작업 흐름이다. 단순한 프롬프트 입출력보다 높은 수준의 추론과 실행 능력을 요구한다.
함수 호출(Function Calling)
LLM이 외부 API나 데이터베이스를 조작하기 위해 필요한 인자값을 구조화된 데이터 형태로 생성하는 기술이다. 모델이 직접 코드를 실행하는 대신 실행에 필요한 명세(JSON)를 제공하여 시스템의 안전성과 정확성을 높인다.
관측 가능성(Observability)
시스템의 외부 출력을 통해 내부 상태와 작동 과정을 얼마나 잘 파악할 수 있는지를 나타내는 척도이다. AI 에이전트에서는 모델의 추론 단계, 지연 시간, 토큰 사용량, 도구 호출 결과 등을 추적하여 성능을 최적화하는 데 필수적이다.

기술

  • Amazon Bedrock
  • LangGraph
  • MLflow
  • AWS Lambda
  • Amazon DynamoDB
  • Amazon SageMaker AI
  • Amazon RDS

활용 사례

  • 고객 서비스 자동화
  • 주문 관리 시스템
  • 상태 유지형 대화 에이전트
  • 실시간 비즈니스 로직 실행 챗봇
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 03. 03.수집 2026. 03. 03.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.