Post

🎱 생애 첫 투 μ„œλ²„ 도전기, μ„œλ²„ 두 개λ₯Ό 클린~ν•˜κ²Œ μš΄μ˜ν•΄λ³΄μ•„μš© - [2탄] λ‚΄κ°€ μ§  ν”Œλ‘œμš°κ°€ ν‹€λ Έλ‹€κ³ ? 개발 도쀑 ν”Œλ‘œμš° κ°ˆμ•„μ—ŽκΈ°

🎱 생애 첫 투 μ„œλ²„ 도전기, μ„œλ²„ 두 개λ₯Ό 클린~ν•˜κ²Œ μš΄μ˜ν•΄λ³΄μ•„μš© - [2탄] λ‚΄κ°€ μ§  ν”Œλ‘œμš°κ°€ ν‹€λ Έλ‹€κ³ ? 개발 도쀑 ν”Œλ‘œμš° κ°ˆμ•„μ—ŽκΈ°

πŸ–€ Intro

자 μ €λ²ˆ 1탄에 μ΄μ–΄μ„œ μ΄λ²ˆμ—λŠ” 개발 도쀑에 ν”Œλ‘œμš°κ°€ ν‹€λ €μ„œ κ°ˆμ•„ μ—Žμ—ˆμ–΄μ•Ό ν–ˆλ˜ 이야기에 λŒ€ν•΄μ„œ ν•΄λ³ΌκΉŒ ν•œλ‹€.

λ‚˜μ˜ κ²½μš°λŠ” 사싀 챗봇 μžμ²΄λ„ 처음이고, μ„œλ²„λΌλ¦¬ ν†΅μ‹ ν•˜κ³  데이터 μ£Όκ³  λ°›λŠ” 것 μžμ²΄λ„ 이번이 처음이기 λ•Œλ¬Έμ— ꡬ쑰와 ν”Œλ‘œμš°λ₯Ό μž‘λŠ”λ° μƒλ‹Ήνžˆ μ‹œκ°„μ„ 많이 λ“€μ˜€λ‹€.

🀯 κ·Έ 와쀑에 개발 거의 마무리 단계쯀 λ‚΄κ°€ μ§  ν”Œλ‘œμš°κ°€ ν‹€λ Έλ‹€λŠ” 것을 μ•Œμ•„μ±˜λ‹€!

사싀상 MVP 제좜이 μ–Όλ§ˆ 남지 μ•Šμ€ 상황이라, μ§€κΈˆ μƒν™©μ—μ„œ ν”Œλ‘œμš°λ₯Ό λœ―μ–΄ κ³ μΉœλ‹€λŠ” 것은 λ§Žμ€ λ¦¬μŠ€ν¬κ°€ μ‘΄μž¬ν•˜κΈ°λŠ” ν•˜μ§€λ§Œ, 쒋은 결과물을 μœ„ν•΄μ„œ 이정도 λ…Έλ ₯도 λͺ»ν•˜λž΄

그런 μ˜λ―Έμ—μ„œ μ˜€λŠ˜μ€ μ™œ ν”Œλ‘œμš°λ₯Ό λ°”κΎΈκ²Œ λ˜μ—ˆλŠ”μ§€, 바뀐 ν”Œλ‘œμš°μ—μ„œ 얻을 수 μžˆλŠ” μž₯점은 무엇인지λ₯Ό λ¨Όμ € μ–˜κΈ°ν•˜κ³ , 3νƒ„μ—μ„œλŠ” 바뀐 ν”Œλ‘œμš°λ‘œ μ–΄λ–»κ²Œ κ°œλ°œμ„ μ§„ν–‰ν–ˆλŠ”μ§€λ₯Ό ν’€μ–΄λ³΄κ³ μž ν•œλ‹€.

🩢 Start

κΈ°μ‘΄ ν”Œλ‘œμš°λŠ” μ–΄λ• λŠ”λ°?

사싀 우리 μ±—λ΄‡μ˜ 경우, β€œμš”μ•½λ³Έβ€λ§Œμ„ DB에 μ €μž₯ν•˜κΈ°λ‘œ ν–ˆμ—ˆκΈ° λ•Œλ¬Έμ—

타 μ±—λ΄‡μ—μ„œ 벑터 DBλ₯Ό μ‚¬μš©ν•΄μ„œ λ©”μ„Έμ§€λ₯Ό λΆˆλŸ¬μ™€μ„œ λ§₯락을 νŒŒμ•…ν–ˆλ˜κ²ƒκ³Ό λ°©ν–₯을 λ‹€λ₯Έ μ‹μœΌλ‘œ 끌고 κ°”μ–΄μ•Ό ν–ˆλ‹€.

κ·Έλž˜μ„œ μ²˜μŒμ— μƒκ°ν–ˆλ˜ 방식은, 각 μ±„νŒ… λ§ˆλ‹€ μ±„νŒ… μƒμ„±μ‹œ ν•„μš”ν•œ μš”μ†Œκ°€ 있고 (예λ₯Ό λ“€μ–΄, μ·¨λ―Έλ₯Ό λ¬Όμ–΄λ³΄λŠ” μ±„νŒ…μ—μ„œλŠ” μ·¨λ―Έ 값이 ν•„μš”ν•˜κ³ , μ‚¬μš©μžμ˜ 기뢄을 ν™•μΈν•˜λŠ” μ±„νŒ…μ—μ„œλŠ” 기뢄값을 확인해야 ν•˜κ³  μ΄λŸ°μ‹μ΄λ‹€) μš°λ¦¬λŠ” λ§₯락을 λ”°λ‘œ μ €μž₯ν•˜μ§€ μ•ŠμœΌλ‹ˆ, 각 μ±„νŒ… μš”μ²­ APIλ§ˆλ‹€ λ”°λ‘œλ”°λ‘œ Request, Response dtoλ₯Ό λ§Œλ“€μ–΄μ„œ μ±„νŒ…λ§ˆλ‹€ ν•„μš”ν•œ 정보값을 μ‹€μ–΄λ³΄λ‚΄μž!λΌλŠ” μ•„μ΄λ””μ–΄μ˜€λ‹€.

이λ₯Ό μ‹œν€€μŠ€λ‘œ λ‚˜νƒ€λ‚΄λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

image.png

자 μ΄λ ‡κ²Œ 일단 κ°œλ°œκΉŒμ§€ λ§ˆλ¬΄λ¦¬ν•˜κ³  λ°”λ‘œ llm 연동을 톡해 ν”Œλ‘œμš°λ₯Ό test ν•΄λ³΄μ•˜λ‹€.

μ—¬κΈ°μ„œ 치λͺ…적인 문제점이 μƒκ²ΌλŠ”λ°, κ³Όμ—° 무엇이 λ¬Έμ œμ˜€μ„κΉŒ?

λ¬Έμ œμƒν™© ) LLM이 λ§₯락을 λͺ¨λ₯΄λ‹ˆ, λŒ€ν™”κ°€ 이어지지 μ•ŠλŠ”λ‹€!

LLM을 μ‚¬μš©ν•˜λŠ” 주된 λͺ©μ μ΄ λ¬΄μ—‡μΌκΉŒ?

λ°”λ‘œ μ‚¬μš©μž λ§žμΆ€ν˜• μ±„νŒ…μ„ & λ§₯락을 μ΄ν•΄ν•΄μ„œ μ‘λ‹΅ν•˜μ—¬ κΌ­ λŒ€ν™”κ°€ μ΄μ–΄μ§€λŠ” κ²ƒμ²˜λŸΌ μ§„ν–‰ν•œλ‹€λŠ” 것이닀.

μ§„μ§œ μ±„νŒ…μ„ ν•˜λŠ” 것 같은 챗봇을 λ§Œλ“€μžλŠ” 것이 우리의 λͺ©ν‘œμ˜€κΈ°μ— 이 뢀뢄이 맀우 μ€‘μš”ν–ˆλ‹€.

κ·ΈλŸ¬λ‚˜, 각 μ±„νŒ…λ§ˆλ‹€ ν•„μš”ν•œ 값을 μ „λ‹¬ν•˜κ³  λ§₯락을 μ „λ‹¬ν•˜μ§€ μ•ŠμœΌλ‹ˆ, λ§€ λŒ€ν™”λ§ˆλ‹€ 마치 μƒˆλ‘œμš΄ λŒ€ν™”λ₯Ό μ‹œμž‘ν•˜λŠ” 것 같은 λŠλ‚Œμ„ μ€€λ‹€λŠ” 치λͺ…적인 단점을 λ°œκ²¬ν–ˆλ‹€.

프둬프터 μ—”μ§€λ‹ˆμ–΄λ§μœΌλ‘œ μ΄μ–΄μ§€κ²Œλ” κ°€λŠ₯ν•˜μ§€ μ•Šμ„κΉŒ? μ‹Άμ–΄μ„œ 이 뢀뢄도 μ‹œλ„ν•΄λ΄€μ§€λ§Œ μ—­λΆ€μ‘±μ΄μ—ˆλ‹€β€¦.

μ•„ 이 λΆ€λΆ„ μŠ€ν¬λ¦°μƒ·μ„ 찍어 λ’€μ–΄μ•Ό ν–ˆλŠ”λ° 말이닀!!!!!!

image.png

image.png

κ·Έ 와쀑에 λ¬Έμ œκ°€ ν•˜λ‚˜ 더 μžˆμ—ˆλ‹€. λ°”λ‘œ 각 말풍선 μ±„νŒ… μš”μ²­λ§ˆλ‹€ μ‹€μ–΄ λ³΄λ‚΄λŠ” 값이 λ‹€λ₯΄κ³ , 응닡이 λ‹€λ₯΄λ‹€ λ³΄λ‹ˆ

μ΄λ ‡κ²Œ μ±„νŒ… κ΄€λ ¨ DTOκ°€ μ±„νŒ… λ§ˆλ‹€ 생기고, 이에 λ”°λ₯Έ μ„œλΉ„μŠ€λ„ λΆˆν•„μš”ν•˜κ²Œ 많이 μ€‘λ³΅λœλ‹€λŠ” κ²ƒμ΄μ—ˆλ‹€.

μ±—λ΄‡μ˜ μž₯점이자 κ°€μž₯ 큰 νŠΉμ§•μ€ μžμœ λ„μΈλ°, μ΄λ ‡κ²Œ κ°œλ°œν•˜λ©΄ 였히렀 μ±—λ΄‡μ˜ νŠΉμ§•μ— 맀우 μ–΄κΈ‹λ‚˜λŠ”κ²ƒ μ•„λ‹Œκ°€? 이정도면 μ†”μ§νžˆ μ•ˆν‹° νŒ¨ν„΄μ— 가깝지 μ•Šλ‚˜? 고민에 λΉ μ‘Œλ‹€β€¦β€¦

κ·ΈλŸ¬λ‚˜ μš°λ¦¬μ—κ²ŒλŠ” DB에 μ €μž₯ν•˜μ§€λŠ” μ•Šμ•„λ„

캐싱 νŠΉν™” λ˜μ–΄μžˆλŠ” λ©”λͺ¨λ¦¬ DB인 λ ˆλ””μŠ€!!!!κ°€ μ‘΄μž¬ν•œλ‹€.

κ·Έλ ‡λ‹€λ©΄, λ ˆλ””μŠ€μ— λŒ€ν™” λ§₯락을 μ €μž₯해두고 이걸 LLM에 μš”μ²­μ‹œ μ‚¬μš©ν•˜κ²Œλ” ν•œλ‹€λ©΄, APIκ°€ 훨신 간단해지고 응닡도 λŒ€ν™”κ°€ μ΄μ–΄μ§€λŠ”λ“―ν•œ 자유둜운 응닡이 κ°€λŠ₯ν•˜μ§€ μ•Šμ„κΉŒ?

둜직 λ¦¬νŒ©ν„°λ§) Redisλ₯Ό μ΄μš©ν•΄μ„œ λŒ€ν™” λ§₯락을 νŒŒμ•…ν•˜λ„λ‘ ν•˜μž!

κ·Έλž˜μ„œ ν”Œλ‘œμš°λ₯Ό λœ―μ–΄ 고치기둜 λ§ˆμŒλ¨Ήμ—ˆλ‹€.

μ±„νŒ… ν”Œλ‘œμš°μ— ν•„μš”ν•œ μ‚¬μš©μž 정보 값듀을 μ–΄λ–€ 말풍선이든, 항상 λ™μΌν•˜κ²Œ ν˜λ €λ³΄λ‚΄κ³ , λŒ€ν™” λ§₯락을 redis에 μΊμ‹±ν•΄μ„œ llm에 λŒ€ν™” λ§₯락 & 프둬프터 & μ‚¬μš©μž 정보 κ°’ 받은 것 & frontμ—μ„œ 받은 메세지듀을 항상 λ™μΌν•˜κ²Œ request에 λ³΄λ‚΄λŠ” λ°©μ‹μœΌλ‘œ API 양을 쀄이고, μ±—λ΄‡μ˜ μžμœ λ„λŠ” μ‚΄λ¦¬λ˜ 아웃풋은 더 ν–₯μƒλ˜λ„λ‘ ν•˜λŠ” 것이닀.

image.png

ν”Œλ‘œμš°κ°€ 더 λ³΅μž‘ν•΄μ§„κ±° κ°™μ§€λ§Œ μ΄λ ‡κ²Œ ν•˜λ©΄ λΆˆν•„μš”ν•œ 쀑볡 μ½”λ“œλŸ‰λ„ 쀄일 수 있고, μžμœ λ„λ„ 훨씬 μ˜¬λΌκ°€λ©° ν”Œλ‘œμš° 관리 및 프둬프터 관리λ₯Ό μ „λΆ€ FAST API에 μœ„μž„ν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€.

μ‹œκ°„μ΄ μ–Όλ§ˆ μ•ˆλ‚¨μ€ 상황이라 고민이 λ§Žμ•˜μ§€λ§Œ, λˆ„κ°€λ΄λ„ λ¦¬νŒ©ν† λ§ν•œ 방식이 μ˜¬λ°”λ₯Έ 방식이기에 걍 λ‚΄κ°€ 잠 μ’€ 쀄이고 μ½”λ“œ 둜직 μ‹Ή λ‹€ κ°ˆμ•„ μ—ŽκΈ°λ‘œ ν–ˆλ‹€.

μ½”λ“œλ₯Ό μ–΄λ–»κ²Œ λ°”κΎΈμ—ˆλŠ”μ§€λŠ” 3탄에 계속~

This post is licensed under CC BY 4.0 by the author.