[AI]4단계_LangChain_기반_멀티스텝_AI구현_검토 - 100-hours-a-week/12-marong-Wiki GitHub Wiki
LangChain 기반 AI 추론 흐름 설계도
- 사용자 피드를 기반으로 MBTI 4개 축(E/I, S/N, T/F, J/P)을 각각 추론하고 점수를 업데이트
- 각 축별로 프롬프트 구성 -> LLM 호출 -> 결과 파싱 으로 구성된 체인 구조
Chroma + MiniLM → 유사 피드 Top-k 추출
↓
축별 반복:
↳ PromptTemplate 구성
↳ LLMChain (Gemma 3.4B) 실행
↳ OutputParser 결과 파싱
↓
모든 축 결과 통합하여 dict 반환
체인 내 사용 도구 및 외부 리소스
구성 요소 |
사용 도구/프레임워크 |
설명 |
피드 임베딩 |
sentence-transformers |
의미 기반 피드 벡터화 |
유사도 검색 |
ChromaDB |
입력 피드와 유사한 문장 k개 추출 |
프롬프트 템플릿 |
LangChain PromptTemplate |
각 축별로 질문과 예시 포함 프롬프트 생성 |
LLM 호출 |
HuggingFacePipeline (Gemma 3.4B) |
성격 분석 수행 |
체인 구성 |
LangChain LLMChain |
축별 추론 체인화 |
결과 파싱 |
Custom OutputParser |
점수, 변동, 이유 파싱 |
실제 구현 예시
prompt_template = PromptTemplate(
input_variables=["user_feed", "current_score", "examples"],
template="""
너는 심리학자야. 다음 피드 내용을 바탕으로 분석해줘.
기준 축: 외향성(E) vs 내향성(I)
기존 점수: {current_score}
유사 예시:
{examples}
사용자 피드:
{user_feed}
결과:
점수: (숫자)
"""
)
llm_chain = LLMChain(
llm=HuggingFacePipeline(pipeline=pipe),
prompt=prompt_template,
output_parser=MBTIOutputParser()
)
멀티스텝 체인 도입 시 기대효과
- MBTI는 축별 의미와 판단 기준이 모두 다르기 때문에, 프롬프트가 축마다 달라야함
- 단일 호출로는 이들 맥락을 모두 처리하기 어려워 체인 분리 필요
단일 모델 호출로 충분한 경우 및 확장 전략
- 사용자 피드 이력 누적 분석 체인: 시간에 따른 성향 변화 추적