핵심 요약
기존의 규칙 기반 챗봇은 자연어 이해도가 낮고, 단순 LLM은 대화 상태 유지와 비즈니스 로직 실행에 한계가 있다. 이 아티클은 Amazon Bedrock의 Claude 3.5 모델을 핵심 지능으로 사용하고, LangGraph를 통해 복잡한 대화 흐름을 제어하는 서버리스 에이전트 아키텍처를 제안한다. Amazon DynamoDB로 대화 상태를 관리하고, MLflow를 통해 에이전트의 추론 과정과 도구 사용을 실시간으로 추적하여 운영 가시성을 확보한다. 이를 통해 주문 조회 및 취소와 같은 실제 비즈니스 프로세스를 수행할 수 있는 신뢰성 높은 AI 시스템을 구축할 수 있다.
배경
AWS 계정 및 Amazon Bedrock(Claude 3.5 Sonnet) 접근 권한, Python 3.12 이상 및 Node.js 20 이상, AWS CDK 및 Docker 설치, 서버리스 아키텍처 및 기본 Python/React 지식
대상 독자
AWS 환경에서 프로덕션 수준의 LLM 에이전트를 구축하려는 개발자 및 아키텍트
의미 / 영향
이 아키텍처는 단순한 질의응답을 넘어 실제 비즈니스 트랜잭션을 처리하는 AI 에이전트의 표준 모델을 제시한다. 서버리스 구조를 통해 비용 효율성을 확보하면서도 MLflow를 통한 강력한 관측 가능성을 제공하여 기업용 AI 서비스의 신뢰성 문제를 해결한다.
섹션별 상세

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: boolLangGraph에서 대화 흐름 전반에 걸쳐 유지되는 상태 객체의 구조 정의

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 messageLLM의 도구 사용 요청을 처리하고 결과를 메시지 형식으로 변환하는 함수
# 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을 설정하는 코드

실무 Takeaway
- LangGraph를 활용해 대화 흐름을 그래프 구조로 설계하면 LLM의 자유로운 대화 능력과 비즈니스 규칙의 엄격한 준수를 동시에 달성할 수 있다.
- Amazon DynamoDB에 대화 상태를 영구 저장함으로써 시스템 재시작이나 중단 상황에서도 끊김 없는 사용자 경험을 제공할 수 있다.
- MLflow의 트레이싱 기능을 적용하면 복잡한 에이전트의 내부 작동 과정을 단계별로 시각화하여 병목 구간을 파악하고 응답 품질을 개선할 수 있다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.