범용 LLM 중심 LaunchPilot Agent Core 방향
먼저 보는 결론
Google ADK는 LangChain으로 교체한다. 정확한 지표는 기존 Elasticsearch Tool로 조회한다. RAG는 큰 문서 검색에만 선택적으로 사용한다. LangGraph는 기존 실행 코드가 실제로 복잡할 때 도입한다.
| 기술 |
현재 판단 |
| LangChain |
ADK 대신 도입 |
| RAG |
큰 암묵지·트렌드 자료에 선택적으로 사용 |
| LangGraph |
바로 도입하지 않고 기존 Workflow와 비교 후 결정 |
| Gemini |
전환 중에는 유지 |
| Elasticsearch·상태 저장 |
기존 구조 유지 |
1. LangChain·RAG·LangGraph의 역할과 Trade-off
세 기술은 서로 대체 관계가 아니다.
LangChain
= LLM과 Tool을 연결
RAG
= 많은 문서에서 관련 자료를 검색
LangGraph
= 여러 작업의 실행 순서와 상태를 관리
LangChain
LaunchPilot에서 맡길 역할:
- Gemini 호출
- 기존 Elasticsearch Tool 연결
- Tool 호출 결과를 다시 LLM에게 전달
- Pydantic 기반 구조화 출력
- 응답 streaming 연결
장점:
- Google ADK를 제거할 수 있다.
- 모델과 Tool 연결 방식을 한곳에 모을 수 있다.
- Gemini 외의 모델도 비교하기 쉬워진다.
- 기존 evidence Tool을 그대로 재사용할 수 있다.
단점:
- LangChain이라는 새로운 프레임워크 의존성이 생긴다.
- LangChain 전용 객체를 시스템 전체에서 사용하면 다시 교체하기 어려워진다.
- 고수준 Agent 기능을 과도하게 사용하면 실행 과정을 이해하기 어려울 수 있다.
따라서 LangChain은 모델·Tool 연결 경계 안에서만 사용한다.
우리 코드
→ LangChain
→ Gemini와 기존 Tool
RAG
LaunchPilot에서 맡길 역할:
- 큰 암묵지 문서 모음에서 관련 자료 검색
- 트렌드 자료에서 현재 질문과 관련된 근거 검색
- 검색한 자료와 출처를 LLM에게 제공
장점:
- 많은 문서를 매번 전부 LLM에게 보내지 않아도 된다.
- 관련 자료만 전달하므로 입력 크기와 비용을 줄일 수 있다.
- 최신 자료와 내부 자료를 모델 교체와 상관없이 사용할 수 있다.
- 답변에 출처를 연결하기 쉽다.
단점:
- 검색에 실패하면 필요한 자료가 있어도 LLM이 보지 못한다.
- 검색 결과 안에서만 답하게 만들면 범용성이 떨어질 수 있다.
- 문서 분할·색인·검색 품질을 별도로 관리해야 한다.
- 자료가 적을 때는 전체 첨부보다 오히려 복잡하다.
따라서 모든 질문에 RAG를 강제하지 않는다.
| 자료 |
제공 방법 |
| 정확한 마케팅 지표 |
Elasticsearch Tool 호출 |
| 작은 첨부 파일 |
전체 내용을 LLM에게 전달 |
| 과거 승인 계획 |
계획 ID로 직접 조회 |
| 큰 암묵지·트렌드 자료 |
RAG 검색 |
| 일반적인 아이디어 |
범용 LLM의 지식 활용 |
RAG의 기준:
자료가 너무 많아 전부 전달하기 어려울 때 관련 자료를 찾아주는 방법으로 사용한다.
LangGraph
LaunchPilot에서 맡길 수 있는 역할:
자료 조회
→ 답변 생성
→ 검증
→ 성공하면 전달
→ 실패하면 필요한 단계부터 재시도
장점:
- 현재 어떤 작업을 실행 중인지 확인하기 쉽다.
- 분기와 재시도 경로를 명시적으로 표현할 수 있다.
- 병렬 조회와 부분 실패를 관리하기 쉽다.
- checkpoint를 구성하면 실패 지점부터 이어서 실행할 수 있다.
단점:
- AI 답변 품질이 자동으로 좋아지지는 않는다.
- 응답 속도가 자동으로 빨라지지는 않는다.
- 기존
ConversationState 외에 실행 상태가 하나 더 생긴다.
- 현재 Python Workflow가 충분하다면 불필요한 복잡성이 된다.
도입 기준:
- 실행 순서를 이해하려면 여러 파일을 계속 따라가야 한다.
- 실패한 단계부터 다시 실행하기 어렵다.
- 병렬 조회와 부분 실패 코드가 복잡하다.
- 재시도와 사용자 승인 경로가 계속 늘어난다.
현재는 기존 Workflow를 유지한다. 위 문제가 실제로 확인되면 LangGraph와 비교한다.
2. 현재 구조와 목표 구조의 차이
현재
자체 Python Workflow
→ 역할별 Worker
→ Google ADK Agent
→ Gemini
↔ 기존 evidence Tool
→ Elasticsearch
현재 ADK의 역할:
- Gemini와 Tool 연결
- 역할별 Agent 실행
- 구조화 출력
- 실행 이벤트 전달
현재 ADK와 별개인 자산:
- Elasticsearch의 실제 조회와 계산
ConversationState
- Redis와 Elasticsearch 상태 저장
- Pydantic 데이터 형식
- 상태 변경 reducer
첫 번째 변경
자체 Python Workflow
→ 역할별 Worker
→ LangChain
→ Gemini
↔ 기존 evidence Tool
→ Elasticsearch
이 단계에서 ADK만 LangChain으로 교체한다.
유지:
- Gemini
- 역할별 Worker
- 기존 Python Workflow
- Elasticsearch와 evidence Tool
ConversationState
- Redis
- Pydantic 데이터 형식
장기 목표
사용자 질문
↓
교체 가능한 실행 관리
↓
범용 LLM
↕
LaunchPilot의 데이터와 Tool
↓
검증·사용자 승인·상태 저장
장기적으로 역할별 Agent와 Workflow 방식도 고정 자산으로 보지 않는다. 실제 품질과 성능에 따라 바꿀 수 있어야 한다.
3. 현재 구조에서 목표 구조로 가는 순서
1단계: ADK를 LangChain으로 교체
다른 구성은 유지한다. 같은 질문·모델·데이터로 결과를 비교한 후 ADK를 완전히 제거한다.
2단계: 역할별 Agent 재평가
역할별 Agent 여러 개
vs
범용 LLM 하나 + 필요한 Tool
다음 조건을 비교한다.
- 근거와 수치 정확성
- 답변 품질
- LLM 호출 수
- 전체 응답 시간
- 프롬프트와 Agent 유지보수 비용
범용 LLM 하나로 품질이 유지되면 불필요한 역할을 줄인다.
3단계: RAG 확대 여부 결정
작은 자료는 전체를 전달한다. 자료가 커져 입력 비용·검색·출처 관리 문제가 생길 때 RAG를 확대한다.
4단계: LangGraph 도입 여부 결정
기존 Workflow의 분기·재시도·부분 실패 관리가 실제로 복잡해질 때 LangGraph와 비교한다.
4. 정확한 마케팅 지표는 어떻게 처리하는가
정확한 지표는 RAG가 아니라 기존 Elasticsearch Tool로 처리한다.
사용자
“지난주 TikTok 참여율이 어땠어?”
LLM
필요한 지표와 채널 판단
LangChain
기존 지표 Tool 호출
Elasticsearch Tool
지표 조회와 증가율 계산
LLM
계산 결과 설명
| 역할 |
담당 |
| 질문 이해 |
범용 LLM |
| Tool 연결 |
LangChain |
| 지표 조회와 계산 |
기존 Elasticsearch Tool |
| 사용자·캠페인 범위 제한 |
기존 시스템 코드 |
| 결과 설명 |
범용 LLM |
LLM은 숫자를 직접 계산하지 않는다. 이미 계산된 결과를 해석하고 설명한다.
5. 기존 상태와 LangGraph 상태의 차이
현재 ConversationState는 여러 대화에 걸친 사용자 업무 상태를 기억한다.
현재 업무 단계
지난 분석 결과
승인된 계획
다음 확인 시점
이 정보는 Redis와 Elasticsearch에 저장된다.
LangGraph 상태는 질문 하나를 처리하는 동안의 실행 상태다.
지표 조회 완료
트렌드 조회 실패
답변 검증 중
재시도 1회
둘은 대체 관계가 아니다.
장기 사용자 업무 상태
→ ConversationState + Redis + Elasticsearch
단기 실행 상태
→ LangGraph 상태
LangGraph를 도입하더라도 기존 상태 저장은 유지한다.
6. 우리가 이 방향을 선택한 이유
LaunchPilot은 다음 루프를 돕는 서비스다.
현재 지표 확인
→ 원인 가설
→ 다음 행동 결정
→ 계획 저장
→ 실제 결과 확인
AI와 시스템의 책임을 다음처럼 나눈다.
| 역할 |
담당 |
| 자료를 찾고 해석하며 대안을 제안 |
범용 LLM |
| 실제 행동을 선택하고 승인 |
사용자 |
| 수치 계산, 권한 확인, 상태 저장 |
시스템 코드 |
핵심 원칙:
열린 해석은 LLM이 하고, 정확해야 하는 사실·계산·권한·저장은 코드가 한다.
7. 변하지 않는 자산과 바꿀 수 있는 부분
계속 축적할 자산
- Elasticsearch의 마케팅 데이터
- 트렌드와 마케터 암묵지
- 기존 evidence Tool
- 사용자별 캠페인 맥락
- 승인된 계획과 실제 결과
ConversationState
- Pydantic 데이터 형식
- 검증 규칙과 평가 사례
필요에 따라 바꿀 수 있는 부분
- 사용하는 LLM
- 프롬프트
- 역할별 Agent 구성
- RAG 검색 방식
- 자체 Workflow 또는 LangGraph
- 모델과 Tool을 연결하는 프레임워크
좋은 구조의 기준:
모델·Agent·Workflow를 바꿔도 데이터·상태·Tool·평가 기준은 다시 만들지 않아야 한다.
8. 성공 기준
1차 전환
- Google ADK 의존성과 import가 완전히 제거된다.
- 기존 Elasticsearch 지표 조회가 동일하게 동작한다.
- 사용자 상태와 승인 기록이 유지된다.
- 기존 Pydantic 출력 형식을 통과한다.
- 기존보다 근거와 수치 정확도가 낮아지지 않는다.
장기 방향
- 새로운 모델을 연결해도 데이터와 상태 코드를 바꾸지 않는다.
- 새로운 Tool을 추가해도 전체 Agent 구조를 다시 만들지 않는다.
- 동일한 평가 사례로 모델과 Agent 구조를 비교할 수 있다.
- LLM 호출 수와 응답 시간이 불필요하게 증가하지 않는다.
- 프롬프트와 Agent 개수가 필요 이상으로 늘어나지 않는다.
결론
LangChain
= ADK를 대신해 LLM과 Tool을 연결
RAG
= 큰 문서 집합에 선택적으로 사용
LangGraph
= 실행 Workflow가 복잡할 때 도입 검토
이 기술들은 LaunchPilot의 중심 자산이 아니다.
중심 자산
= 데이터
+ Tool
+ 사용자 기억
+ 계획과 결과
+ 검증 기준
Google ADK 제거와 LangChain 전환은 이 장기 구조로 가기 위한 첫 단계다.
범용 LLM 중심 LaunchPilot Agent Core 방향
먼저 보는 결론
1. LangChain·RAG·LangGraph의 역할과 Trade-off
세 기술은 서로 대체 관계가 아니다.
LangChain
LaunchPilot에서 맡길 역할:
장점:
단점:
따라서 LangChain은 모델·Tool 연결 경계 안에서만 사용한다.
RAG
LaunchPilot에서 맡길 역할:
장점:
단점:
따라서 모든 질문에 RAG를 강제하지 않는다.
RAG의 기준:
LangGraph
LaunchPilot에서 맡길 수 있는 역할:
장점:
단점:
ConversationState외에 실행 상태가 하나 더 생긴다.도입 기준:
현재는 기존 Workflow를 유지한다. 위 문제가 실제로 확인되면 LangGraph와 비교한다.
2. 현재 구조와 목표 구조의 차이
현재
현재 ADK의 역할:
현재 ADK와 별개인 자산:
ConversationState첫 번째 변경
이 단계에서 ADK만 LangChain으로 교체한다.
유지:
ConversationState장기 목표
장기적으로 역할별 Agent와 Workflow 방식도 고정 자산으로 보지 않는다. 실제 품질과 성능에 따라 바꿀 수 있어야 한다.
3. 현재 구조에서 목표 구조로 가는 순서
1단계: ADK를 LangChain으로 교체
다른 구성은 유지한다. 같은 질문·모델·데이터로 결과를 비교한 후 ADK를 완전히 제거한다.
2단계: 역할별 Agent 재평가
다음 조건을 비교한다.
범용 LLM 하나로 품질이 유지되면 불필요한 역할을 줄인다.
3단계: RAG 확대 여부 결정
작은 자료는 전체를 전달한다. 자료가 커져 입력 비용·검색·출처 관리 문제가 생길 때 RAG를 확대한다.
4단계: LangGraph 도입 여부 결정
기존 Workflow의 분기·재시도·부분 실패 관리가 실제로 복잡해질 때 LangGraph와 비교한다.
4. 정확한 마케팅 지표는 어떻게 처리하는가
정확한 지표는 RAG가 아니라 기존 Elasticsearch Tool로 처리한다.
LLM은 숫자를 직접 계산하지 않는다. 이미 계산된 결과를 해석하고 설명한다.
5. 기존 상태와 LangGraph 상태의 차이
현재
ConversationState는 여러 대화에 걸친 사용자 업무 상태를 기억한다.이 정보는 Redis와 Elasticsearch에 저장된다.
LangGraph 상태는 질문 하나를 처리하는 동안의 실행 상태다.
둘은 대체 관계가 아니다.
LangGraph를 도입하더라도 기존 상태 저장은 유지한다.
6. 우리가 이 방향을 선택한 이유
LaunchPilot은 다음 루프를 돕는 서비스다.
AI와 시스템의 책임을 다음처럼 나눈다.
핵심 원칙:
7. 변하지 않는 자산과 바꿀 수 있는 부분
계속 축적할 자산
ConversationState필요에 따라 바꿀 수 있는 부분
좋은 구조의 기준:
8. 성공 기준
1차 전환
장기 방향
결론
이 기술들은 LaunchPilot의 중심 자산이 아니다.
Google ADK 제거와 LangChain 전환은 이 장기 구조로 가기 위한 첫 단계다.