[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), 필터링 등은 서로 영향을 주기 때문에 모듈화 없이 복잡도가 높아짐
- 이 구조는 실시간 응답, 자동 성향 분석, 생성 품질 개선 등 복합 목적에 모두 대응 가능한 구조임