[ 플레이데이터 SK네트웍스 Family AI 캠프 ]

플레이데이터 SK네트웍스 Family AI 캠프 12기] 14주차 회고

AA_D 2025. 6. 8. 15:31

🗓️기간

14주차 : 2025.05.26~2025.05.30 ( 5월 5주 )

 

#. 한 주를 보내며...
이번 주에는 RAG 시스템의 핵심 요소 중 하나인 LangChain의 심화 기능, 특히 Runnable Agent에 대해 집중적으로 학습했다. 이전까지는 단일 Chain이나 Tool을 통해 기능을 분리해왔다면, 이번에는 다양한 기능들을 유연하게 조합하고 관리할 수 있는 실행형 에이전트 구조를 실습하며 한 단계 도약하는 느낌을 받았다.

1. 좋았던 점
LangChain 최신 구조에 대한 감 잡기: LCEL(LangChain Expression Language)와 Runnable 구조를 실습하면서 이전보다 훨씬 직관적인 흐름과 모듈화된 구조로 체계를 잡을 수 있었다.

도메인 분기 처리에 유용함: FM(축구선수)과 HR(내부자료) 질문을 자동으로 분류하고, 각각의 Tool 또는 RAG 체인을 실행하는 구조를 하나의 Agent에서 다룰 수 있어 현실적인 QA시스템 설계가 가능하다는 확신이 생겼다.

실행 방식의 자유도 향상: .invoke()로 단일 실행도 가능하고, 향후 .stream()으로 변경해 Streamlit UI와 실시간 연동도 가능하다는 점이 인상적이었다.

2. 개선점
Tool 구성과 분리 기준이 여전히 애매함: 단일 Tool과 Chain, AgentExecutor 사이의 경계를 구분짓는 기준이 명확하지 않아 설계할 때 혼란이 있었다.

메모리 처리 구조에 대한 이해 부족: 멀티턴 대화를 위한 Memory 모듈의 적용 시점과 방법에 대해 여전히 개념이 약한 편이라 정리할 필요가 있다.

Streamlit과의 연계 실습 부족: RunnableAgent를 Streamlit으로 연동하는 UI 구현은 아직 손대지 못했기 때문에, 다음 주에는 꼭 UI 흐름까지 만들어보고 싶다.

3. 학습내용 및 예제
학습 내용

LangChain Expression Language(LCEL)의 구성

Runnable 구조 (RunnableMap, RunnableLambda, RunnableSequence)

AgentExecutor 설정 및 Tool Wrapping

질문 분류기(Classifier) → 체인 실행기 → LLM 응답 흐름 구성

예제 실습

OpenAI(gpt-4o-mini)를 기본 LLM으로 설정

내부 문서 질의는 RAG 툴로, 외부 검색은 네이버 API Tool로 처리

입력된 질문을 domain_classifier()로 FM/HR 분기 → 해당 Tool 실행 → 답변 반환

4. 15주차의 목표
 Streamlit 기반 UI에 Runnable Agent 연결

 LangGraph와의 차이점 분석 → 구조적으로 어떤 시점에 LangGraph를 써야 하는지 기준 정립

 Tool 모듈화 및 기능 분리: FM/HR 도메인에 맞는 Tool 관리 및 리팩토링

 멀티턴 대화 흐름 구현 (ChatHistory 포함)

 Agent 응답에 따라 조건부 Tool 선택 흐름 완성 (예: 내부자료 없으면 외부 API 사용)