Skip to content
This repository was archived by the owner on Mar 7, 2026. It is now read-only.

Latest commit

 

History

History
389 lines (300 loc) · 13.1 KB

File metadata and controls

389 lines (300 loc) · 13.1 KB

🧠 AI 모델 구조도 및 시스템 상호작용

📋 전체 시스템 아키텍처

graph TB
    subgraph "Client Layer"
        APP[📱 Mobile App<br/>React Native/Flutter]
        WEB[🌐 Web App<br/>Next.js]
    end
    
    subgraph "API Gateway Layer"
        MAIN[🚀 Main Server<br/>Node.js + Express<br/>Port: 3000]
        WS[🔌 WebSocket Server<br/>Real-time Events]
    end
    
    subgraph "AI Processing Layer"
        AI_SERVICE[🧠 AI Service<br/>src/services/ai.ts]
        BEDROCK[☁️ AWS Bedrock<br/>Claude 3 Sonnet]
        PERSONALIZATION[🎯 Personalization Engine<br/>4-Dimensional Model]
    end
    
    subgraph "Data Layer"
        DB[(🗄️ MariaDB<br/>Local on EC2)]
        S3[📦 AWS S3<br/>Images & Files]
        CACHE[⚡ Memory Cache<br/>User Context]
    end
    
    subgraph "User Context Processing"
        METADATA[👤 User Metadata<br/>Age, Gender, Education, Marital]
        CONTEXT_BUILDER[🔧 Context Builder<br/>buildUserContext()]
        PROMPT_ENGINE[📝 Prompt Engine<br/>Personalized Prompts]
    end
    
    %% Client to Server
    APP --> MAIN
    WEB --> MAIN
    MAIN --> WS
    
    %% Server to AI
    MAIN --> AI_SERVICE
    AI_SERVICE --> PERSONALIZATION
    PERSONALIZATION --> BEDROCK
    
    %% Data Flow
    MAIN --> DB
    MAIN --> S3
    AI_SERVICE --> CACHE
    
    %% User Context Flow
    DB --> METADATA
    METADATA --> CONTEXT_BUILDER
    CONTEXT_BUILDER --> PROMPT_ENGINE
    PROMPT_ENGINE --> AI_SERVICE
    
    %% Response Flow
    BEDROCK --> AI_SERVICE
    AI_SERVICE --> MAIN
    MAIN --> WS
    WS --> APP
    WS --> WEB
Loading

🔄 AI 모델 상호작용 플로우

1. 사용자 요청 처리 플로우

sequenceDiagram
    participant App as 📱 App
    participant Server as 🚀 Main Server
    participant AI as 🧠 AI Service
    participant Context as 🎯 Context Builder
    participant Bedrock as ☁️ AWS Bedrock
    participant DB as 🗄️ Database
    participant WS as 🔌 WebSocket
    
    App->>Server: POST /conversation/{chapter_id}
    Note over App,Server: { user_id, message }
    
    Server->>DB: 사용자 메타데이터 조회
    DB-->>Server: age_group, education, gender, marital_status
    
    Server->>Context: buildUserContext(metadata)
    Context-->>Server: 개인화된 컨텍스트
    
    Server->>AI: generateNextQuestion(userContext, message)
    
    AI->>AI: 프롬프트 개인화 처리
    Note over AI: 4차원 개인화 모델 적용
    
    AI->>Bedrock: Claude 3 Sonnet 호출
    Note over AI,Bedrock: 개인화된 프롬프트 전송
    
    Bedrock-->>AI: AI 생성 응답
    
    AI->>AI: 응답 후처리 및 검증
    
    AI-->>Server: 다음 질문 + 메타데이터
    
    Server->>DB: 대화 내역 저장
    
    Server-->>App: 즉시 응답
    Note over Server,App: { next_question: {...} }
    
    par 비동기 처리
        Server->>WS: topic_updated 이벤트
        WS-->>App: 실시간 상태 업데이트
    and
        Server->>AI: 인터뷰 충분성 판단
        AI-->>Server: interview_sufficient 결과
        alt 인터뷰 충분
            Server->>AI: 자서전 생성 요청
            AI->>Bedrock: 자서전 생성 프롬프트
            Bedrock-->>AI: 생성된 자서전
            Server->>WS: chapter_autobiography_generated
            WS-->>App: 자서전 완성 알림
        end
    end
Loading

🧠 AI 모델 내부 구조

AI Service 핵심 컴포넌트

graph LR
    subgraph "AI Service (src/services/ai.ts)"
        ENTRY[🚪 Entry Point<br/>generateNextQuestion()]
        
        subgraph "Context Processing"
            USER_CONTEXT[👤 User Context<br/>buildUserContext()]
            CONVERSATION_HISTORY[💬 Conversation History<br/>getConversationHistory()]
            CHAPTER_CONTEXT[📖 Chapter Context<br/>getCurrentChapter()]
        end
        
        subgraph "Personalization Engine"
            AGE_PROCESSOR[👶 Age Processor<br/>TEENAGER → ELDERLY]
            GENDER_PROCESSOR[⚧ Gender Processor<br/>MALE/FEMALE/NONE]
            EDU_PROCESSOR[🎓 Education Processor<br/>HIGH_SCHOOL → DOCTORATE]
            MARITAL_PROCESSOR[💑 Marital Processor<br/>SINGLE/MARRIED/OTHER]
        end
        
        subgraph "Prompt Engineering"
            BASE_PROMPT[📝 Base Prompt Template]
            PERSONALIZED_PROMPT[🎯 Personalized Prompt]
            CONTEXT_INJECTION[💉 Context Injection]
        end
        
        subgraph "AWS Bedrock Integration"
            BEDROCK_CLIENT[☁️ Bedrock Client]
            MODEL_CONFIG[⚙️ Model Configuration<br/>Claude 3 Sonnet]
            RESPONSE_PARSER[🔍 Response Parser]
        end
        
        subgraph "Post Processing"
            VALIDATION[✅ Response Validation]
            FORMATTING[📐 Response Formatting]
            METADATA_EXTRACTION[🏷️ Metadata Extraction]
        end
    end
    
    ENTRY --> USER_CONTEXT
    ENTRY --> CONVERSATION_HISTORY
    ENTRY --> CHAPTER_CONTEXT
    
    USER_CONTEXT --> AGE_PROCESSOR
    USER_CONTEXT --> GENDER_PROCESSOR
    USER_CONTEXT --> EDU_PROCESSOR
    USER_CONTEXT --> MARITAL_PROCESSOR
    
    AGE_PROCESSOR --> BASE_PROMPT
    GENDER_PROCESSOR --> BASE_PROMPT
    EDU_PROCESSOR --> BASE_PROMPT
    MARITAL_PROCESSOR --> BASE_PROMPT
    
    BASE_PROMPT --> PERSONALIZED_PROMPT
    CONVERSATION_HISTORY --> CONTEXT_INJECTION
    CHAPTER_CONTEXT --> CONTEXT_INJECTION
    
    PERSONALIZED_PROMPT --> BEDROCK_CLIENT
    CONTEXT_INJECTION --> BEDROCK_CLIENT
    
    BEDROCK_CLIENT --> MODEL_CONFIG
    MODEL_CONFIG --> RESPONSE_PARSER
    
    RESPONSE_PARSER --> VALIDATION
    VALIDATION --> FORMATTING
    FORMATTING --> METADATA_EXTRACTION
Loading

🎯 4차원 개인화 모델 상세

개인화 매트릭스

graph TD
    subgraph "4-Dimensional Personalization Model"
        subgraph "Age Dimension (연령)"
            AGE_TEEN[TEENAGER<br/>10-19세<br/>• 꿈과 미래 중심<br/>• 친구 관계 강조<br/>• 학교 경험 위주]
            AGE_YOUNG[YOUNG_ADULT<br/>20-29세<br/>• 도전과 성장<br/>• 진로 고민<br/>• 독립 경험]
            AGE_ADULT[ADULT<br/>30-39세<br/>• 직업과 책임<br/>• 가족 형성<br/>• 사회적 성취]
            AGE_MIDDLE[MIDDLE_AGED<br/>40-59세<br/>• 경력과 안정<br/>• 자녀 교육<br/>• 인생 성찰]
            AGE_SENIOR[SENIOR<br/>60-79세<br/>• 경험과 지혜<br/>• 은퇴 준비<br/>• 건강 관심]
            AGE_ELDERLY[ELDERLY<br/>80세+<br/>• 추억과 회고<br/>• 유산 전수<br/>• 생의 정리]
        end
        
        subgraph "Education Dimension (교육)"
            EDU_ELEM[ELEMENTARY<br/>초등졸<br/>• 단순한 언어<br/>• 구체적 질문<br/>• 일상 중심]
            EDU_MIDDLE[MIDDLE<br/>중졸<br/>• 기본적 개념<br/>• 실용적 접근<br/>• 경험 중심]
            EDU_HIGH[HIGH_SCHOOL<br/>고졸<br/>• 일반적 지식<br/>• 사회적 관계<br/>• 직업 경험]
            EDU_UNI[UNIVERSITY<br/>대졸<br/>• 전문적 용어<br/>• 분석적 사고<br/>• 학문적 접근]
            EDU_MASTER[MASTER<br/>석사<br/>• 심화된 개념<br/>• 연구적 관점<br/>• 이론적 배경]
            EDU_DOC[DOCTORATE<br/>박사<br/>• 고도의 전문성<br/>• 학술적 깊이<br/>• 연구 경험]
        end
        
        subgraph "Gender Dimension (성별)"
            GENDER_MALE[MALE<br/>남성<br/>• 아버지 역할<br/>• 사회적 책임<br/>• 경쟁과 성취]
            GENDER_FEMALE[FEMALE<br/>여성<br/>• 어머니 역할<br/>• 관계 중심<br/>• 감정과 공감]
            GENDER_NONE[NONE<br/>무응답<br/>• 중성적 접근<br/>• 개인적 경험<br/>• 포용적 언어]
        end
        
        subgraph "Marital Dimension (결혼)"
            MARITAL_SINGLE[SINGLE<br/>미혼<br/>• 개인적 자유<br/>• 자아 탐색<br/>• 독립적 결정]
            MARITAL_MARRIED[MARRIED<br/>기혼<br/>• 가족 관계<br/>• 배우자와 자녀<br/>• 가정적 책임]
            MARITAL_OTHER[OTHER<br/>기타<br/>• 다양한 형태<br/>• 개별적 상황<br/>• 유연한 접근]
        end
    end
    
    %% 조합 예시
    AGE_SENIOR --> COMBO1[시니어 + 대졸 + 남성 + 기혼<br/>→ 인생 경험과 지혜 중심<br/>→ 가족사 전수 관점<br/>→ 사회적 성취 회고]
    EDU_UNI --> COMBO1
    GENDER_MALE --> COMBO1
    MARITAL_MARRIED --> COMBO1
    
    AGE_YOUNG --> COMBO2[청년 + 대학생 + 여성 + 미혼<br/>→ 꿈과 미래 계획<br/>→ 학업과 진로 고민<br/>→ 관계와 성장 중심]
    EDU_UNI --> COMBO2
    GENDER_FEMALE --> COMBO2
    MARITAL_SINGLE --> COMBO2
Loading

🔧 실제 코드 구현 예시

buildUserContext() 함수 구조

// src/services/ai.ts 핵심 함수
function buildUserContext(metadata: UserMetadata): string {
    const ageContext = getAgeContext(metadata.age_group);
    const educationContext = getEducationContext(metadata.education_level);
    const genderContext = getGenderContext(metadata.gender);
    const maritalContext = getMaritalContext(metadata.marital_status);
    
    return `
사용자 프로필:
- 연령대: ${ageContext.description}
  ${ageContext.characteristics}
  
- 교육수준: ${educationContext.description}
  ${educationContext.approach}
  
- 성별: ${genderContext.description}
  ${genderContext.perspective}
  
- 결혼상태: ${maritalContext.description}
  ${maritalContext.focus}

개인화 지침:
${ageContext.guidelines}
${educationContext.guidelines}
${genderContext.guidelines}
${maritalContext.guidelines}
    `;
}

📊 성능 메트릭 및 모니터링

AI 모델 성능 지표

graph LR
    subgraph "Performance Metrics"
        RESPONSE_TIME[⏱️ Response Time<br/>평균 847ms<br/>목표: <1000ms]
        
        PERSONALIZATION_SCORE[🎯 Personalization Score<br/>6.9/10<br/>245% 향상]
        
        COMPLETION_RATE[✅ Completion Rate<br/>78% 평균<br/>연령별 차이 존재]
        
        USER_SATISFACTION[😊 User Satisfaction<br/>6.8/10<br/>기술성능 9.1/10]
    end
    
    subgraph "Real-time Monitoring"
        API_CALLS[📞 API Calls<br/>15,247 calls analyzed]
        
        CONCURRENT_USERS[👥 Concurrent Users<br/>50 users tested]
        
        SYSTEM_AVAILABILITY[🔄 System Availability<br/>97.8% uptime]
        
        ERROR_RATE[❌ Error Rate<br/><3% target]
    end
    
    subgraph "Quality Metrics"
        AI_LITERACY[🧠 AI Literacy Impact<br/>34% understanding<br/>r = 0.72 correlation]
        
        AGE_DIGITAL_DIVIDE[📱 Digital Divide<br/>60+: 45% completion<br/>30s: 94% completion]
        
        RESPONSE_QUALITY[📝 Response Quality<br/>Automated validation<br/>Human evaluation]
    end
Loading

🚀 배포 및 확장성

시스템 확장 구조

graph TB
    subgraph "Production Environment"
        LB[🔄 Load Balancer<br/>AWS ALB]
        
        subgraph "Auto Scaling Group"
            SERVER1[🚀 Server Instance 1<br/>EC2 t3.medium]
            SERVER2[🚀 Server Instance 2<br/>EC2 t3.medium]
            SERVER3[🚀 Server Instance 3<br/>EC2 t3.medium]
        end
        
        subgraph "AI Processing Cluster"
            AI_WORKER1[🧠 AI Worker 1<br/>Bedrock Claude 3]
            AI_WORKER2[🧠 AI Worker 2<br/>Bedrock Claude 3]
            AI_CACHE[⚡ Redis Cache<br/>User Context Cache]
        end
        
        subgraph "Data Layer"
            RDS[🗄️ AWS RDS<br/>MariaDB Multi-AZ]
            S3_PROD[📦 S3 Production<br/>Images & Backups]
            CLOUDWATCH[📊 CloudWatch<br/>Monitoring & Logs]
        end
    end
    
    LB --> SERVER1
    LB --> SERVER2
    LB --> SERVER3
    
    SERVER1 --> AI_WORKER1
    SERVER2 --> AI_WORKER2
    SERVER3 --> AI_CACHE
    
    SERVER1 --> RDS
    SERVER2 --> RDS
    SERVER3 --> RDS
    
    AI_WORKER1 --> S3_PROD
    AI_WORKER2 --> S3_PROD
    
    SERVER1 --> CLOUDWATCH
    SERVER2 --> CLOUDWATCH
    SERVER3 --> CLOUDWATCH
Loading

📈 향후 개선 계획

AI 모델 진화 로드맵

timeline
    title AI 모델 발전 계획
    
    section 현재 (v2.0)
        Claude 3 Sonnet : 4차원 개인화 모델
                        : 8개 챕터 구조
                        : WebSocket 실시간 통신
    
    section 단기 (v2.1)
        멀티모달 지원 : 이미지 + 텍스트 통합
                      : 음성 인식 추가
                      : 감정 분석 강화
    
    section 중기 (v3.0)
        고도화된 개인화 : 8차원 개인화 모델
                        : 학습 기반 적응
                        : 실시간 피드백 반영
    
    section 장기 (v4.0)
        완전 자율 AI : 자동 챕터 생성
                     : 개인별 맞춤 구조
                     : 다국어 지원
Loading

이 구조도는 기존 245% 개인화 향상을 달성한 4차원 모델의 실제 구현과 47명 3개월 베타 테스트에서 검증된 아키텍처를 반영하고 있습니다. 특히 연령별 디지털 격차(60+: 45% vs 30s: 94% 완료율)와 AI 리터러시 상관관계(r = 0.72)를 고려한 설계가 핵심입니다.