๐Ÿฅ OpenAI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ์˜์›๋“ค์„ ์œ„ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ์ปจ์„คํŒ… ์„œ๋น„์Šค ํšŒ๊ณ 

๋™๋™ยท2023๋…„ 9์›” 4์ผ
0
post-thumbnail
ํ•ด๋‹น ํฌ์ŠคํŠธ๋Š” wecode์˜ ๊ธฐ์—…ํ˜‘์—…(์ธํ‹ฐ๊ทธ๋ ˆ์ด์…˜) ์ค‘ ํ”„๋กœ์ ํŠธ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค !

๐Ÿ“š ํ”„๋กœ์ ํŠธ

  • ํŒ€ ์ด๋ฆ„ : ์•Œ๊ณ ํ™€๋ฆญ (Algoholic)
  • ์š”์•ฝ : ํ•ด๋‹น ๊ธฐ์—…์˜ MEMBERS ํ•œ์˜์›๋“ค์˜ ์ˆ˜๊ฐ€ ์‚ฌ๋žŒ์ด ๊ฐ๋‹นํ•˜๊ธฐ์—” ๋ฒ…์ฐฐ ์ •๋„๋กœ ๋งŽ์•„์ ธ ๊ฐœ๋ณ„์ ์ธ ์ ‘์ด‰์ด ์–ด๋ ค์›Œ์ง€๊ณ  ์žˆ์Œ. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด AI๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•œ์˜์›๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ์ปจ์„คํŒ… ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•จ.
  • ๊ตฌ์„ฑ์› : BE 2๋ช…
  • ๊ธฐ์ˆ  ์Šคํƒ : Javascript, Node.Js, Fastify, PostgreSQL
  • ๊นƒํ—ˆ๋ธŒ ๋งํฌ : ๋น„๊ณต๊ฐœ ๋ ˆํฌ์—ฌ์„œ X

๐Ÿ“— ํ”„๋กœ์ ํŠธ ๋‚ด ์—ญํ• 

  • ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
  • Swagger๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•œ ๊ธฐ๋Šฅ ์ž๋™ ๋ฌธ์„œํ™”

๐Ÿ“• API Flow

  • POST questions: ํ”ผ๋“œ๋ฐฑ ์งˆ๋ฌธ ์ƒ์„ฑ
    1. ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ถ„์„ ๊ธฐ๊ฐ„์˜ memberId, startMonth, startYear, endMonth, ๊ทธ๋ฆฌ๊ณ  endYear๋ฅผ ํฌํ•จํ•ด์„œ POST ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
    2. Axios์™€ Swagger๋ฅผ ํ†ตํ•ด 5๊ฐœ์˜ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉฐ ๋ฉค๋ฒ„์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค
    3. ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ •๋ฆฌํ•˜์—ฌ ์—ฐ๋„์™€ ์›”๋ณ„๋กœ ํ•ฉ์นฉ๋‹ˆ๋‹ค
    4. OpenAI
      1. CSV ๋ฐ์ดํ„ฐ๋ฅผ OpenAI์— ์ „์†กํ•˜๊ณ , 10๊ฐœ์˜ ๋ถ„์„๊ณผ ํ”ผ๋“œ๋ฐฑ ์งˆ๋ฌธ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
      2. ๊ฒฐ๊ณผ์˜ ์ •ํ™•์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด, ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜๋ฉฐ ํ”„๋กฌํ”„ํŠธ์™€ temperature๋ฅผ ์กฐ์ ˆํ–ˆ์Šต๋‹ˆ๋‹ค.
    5. ์ƒ์„ฑ๋œ ์งˆ๋ฌธ๋“ค์„ Postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค
  • GET questions: ํ”ผ๋“œ๋ฐฑ ์งˆ๋ฌธ ์กฐํšŒ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฐ๊ณผ์˜ memberId๊ณผ ๊ธฐ๊ฐ„์„ ํฌํ•จํ•ด์„œ GET ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ์งˆ๋ฌธ๋“ค์„ ์œ ์ €ํ•œํ…Œ ๋ณด๋ƒ…๋‹ˆ๋‹ค

๐Ÿ“˜ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘ ์ƒ๊ธด ์ด์Šˆ ๋ฐ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

  • OpenAI๋ฅผ ํ†ตํ•œ ์งˆ๋ฌธ ์ƒ์„ฑ ๊ณผ์ •์—์„œ์˜ ์ด์Šˆ

    • swagger๋ฅผ ํ†ตํ•ด ๋ฐ›์•„์˜จ data๋ฅผ ๊ฐ์ฒดํ˜•์‹์œผ๋กœ ai์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๊ณ  ์งˆ๋ฌธ์„ ์ƒ์„ฑ โ†’ ์งˆ๋ฌธ์˜ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ์ƒ๋‹นํžˆ ๋‚ฎ์Œ.
    • data์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹˜์ด๋ผ๊ณ  ์ƒ๊ฐ์„ ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ ๋ฐ temperature๋ฅผ ์ˆ˜์ • โ†’ ๊ฒฐ๊ณผ ์—ฌ์ „ํžˆ ๋˜‘๊ฐ™์Œ.
    • ์ด์ฏค ๋ผ์„œ์•ผ ai๊ฐ€ ๊ฐ์ฒด์ธ data๋ฅผ ์ œ๋Œ€๋กœ ๋ชป๊ฐ€์ ธ์˜ค๋Š” ๊ฑด ์•„๋‹Œ๊ฐ€๋ฅผ ๋А๊ปด csvํ˜•ํƒœ๋กœ ์ˆ˜์ •. โ†’ ๊ฒฐ๊ณผ ๋งŒ์กฑ.
  • ์ƒ์„ฑ๋œ ์งˆ๋ฌธ์„ DB์— ์ ์žฌ ์‹œ ์ƒ๊ธด ์ด์Šˆ

    • OpenAI๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ 10๊ฐœ์˜ ์งˆ๋ฌธ์„ postgreDB์— 01 ~ 10 ์ˆœ์œผ๋กœ ์ ์žฌํ•˜๊ธฐ ์œ„ํ•ด ์ดˆ๋ฐ˜์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋กœ์ง์œผ๋กœ ์ ์žฌ๋ฅผ ํ•˜์˜€๋‹ค.

      ํ•˜์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์‹œ ์งˆ๋ฌธ์˜ ์–‘์ด 10๊ฐœ ์ด์ƒ์ผ ์‹œ์—๋Š” for๋ฌธ ๋ฐ–์˜ for๋ฌธ์„ ์จ์•ผํ•˜๋Š” ๋“ฑ ์ƒ๋‹นํžˆ ๋ฒˆ๊ฑฐ๋กญ๊ฒŒ ๊ตฌํ˜„์„ ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฑธ ๊นจ๋‹ฌ์•˜๋‹ค. ๊ทธ๋ž˜์„œ javascript์˜ ๋‚ด์žฅ ํ•จ์ˆ˜์ธ padStart()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

๐Ÿค” ๋А๋‚€์  ๋ฐ ๋ฐฐ์šด์ 

  • ์ข‹์€ ์ฝ”๋“œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
    • ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘ ์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๋ถ„์˜ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ 2๋ฒˆ ๋ฐ›์•˜์Œ.
    • ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ›๋Š” ์ค‘ ์ €๋• ๋‚ด๊ฐ€ ์™œ ์ฝ”๋“œ๋ฅผ ์ €๋ ‡๊ฒŒ ์งฐ์„๊นŒ ํ•˜๋Š” ๋ถ€๋ถ„์ด ๋งŽ์ด ์ƒ๊ฐ์ด ๋“ฆ.
    • ๋˜ํ•œ ํŒ€ ๋‹จ์œ„์˜ ํ”„๋กœ์ ํŠธ์ž„์œผ๋กœ ๋‚ด๊ฐ€ ์ง  ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋ถ„์ด ๋ดค์„ ๋•Œ ์ดํ•ด๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์€ ๋กœ์ง์„ ๋ณผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ฐ€์žฅ ํฌ๊ฒŒ๋Š” ํ•จ์ˆ˜๋ช…์„ ๋ณด๊ณ  ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ์‰ฝ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋จ โ†’ ํ•จ์ˆ˜๋ช…๋งŒ ๋ณด์•„๋„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์œผ๋ ค๊ณ  ๋…ธ๋ ฅ ์ค‘์ž…๋‹ˆ๋‹ค !
profile
๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ โ†’ donghyeun02.com

0๊ฐœ์˜ ๋Œ“๊ธ€