[AI]3단계_서비스_아키텍처_모듈화_성향기반_익명닉네임_생성 - 100-hours-a-week/12-marong-Wiki GitHub Wiki

3단계_서비스_아키텍처_모듈화_성향기반_익명닉네임_생성

✅ 전체 시스템 아키텍처


2. 각 모듈의 책임(domain) 및 기능 설명


nickname.py (MVP: 익명 닉네임 생성 메인 API)

FastAPI 기반으로 구성된 이 모듈은 사용자의 성향(MBTI) 및 취미 데이터를 기반으로
대형 언어 모델(LLM)을 호출하여 감성적이고 익명성이 있는 닉네임을 생성합니다.
LangChain, RAG, MCP 등 다양한 AI 컴포넌트들과 연결되도록 설계되었습니다.


1. 입력 방식 (POST)

  • 엔드포인트: /ai/nickname/generate
  • 요청 방식: POST
입력 파라미터
파라미터명 타입 설명
user_id str 사용자 고유 식별자
mbti str MBTI 유형 (예: INFP, ESTJ)
hobby str 사용자 취미 키워드 (예: 독서, 여행)

2. 내부 모듈 및 모델 구성

이 API는 다음과 같은 서브모듈 및 컴포넌트와 함께 동작합니다:

  • InputParsing
    사용자의 MBTI 및 취미 데이터를 템플릿화된 자연어 프롬프트로 구조화

  • LangChain PromptTemplate
    닉네임 생성을 위한 감성 프롬프트 구성 (조건: 익명성, 감성 표현, 길이 제한 등)

  • LLMInvocation
    LangChain을 통해 LLM을 호출하고, MCP를 기반으로 적절한 모델(Gemma, LLaMA 등)을 선택하여 생성

  • FilteringModule
    생성된 닉네임 리스트에서 욕설, 조건 불충족 항목, 중복 결과를 필터링

  • RAG Retrieval
    기존 닉네임 DB 또는 유사 사용자 데이터로부터 생성 결과를 보강

  • MCP (Model Control Pipeline)
    생성 상황, 입력 조건에 따라 가장 적절한 언어모델을 자동으로 선택


3. 출력 결과 예시

{
  "user_id": "user123",
  "nicknames": [
    "사색하는별빛",
    "감성탐험가",
    "책읽는여행자"
  ]
}

3. 모듈 간 인터페이스 설계

출발 → 도착 방식 포맷 설명
Frontend → Backend REST JSON 사용자 입력 전달
Backend → Gateway 내부 REST JSON 보안 인증 후 라우팅
Gateway → Input Parser 내부 호출 Dict 구조화된 입력 가공
Parser → LangChain Chain API PromptTemplate 템플릿 기반 LLM 호출 구성
LangChain ↔ MCP 설정 객체 Dict 모델 선택 및 파라미터 전달
LangChain ↔ RAG 벡터 검색 문장 리스트 유사 닉네임 데이터 제공
LangChain → LLM Prompt 호출 텍스트 닉네임 생성 요청
LLM → Filter 문자열 리스트 문자열 배열 결과 정제
Filter → LangChain 상태 코드 Bool 재생성 여부 전달
Backend → Dataset 로그 저장 JSON 전체 요청/응답 기록
Dataset → Semantic Similarity 검색 + 비교 벡터 입력 문장 기반 MBTI 예측
Semantic Similarity → Processing 내부 호출 ChatML 포맷 추론 결과 정제

4. 모듈화로 기대되는 효과

항목 효과
🔧 유지보수성 각 기능이 독립되어 수정 및 테스트가 용이함
🧪 실험 유연성 모델, 프롬프트, 필터링 등 개별 실험 가능
🔁 재사용성 LangChain, MCP, Filtering 모듈은 다른 AI 프로젝트에서도 사용 가능
📈 확장성 추후 감정 기반 추천, 스타일 필터 기능 추가 용이
🔐 보안성 Gateway 중심 구조로 인증/트래픽 관리 강화
🧠 학습 고도화 Dataset 로그 기반 사용자 행동 분석 가능

5. 모듈화 구조가 시나리오에 적합한 이유

  • 사용자 성향 기반 익명 닉네임 생성이라는 목적은 다양한 입력(MBTI, 취미, 문장)을 다루며, 프롬프트 구성·LLM 호출·후처리 등 복잡한 처리 과정이 요구됨
  • 따라서 각 처리 단계를 독립 모듈로 나눠야 확장성실험 유연성이 확보됨
  • 모델(MCP), 추천 맥락(RAG), 필터링 등은 서로 영향을 주기 때문에 모듈화 없이 복잡도가 높아짐
  • 이 구조는 실시간 응답, 자동 성향 분석, 생성 품질 개선 등 복합 목적에 모두 대응 가능한 구조임