Skip to content

CSID-DGU/2025-CSC4019-03-captAIn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

62 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SEOUL-I (μ„œμšΈμ•„μ΄) β€” μ„œμšΈμ‹œ μž„μ‹ Β·μΆœμ‚°Β·μœ‘μ•„ AI 챗봇

μ„œμšΈAIμž¬λ‹¨ μ‚°ν•™ν˜‘λ ₯ ν”„λ‘œμ νŠΈ | λ™κ΅­λŒ€ν•™κ΅ 2025-CSC4019-03

μ„œμšΈμ‹œ μ˜ˆλΉ„ λΆ€λͺ¨ 및 초보 λΆ€λͺ¨λ₯Ό μœ„ν•œ μž„μ‹ Β·μΆœμ‚°Β·μœ‘μ•„ 톡합 정보 AI μ±—λ΄‡μž…λ‹ˆλ‹€.
μ„œμšΈ 열린데이터광μž₯ 곡곡 API, μ •λΆ€ 포털 크둀링 데이터, μˆ˜λ™ 라벨링 μ •μ±… 데이터λ₯Ό κ²°ν•©ν•œ RAG(Retrieval-Augmented Generation) νŒŒμ΄ν”„λΌμΈμ„ 톡해, μ‚¬μš©μžμ˜ μ§ˆλ¬Έμ— λ§žλŠ” μ§€μ›κΈˆΒ·μ‹œμ„€Β·ν”„λ‘œκ·Έλž¨ 정보λ₯Ό κ²€μƒ‰ν•˜κ³  μžμ—°μ–΄ 닡변을 μƒμ„±ν•©λ‹ˆλ‹€.


νŒ€ ꡬ성

μ—­ν•  이름
νŒ€μž₯ μ„œλ™κ±΄
νŒ€μ› 이예림
νŒ€μ› 이쀀원

λͺ©μ°¨

  1. ν”„λ‘œμ νŠΈ κ°œμš”
  2. μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜
  3. 데이터 νŒŒμ΄ν”„λΌμΈ
  4. λ°±μ—”λ“œ (AWS Lambda) 상세
  5. ν”„λ‘ νŠΈμ—”λ“œ 상세
  6. κ΄€λ ¨ 리포지토리
  7. 둜컬 μ‹€ν–‰ 방법
  8. 기술 μŠ€νƒ

1. ν”„λ‘œμ νŠΈ κ°œμš”

μ„œμšΈμ‹œμ—λŠ” μž„μ‚°λΆ€Β·μ˜μœ μ•„ 가ꡬλ₯Ό μœ„ν•œ μ§€μ›κΈˆ, λŒλ΄„ μ‹œμ„€, ꡐ윑 ν”„λ‘œκ·Έλž¨μ΄ λ‹€μ–‘ν•˜κ²Œ μ‘΄μž¬ν•˜μ§€λ§Œ, 정보가 μ—¬λŸ¬ κΈ°κ΄€Β·μ‚¬μ΄νŠΈμ— λΆ„μ‚°λ˜μ–΄ μžˆμ–΄ ν•œλˆˆμ— νŒŒμ•…ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€. SEOUL-IλŠ” 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ‹€μŒ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

  • μžμ—°μ–΄ μ§ˆμ˜μ‘λ‹΅ β€” "강남ꡬ 킀움센터 λͺ©λ‘ λ³΄μ—¬μ€˜", "μ²«λ§Œλ‚¨μ΄μš©κΆŒ μ‹ μ²­ 자격 μ•Œλ €μ€˜" λ“± 일상적인 λ¬Έμž₯으둜 질문
  • RAG 기반 λ‹΅λ³€ 생성 β€” 사전 μˆ˜μ§‘λœ μ •μ±…Β·μ‹œμ„€Β·ν”„λ‘œκ·Έλž¨ 데이터λ₯Ό κ²€μƒ‰ν•œ λ’€, LLM이 λ§₯락을 μ°Έκ³ ν•΄ λ‹΅λ³€ 생성
  • 맞좀 μ •μ±… μ•Œλ¦Ό β€” νšŒμ›κ°€μž… μ‹œ μž…λ ₯ν•œ 가ꡬ 정보(κ±°μ£Ό ꡬ, μ†Œλ“ μˆ˜μ€€, μžλ…€ 유무 λ“±)λ₯Ό 기반으둜 ν•΄λ‹Ήλ˜λŠ” 정책을 μ•Œλ¦Ό
  • ν”Όλ“œλ°± μˆ˜μ§‘ β€” 닡변에 λŒ€ν•œ μ’‹μ•„μš”/μ‹«μ–΄μš” ν”Όλ“œλ°±μ„ μˆ˜μ§‘ν•˜μ—¬ μ„œλΉ„μŠ€ ν’ˆμ§ˆ κ°œμ„ μ— ν™œμš©

2. μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                          μ‚¬μš©μž (λΈŒλΌμš°μ €)                             β”‚
β”‚                     React SPA  ──  SEOUL-I ν”„λ‘ νŠΈμ—”λ“œ                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚  REST API (POST /question)         β”‚  REST API (POST /feedback)
               β–Ό                                    β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   API Gateway (AWS)      β”‚           β”‚   Feedback Lambda (선택)     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              seoulBaby_answerGeneratorLambda  (μ˜€μΌ€μŠ€νŠΈλ ˆμ΄ν„°)          β”‚
β”‚                                                                      β”‚
β”‚  1. μ‚¬μš©μž 질문 μˆ˜μ‹                                                    β”‚
β”‚  2. seoulBaby_queryInfoLambda 호좜 β†’ κ΄€λ ¨ 정보 검색 (Retrieve)         β”‚
β”‚  3. 검색 κ²°κ³Ό + 질문으둜 ν”„λ‘¬ν”„νŠΈ ꡬ성 (Augment)                        β”‚
β”‚  4. Bedrock LLM 호좜 β†’ μ΅œμ’… λ‹΅λ³€ 생성 (Generate)                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚ Lambda Invoke
           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              seoulBaby_queryInfoLambda  (검색 μ—”μ§„)                    β”‚
β”‚                                                                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                             β”‚
β”‚  β”‚ LLM Router (Haiku)  β”‚  질문 뢄석 β†’ 데이터 μ†ŒμŠ€ & 검색 ν•„λ“œ κ²°μ •      β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                             β”‚
β”‚           β”œβ”€β”€β–Ά [μ†ŒμŠ€ 1] Manual μ •μ±… β€” 벑터 μœ μ‚¬λ„ 검색 (Titan Embed)   β”‚
β”‚           β”œβ”€β”€β–Ά [μ†ŒμŠ€ 2] Dynamic ν”„λ‘œκ·Έλž¨ β€” ν‚€μ›Œλ“œ + λ‚ μ§œ ν•„ν„° 검색      β”‚
β”‚           └──▢ [μ†ŒμŠ€ 3] API μ‹œμ„€/업체 β€” 자치ꡬ + μœ ν˜• ν‚€μ›Œλ“œ 검색       β”‚
β”‚                                                                      β”‚
β”‚  데이터 원본: Amazon S3 (seoul-baby 버킷)                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€ 데이터 μˆ˜μ§‘ (μ˜€ν”„λΌμΈ / μŠ€μΌ€μ€„) ────────────────────────────────────┐
β”‚                                                                        β”‚
β”‚  seoulBaby_dataFetcher         μ„œμšΈ 열린데이터광μž₯ Open API β†’ S3 μ €μž₯    β”‚
β”‚  (곡곡 API 5μ’…)                 semi-dynamic/*.json                     β”‚
β”‚                                                                        β”‚
β”‚  seoulBaby-site-crawler        μ •λΆ€ 포털 4κ³³ μ›Ή 크둀링 β†’ S3 μ €μž₯         β”‚
β”‚  (GitHub Actions μŠ€μΌ€μ€„)        dynamic_programs/*.json                 β”‚
β”‚                                                                        β”‚
β”‚  seoulBaby_manualDataProcessor μˆ˜λ™ 라벨링 JSON β†’ Titan Embed 벑터화    β”‚
β”‚  (μˆ˜λ™ 트리거)                   static/*_vectors.json β†’ S3 μ €μž₯        β”‚
β”‚                                                                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

3. 데이터 νŒŒμ΄ν”„λΌμΈ

SEOUL-Iκ°€ μ‚¬μš©ν•˜λŠ” λ°μ΄ν„°λŠ” κ°±μ‹  주기에 따라 μ„Έ κ³„μΈ΅μœΌλ‘œ λ‚˜λ‰©λ‹ˆλ‹€.

3-1. Static (μˆ˜λ™ 라벨링 μ •μ±…)

ν•­λͺ© μ„€λͺ…
원본 static/seoulBaby_manual_labeled_data.json β€” μ²«λ§Œλ‚¨μ΄μš©κΆŒ, λΆ€λͺ¨κΈ‰μ—¬, μ•„λ™μˆ˜λ‹Ή λ“± 핡심 정책을 직접 ꡬ쑰화
처리 seoulBaby_manualDataProcessor Lambdaκ°€ 각 μ •μ±… ν•­λͺ©μ„ κ²€μƒ‰μš© ν…μŠ€νŠΈλ‘œ λ³€ν™˜ ν›„ Amazon Titan Embed Text v2둜 벑터화
κ²°κ³Ό static/seoulBaby_manual_labeled_vectors.json β€” 벑터 + 원본 데이터 쌍
검색 방식 코사인 μœ μ‚¬λ„ 기반 벑터 검색 + 생애주기/자치ꡬ/μ •μ±…μœ ν˜• κ°€μ€‘μΉ˜

3-2. Semi-dynamic (곡곡 API)

ν•­λͺ© μ„€λͺ…
μˆ˜μ§‘κΈ° seoulBaby_dataFetcher Lambda
데이터 μ†ŒμŠ€ (5μ’…) λͺ½λ•…정보 만λŠ₯ν‚€ (VwSmpBizInfo), λ‹€λ‘₯이 ν–‰λ³΅μΉ΄λ“œ ν˜‘λ ₯업체 (InfoHappycard), μš°λ¦¬λ™λ„€ 킀움센터 (TnFcltySttusInfo1001), 지역아동센터 (TnFcltySttusInfo1003), μ„œμšΈν˜• ν‚€μ¦ˆμΉ΄νŽ˜ (tnFcltySttusInfo1011)
κ²°κ³Ό semi-dynamic/*.json β€” μ •μ œλœ μ‹œμ„€/업체 λͺ©λ‘
검색 방식 자치ꡬ(gu) ν•„ν„° + μ‹œμ„€μœ ν˜•(facility_type) ν‚€μ›Œλ“œ λ§€μΉ­

3-3. Dynamic (μ›Ή 크둀링)

ν•­λͺ© μ„€λͺ…
μˆ˜μ§‘κΈ° seoulBaby-site-crawler β€” GitHub Actions둜 주기적 μ‹€ν–‰
크둀링 λŒ€μƒ (4κ³³) μ„œμšΈ μž„μ‹ μΆœμ‚° 정보센터 λ³΄κ±΄μ†Œ ꡐ윑, μ„œμšΈ μž„μ‹ μΆœμ‚° 정보센터 곡지사항, μ•„μ΄μ‚¬λž‘ μΆœμ‚°μ§€μ›κΈˆ, μ„œμšΈ λ§˜μΌ€μ–΄ 곡지사항
κ²°κ³Ό dynamic_programs/*.json β€” μ΅œμ‹  λͺ¨μ§‘ 곡고·곡지사항
검색 방식 ν‚€μ›Œλ“œ λ§€μΉ­ + λ‚ μ§œ ν•„ν„°(μ§€λ‚œ 곡고 μ œμ™Έ) + 생애주기 λ§€μΉ­

S3 버킷 ꡬ쑰

seoul-baby/
β”œβ”€β”€ static/
β”‚   β”œβ”€β”€ seoulBaby_manual_labeled_data.json      ← μˆ˜λ™ 라벨링 원본
β”‚   └── seoulBaby_manual_labeled_vectors.json   ← 벑터화 κ²°κ³Ό
β”œβ”€β”€ semi-dynamic/
β”‚   β”œβ”€β”€ all_programs_info.json                  ← λͺ½λ•…정보 만λŠ₯ν‚€
β”‚   β”œβ”€β”€ happy_card_vendors.json                 ← λ‹€λ‘₯이 ν–‰λ³΅μΉ΄λ“œ ν˜‘λ ₯업체
β”‚   β”œβ”€β”€ kium_centers.json                       ← μš°λ¦¬λ™λ„€ 킀움센터
β”‚   β”œβ”€β”€ community_child_centers.json            ← 지역아동센터
β”‚   └── seoul_kids_cafes.json                   ← μ„œμšΈν˜• ν‚€μ¦ˆμΉ΄νŽ˜
└── dynamic_programs/
    β”œβ”€β”€ seoul_agi_education.json                ← λ³΄κ±΄μ†Œ ꡐ윑 곡고
    β”œβ”€β”€ seoul_agi_notices.json                  ← μž„μ‹ μΆœμ‚° 정보센터 곡지
    β”œβ”€β”€ childcare_support_fund.json             ← μΆœμ‚°μ§€μ›κΈˆ μ†Œμ‹
    └── seoul_momcare_notices.json              ← λ§˜μΌ€μ–΄ 곡지사항

4. λ°±μ—”λ“œ (AWS Lambda) 상세

λ°±μ—”λ“œλŠ” 4개의 AWS Lambda ν•¨μˆ˜λ‘œ κ΅¬μ„±λ˜λ©°, 이 λ¦¬ν¬μ§€ν† λ¦¬μ—λŠ” ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

4-1. seoulBaby_answerGeneratorLambda β€” RAG μ˜€μΌ€μŠ€νŠΈλ ˆμ΄ν„°

API Gatewayλ‘œλΆ€ν„° μ‚¬μš©μž μ§ˆλ¬Έμ„ λ°›μ•„ 전체 RAG ν”„λ‘œμ„ΈμŠ€λ₯Ό μ΄κ΄„ν•©λ‹ˆλ‹€.

  1. Retrieve β€” seoulBaby_queryInfoLambdaλ₯Ό 동기 ν˜ΈμΆœν•˜μ—¬ κ΄€λ ¨ 정보 검색
  2. Augment β€” 검색 결과와 μ‚¬μš©μž μ§ˆλ¬Έμ„ κ²°ν•©ν•˜μ—¬ 'μ„œμšΈλ§˜λΉ„μ„œ' 페λ₯΄μ†Œλ‚˜ ν”„λ‘¬ν”„νŠΈ ꡬ성
  3. Generate β€” Amazon Bedrock의 Claude λͺ¨λΈμ„ ν˜ΈμΆœν•˜μ—¬ μ΅œμ’… λ‹΅λ³€ 생성

λͺ¨λΈ 호좜 μ‹œ μ•ˆμ •μ„±μ„ μœ„ν•΄ λ©€ν‹°-리전, λ©€ν‹°-λͺ¨λΈ Fallback μ „λž΅μ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

μš°μ„ μˆœμœ„: Claude 3.5 Haiku (us-east-1, us-west-2)
        β†’ Claude 3 Haiku (ap-southeast-2)
        β†’ Claude 3 Sonnet (ap-southeast-2, us-east-1, us-west-2)

4-2. seoulBaby_queryInfoLambda β€” μ§€λŠ₯ν˜• 검색 μ—”μ§„

μ‚¬μš©μž μ§ˆλ¬Έμ„ λΆ„μ„ν•˜μ—¬ κ°€μž₯ μ ν•©ν•œ 데이터 μ†ŒμŠ€λ₯Ό μ„ νƒν•˜κ³  검색을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

질문 λΌμš°νŒ… (LLM Router)

Claude Haikuμ—κ²Œ μ§ˆλ¬Έμ„ 보내 λ‹€μŒμ„ νŒλ‹¨ν•©λ‹ˆλ‹€.

μ†ŒμŠ€ λŒ€μƒ 데이터 μ˜ˆμ‹œ 질문
0 (off-topic) - "μ•ˆλ…•ν•˜μ„Έμš”", "였늘 날씨 μ–΄λ•Œ?"
1 (manual) 핡심 μ •μ±…Β·μ§€μ›κΈˆ (벑터 검색) "μ²«λ§Œλ‚¨μ΄μš©κΆŒ μ‹ μ²­ 자격", "λΆ€λͺ¨κΈ‰μ—¬ μ–Όλ§ˆ?"
2 (program) μ‹€μ‹œκ°„ λͺ¨μ§‘ 곡고 (ν‚€μ›Œλ“œ 검색) "μ§€κΈˆ μ‹ μ²­ κ°€λŠ₯ν•œ λΆ€λͺ¨ ꡐ윑", "μ΅œμ‹  곡지"
3 (api) μ‹œμ„€Β·μ—…μ²΄ λͺ©λ‘ (ν‚€μ›Œλ“œ 검색) "관악ꡬ 킀움센터 λͺ©λ‘", "λ‹€λ‘₯이 μΉ΄λ“œ 식당"

LLM λΌμš°νŒ… μ‹€νŒ¨ μ‹œ, ν‚€μ›Œλ“œ 기반 Fallback 둜직이 λ™μž‘ν•©λ‹ˆλ‹€.

검색 μ•Œκ³ λ¦¬μ¦˜

  • Manual (벑터 검색): μ§ˆλ¬Έμ„ Titan Embed둜 벑터화 β†’ λͺ¨λ“  μ •μ±… 벑터와 코사인 μœ μ‚¬λ„ 계산 β†’ μƒμ• μ£ΌκΈ°Β·μžμΉ˜κ΅¬Β·μ •μ±…μœ ν˜• κ°€μ€‘μΉ˜ 적용 β†’ μƒμœ„ 5건 λ°˜ν™˜
  • Dynamic (ν‚€μ›Œλ“œ 검색): ν‚€μ›Œλ“œ λ§€μΉ­(20점) + 생애주기 λ§€μΉ­(15점) + λͺ¨μ§‘ μƒνƒœ λ³΄λ„ˆμŠ€(10점) + λ‚ μ§œ κ·Όμ ‘μ„± λ³΄λ„ˆμŠ€(8점) β†’ 점수순 μƒμœ„ 10건
  • API (ν‚€μ›Œλ“œ 검색): 자치ꡬ ν•„ν„°(ν•„μˆ˜, 50점) + μ‹œμ„€μœ ν˜• λ§€μΉ­(30점) β†’ 점수순 μƒμœ„ 15건

4-3. seoulBaby_dataFetcher β€” 곡곡 API μˆ˜μ§‘κΈ°

μ„œμšΈ 열린데이터광μž₯ Open API 5쒅을 ν˜ΈμΆœν•˜μ—¬ 데이터λ₯Ό μ •μ œ ν›„ S3에 μ €μž₯ν•©λ‹ˆλ‹€.
각 API별 μ „μš© ν›„μ²˜λ¦¬ ν•¨μˆ˜κ°€ 원본 데이터λ₯Ό ν‘œμ€€ ꡬ쑰둜 λ³€ν™˜ν•©λ‹ˆλ‹€.

4-4. seoulBaby_manualDataProcessor β€” 벑터화 처리기

μˆ˜λ™ 라벨링된 μ •μ±… JSON을 읽어 각 ν•­λͺ©μ„ κ²€μƒ‰μš© ν…μŠ€νŠΈλ‘œ λ³€ν™˜ν•œ λ’€, Amazon Titan Embed Text v2둜 λ²‘ν„°ν™”ν•˜μ—¬ S3에 μ €μž₯ν•©λ‹ˆλ‹€.


5. ν”„λ‘ νŠΈμ—”λ“œ 상세

이 λ¦¬ν¬μ§€ν† λ¦¬μ˜ μ½”λ“œλŠ” React 기반 SPA(Single Page Application)μž…λ‹ˆλ‹€.

μ£Όμš” ν™”λ©΄ 및 κΈ°λŠ₯

κΈ°λŠ₯ μ„€λͺ…
μŠ€ν”Œλž˜μ‹œ ν™”λ©΄ μ•± μ§„μž… μ‹œ 3.2μ΄ˆκ°„ 둜고 및 λ‘œλ”© μ• λ‹ˆλ©”μ΄μ…˜ ν‘œμ‹œ
λžœλ”© νŽ˜μ΄μ§€ ν€΅μŠ€νƒ€νŠΈ λ²„νŠΌ(μΆœμ‚° μ€€λΉ„, μ‚°λͺ¨μ‹ μƒμ•„ 건강관리), 자주 λ¬»λŠ” 질문(FAQ) λͺ¨λ‹¬
μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€ μ‚¬μš©μž 질문 μž…λ ₯ β†’ 타이핑 인디케이터 β†’ AI λ‹΅λ³€ ν‘œμ‹œ, λ‹΅λ³€ λ‚΄ URL μžλ™ 링크 λ³€ν™˜
νšŒμ›κ°€μž…/둜그인 가ꡬ 정보(κ±°μ£Ό ꡬ, μ†Œλ“, μžλ…€, μž„μ‹  μ—¬λΆ€ λ“±) μž…λ ₯ β†’ 맞좀 μ •μ±… μ•Œλ¦Όμ— ν™œμš©
맞좀 μ •μ±… μ•Œλ¦Ό public/data/policies.csv 기반으둜 둜그인 μ‚¬μš©μžμ˜ 쑰건에 λ§€μΉ­λ˜λŠ” 정책을 μ•Œλ¦Ό 벨에 ν‘œμ‹œ
ν”Όλ“œλ°± 각 봇 닡변에 πŸ‘/πŸ‘Ž λ²„νŠΌ β†’ ν”Όλ“œλ°± Lambda둜 전솑
μ‚¬μ΄λ“œλ°” μ±„νŒ… 기둝, κ΄€λ ¨ 포털 μ‚¬μ΄νŠΈ λ°”λ‘œκ°€κΈ°, κ°œμΈμ •λ³΄ 처리 λ°©μΉ¨
1:1 문의 ν”Œλ‘œνŒ… λ²„νŠΌ β†’ 이름/이메일/λ©”μ‹œμ§€ μž…λ ₯ ν›„ 전솑

디렉토리 ꡬ쑰

2025-CSC4019-03-captAIn/
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ data/
β”‚   β”‚   └── policies.csv              ← 맞좀 μ•Œλ¦Όμš© μ •μ±… CSV
β”‚   └── images/                        ← 둜고, μ•„μ΄μ½˜ λ“± 정적 이미지
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ App.js                         ← 메인 μ»΄ν¬λ„ŒνŠΈ (μ±„νŒ…, 인증, μ•Œλ¦Ό λ“±)
β”‚   β”œβ”€β”€ App.css                        ← 전체 μŠ€νƒ€μΌ
β”‚   β”œβ”€β”€ PrivacyPolicyModal.js          ← κ°œμΈμ •λ³΄ 처리 λ°©μΉ¨ λͺ¨λ‹¬
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   └── interactive/
β”‚   β”‚       └── FAQList.js             ← 자주 λ¬»λŠ” 질문 κ·Έλ¦¬λ“œ μ»΄ν¬λ„ŒνŠΈ
β”‚   β”œβ”€β”€ index.js
β”‚   └── index.css
β”œβ”€β”€ package.json
└── README.md

ν™˜κ²½ λ³€μˆ˜

λ³€μˆ˜λͺ… μ„€λͺ…
REACT_APP_API_ENDPOINT answerGeneratorLambda의 API Gateway URL
REACT_APP_FEEDBACK_ENDPOINT ν”Όλ“œλ°± μˆ˜μ§‘ Lambda의 API Gateway URL

λ―Έμ„€μ • μ‹œ ν”„λ‘ νŠΈμ—”λ“œ λ‚΄μž₯ 데λͺ¨ 응닡(DEMO_RESPONSES)이 λ°˜ν™˜λ©λ‹ˆλ‹€.


6. κ΄€λ ¨ 리포지토리

리포지토리 μ„€λͺ…
2025-CSC4019-03-captAIn ν”„λ‘ νŠΈμ—”λ“œ (λ³Έ 리포지토리)
seoulBaby-site-crawler μ›Ή 크둀러 β€” μ„œμšΈ μž„μ‹ μΆœμ‚° 정보센터, μ•„μ΄μ‚¬λž‘, λ§˜μΌ€μ–΄ λ“± 4개 μ‚¬μ΄νŠΈ 크둀링, GitHub Actions둜 주기적 μ‹€ν–‰ ν›„ S3 μ—…λ‘œλ“œ

λ°±μ—”λ“œ Lambda ν•¨μˆ˜ 4μ’…(answerGenerator, queryInfo, dataFetcher, manualDataProcessor)은 AWS μ½˜μ†”μ—μ„œ 직접 κ΄€λ¦¬λ˜λ©°, 별도 리포지토리에 ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.


7. 둜컬 μ‹€ν–‰ 방법

ν”„λ‘ νŠΈμ—”λ“œ

# 클둠
git clone https://github.com/CSID-DGU/2025-CSC4019-03-captAIn.git
cd 2025-CSC4019-03-captAIn

# μ˜μ‘΄μ„± μ„€μΉ˜
npm install

# (선택) ν™˜κ²½ λ³€μˆ˜ μ„€μ • β€” μ—†μœΌλ©΄ 데λͺ¨ λͺ¨λ“œλ‘œ λ™μž‘
# .env 파일 생성
echo "REACT_APP_API_ENDPOINT=https://your-api-gateway-url/prod" > .env
echo "REACT_APP_FEEDBACK_ENDPOINT=https://your-feedback-url/prod" >> .env

# 개발 μ„œλ²„ μ‹€ν–‰
npm start

REACT_APP_API_ENDPOINTλ₯Ό μ„€μ •ν•˜μ§€ μ•ŠμœΌλ©΄, ν€΅μŠ€νƒ€νŠΈ λ²„νŠΌ 및 FAQ에 ν•œν•΄ ν”„λ‘ νŠΈμ—”λ“œ λ‚΄μž₯ 데λͺ¨ 닡변이 ν‘œμ‹œλ©λ‹ˆλ‹€.


8. 기술 μŠ€νƒ

계측 기술
ν”„λ‘ νŠΈμ—”λ“œ React, CSS (λ°˜μ‘ν˜•), Create React App
λ°±μ—”λ“œ AWS Lambda (Python 3.x), API Gateway
AI / LLM Amazon Bedrock β€” Claude 3.5 Haiku, Claude 3 Sonnet (λ‹΅λ³€ 생성 & λΌμš°νŒ…)
μž„λ² λ”© Amazon Titan Embed Text v2 (벑터 검색)
μŠ€ν† λ¦¬μ§€ Amazon S3
데이터 μˆ˜μ§‘ μ„œμšΈ 열린데이터광μž₯ Open API, Python μ›Ή 크둀러 (GitHub Actions)
맞좀 μ•Œλ¦Ό CSV 기반 ν”„λ‘ νŠΈμ—”λ“œ 필터링

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •