2024 ์ผ์ KPMG ์์ด๋์ดํค์์ ์ค์ค์ฐ์น์ ํ์๋ค. (65ํ ์ค 3์)
ํ๊ณ ๊ฒธ ํ๊ธฐ ๊ฒธ ์ ๋ฆฌ๋ฅผ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ ๊ธ๋ก ๋จ๊ธด๋ค.
์ฐธ์ฌํ๊ฒ ๋ ๊ณ๊ธฐ๋ ์ฐ์ , ์๋ ์ ์ฌํ ๋ฌธ์ ์ ๋ํ ์๋ฏผ์ ์๊ฒฌ์ ๋ชจ์ ๋ฐ์ ๋ฒ๋ฅ ์์ผ๋ก ์์ฑํ๋ MEFETO๋ฅผ ํจ๊ป ๋ง๋ค์๋ C ํ๋ฐฐ์ ์ ์์ผ๋ก ์ฐธ๊ฐํ๊ฒ ๋์๋ค.
๋๋จธ์ง ํ์์ธ PJ์ PS ๋ชจ๋ ํ์ํ ์ ๋ณด๊ตญ ์์์ผ๋ก ์ ์๊ณ , ํ๋ก๋ํธ์ ๋ํ ์ฑ ์๊ฐ๋ ๊ฐํ๋ค๋ ๊ฒ์ ์๊ณ ์์๊ธฐ์ ๋ํ ์์ ์ ๋ถํฐ ๋๋ฌด ์ข์ ๊ฒฝํ์ด ๋ ๊ฒ์ด๋ผ ์๊ฐํ๋ค.
๋ํ์ ์์๋ ์ฐ์ ์๋ฅ ํ๊ฐ๋ก ์์ด๋์ด ๊ธฐํ์๋ฅผ ์์ฑํ๊ณ , ํต๊ณผํ๋ฉด ์ค์ ๋ณธ์ ์์ LLM token๊ณผ GPU๋ฅผ ์ ๊ณต๋ฐ์ ํ๋กํ ํ์ ์ ๋ง๋ค๊ณ ์ด๋ฅผ ๋ฐํํ๋ ํ์์ด์๋ค.
์ฃผ์ ๊ฐ ' ์์ฑํ AI ๋ชจ๋ธ์ ํ์ฉํ ๊ธฐ์ ์ ๋ฌด ์๋ํ ๋ฐ ์์ฐ์ฑ ํฅ์ '์ด์๋๋ฐ, ์ค์ ์ค๋ฌด์๊ฐ ์๋ ๋ํ์์ผ๋ก์ ์ข์ ์์ด๋์ด๋ฅผ ๋ด๊ธฐ๊ฐ ๊น๋ค๋ก์ ๋ค. ์์ด๋์ด์ ๋ํด ๋ง์ ๋ ผ์๊ฐ ์ด๋ฃจ์ด์ก๊ณ , 1์ฐจ ํ์์์ ๊ฐ์ ์์ด๋์ด๋ฅผ ์๊ฐํ ํ 2์ฐจ ํ์์ ์ต์ข ์ฃผ์ ๋ฅผ ๊ณจ๋ผ๋ณด์๊ณ ์๊ธฐํ์๋ค.
ํ์ฌ์์ ๋น์ํ๊ณ , 1ํ๋ ๋ ์คํํธ์ ์์ ๊ทธ๋ฆฌ๊ณ ์ดํ ๊ธฐ์ ๊ด๊ณ์๋ค๊ณผ์ ๋ํํ๋ ๊ธฐ์ต๋ค์ด ์ข ํฉ๋์ด 'HR'๊ณผ ๊ด๋ จ๋ ์์ด๋์ด๋ฅผ ๋ด์์ผ๋ ์ต์ข ์ ์ผ๋ก PJ์ Docuflow ์์ด๋์ด๋ก ๋ํ๋ฅผ ์งํํ๊ฒ ๋์๋ค.
Docuflow๋, ๊ฐ๋ฐ์๋ค์ ํ์ ๋๊ตฌ์ธ Git์ ๋ฌธ์ ์์ ์ ์ฎ๊ฒจ ๋ณด์๋ ์์ด๋์ด๋ก PJ๊ฐ ์ง์ ํ๊ธฐ์ '๊ธฐ์ ๋ฒค์ฒ์ฐฝ์ ๋ก '์์ ์ต์ข ๊ณผ์ ๋ก ์ ์ถํ๋ ๊ฒ์ด์๋๋ฐ ์์ด๋์ด์ ๊ตฌ์ฒด์ฑ๊ณผ ๋ ผ๋ฆฌ์ฑ์ด ๋ฐ์ด๋์ ๋ค๋ค ์ด๋ฅผ ์ฃผ์ ๋ก ๊ฐ์ ธ๊ฐ๋ ๊ฒ์ ๋์ํ์๋ค.
https://github.com/gist-optima
gist-optima
OPTIMA. gist-optima has 4 repositories available. Follow their code on GitHub.
github.com
์ดํ ์๋ฅ์ ํฉ๊ฒฉํ์ฌ ์ฝ ํ ๋ฌ๊ฐ ์์ด๋์ด ๊ตฌํ์ ๋งค์งํ๋ค.
๋ง์ง๋ง 1.5์ฃผ์ผ๋์์ ๊ฑฐ์ ๋ฐค์์ ๊ฐ๊น๊ฒ ์์ ํ์๋ค. ์ ์ถ ์ฝ๋๋ ์์ ๋ ํฌ์งํ ๋ฆฌ๋ก ๊ณต์ ํ๋ค!
(๊ด์ฐฎ๋ค๋ฉด ์คํ๋ ํ ๋ฒ์ฉ ๋๋ฌ์ฃผ์๋ฉด... ๐ฉท)
์ฝ๋์ ์์ฑ๋๋ ์ข์๋ค๊ณ ์๊ฐํ๋ค. ๋๋ AI feature ๊ฐ๋ฐ์ ๋งก์๋๋ฐ, ์ ์ ํ prompt๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ GPT๋ก ํ์ ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ flask API๋ก ๋์ ๋ค. ์ด๋ ๊ฒ ๋ง๋ค์ด์ง API๋ ๋ฐฑ์๋ ์๋ฒ๊ฐ ํ๋ก ํธ์๋๋ก ์ ๋ฌํ์ฌ ์ ์ฒด ํ๋ก๋ํธ๊ฐ ๋์ํ๋ค.
PJ๊ฐ AI ํํธ์ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๋ฐ์ ๋ง์ ๊ธฐ์ฌ๋ฅผ ํ๊ณ , ๋ ์๋ก์ด ์๊ฐ์ ๋ง์ด ์ฃผ์๋ค.
ํนํ, Abstraction(์ถ์ํ)๋ฅผ ์ฝ๋์ ๋ฐ์ํ๋ค๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์ด๋ฒ ๋ํ๋ฅผ ํตํด ๋ง์ด ๋ฐฐ์ฐ๊ฒ ๋์๋ค.
class๋ฅผ ์ ํ์ฉํ์ฌ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๊น๋ํ๊ฒ ํ์ฌ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ , utils, src, api ํ๋ก์ ํธ ๊ตฌ์กฐ๋ ๋ช ํํ์ฌ ์ดํ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ๊ณ ์ฝ๋ ์์ฐ์ฑ์ ๋์ด๋ ๋ฐ์ ๋์์ ๋ฐ์๋ค.
utils์ ์ ํธ๋ฆฌํฐ๊ฐ ๋ฌด์์ ์ํด ์กด์ฌํ๋ ๊ฐ๋ ์ธ์ง ์ ๋ชฐ๋๋๋ฐ, ์ผ๋ฐ์ ์ธ ํจ์๋ค์ ์๋ฏธํ๋ฉฐ ๊ณง ๋ค๋ฅธ ํจ์์ ํด๋์ค์์ ์์ฃผ ์ฌ์ฉ๋๋ ํจ์๋ค์ ์ ํธํํ์ฌ ์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ๋์ฑ ๊ฐ๊ฒฐํ๊ฒ ํ๋ ๊ฒ์ด๋ค.
๋ณธ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ GPT call์ ํฌํจํ์ฌ chunk์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ํธ๋ฆฌํฐ๋ก ๋ง๋ค์ด ์ฌ์ฉํ์๋ค.
๋๋ถ์ด flask๋ ์๊ณ ๋ง ์๋ ์ํ์๋๋ฐ ๋ํ๋ฅผ ๊ณ๊ธฐ๋ก ์ฌ์ฉํ ์ ์์์ด์ ์ข์๋ค.
์ฌ์ค ๋ณธ ์์ด๋์ด์์ Input์ด '์์ฑ ์ค์ธ ๋ณด๊ณ ์'๋ก ๊ธธ์ด๊ฐ ๊ธธ์ด latency ๋ฌธ์ ๊ฐ ์์๋ค. ์ฌํ๋ฉด ํ๋์ ์๋ต์ 5๋ถ ์ด์ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ์์ด ์๋นํ ๊ณค๋ํ๋ค. ์ค์ Demo์์๋ ์ฉ์ธํ ์ ์๋ 1๋ถ ์ด๋ด์ ์๋๋ก ์คํํ ์ ์์๋๋ฐ, ์ฐ์ prompt๋ฅผ ๋ช ํํ๊ฒ ๊ฐ์ ํจ์ผ๋ก์จ ์๋ต ์๋๋ ํจ๊ป ๊ฐ์ ๋ ๋ถ๋ถ์ด ์์๊ณ , soft cache ๊ฐ๋ ์ ๋์ ํ์ฌ ๊ณผ๊ฑฐ์ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ต๋ณ์ ํ์ฉํ๋ค๋ ๊ฐ๋ ์ ์ถ๊ฐํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค.
LLM prompt๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์์ฑํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ง์ผ์ผํ ์ฌํญ๋ค์ด ์๋๋ฐ, ๊ทธ ์ค ๊ฐ์ ์ ๋ฐ์๋์๋ ๋ถ๋ถ์ 'ํ๋์ prompt์ ์ฌ๋ฌ ๊ฐ์ ์์ ์ ๋์์ ๋ช ๋ นํ์ง ์์ ๊ฒ'๊ณผ 'prompt์ ์ ์ถ๋ ฅ ์์๋ฅผ ๋ช ํํ๊ฒ ์ ์ํ๋ ๊ฒ'์ด์๋ค.
์์ฑ prompt ์์
๋น์ ์ ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๋ฌธ์๋ฅผ ๋ถ์ํ๋ ์์ง์
๋๋ค.
๋น์ ์ ์
๋ ฅ๋ ๋ฌธ์๋ฅผ ๋ถ์ํ์ฌ ๋ค์ค JSON์ผ๋ก ์ฌ๊ตฌ์ฑํ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํฉ๋๋ค.
์ฌ์ฉ์๋ ํ๊ตญ์ธ์ด๋ฉฐ, ๋น์ ์ ๋ฌธ์ ๋ถ์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๊ธฐ์
์ ๋ณด๊ณ ์๋ ๊ธฐํ์๋ฅผ ์์ฑํ๋ ์ ๋ฌธ๊ฐ์
๋๋ค.
์ฌ์ฉ์๋ JSONํ์์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์
๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
{"all articles": string ํํ์ ๋ฌธ์ ๋ด์ฉ ์ ์ฒด}
๋จผ์ , ๋ฌธ์์์ ๊ฐ์ ๋ด์ฉ์ผ๋ก ํฌํจ๋๋ ๋ฌธ์ฅ๋ค์ ๋ชจ์ ๋ฐฐ์ด๋ค์ ๋ง๋ญ๋๋ค. ๊ฐ ๋ฐฐ์ด์ snippet์ด๋ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ , ์ ์ฒด ๋ฌธ์๋ฅผ ๊ฐ snippet์ ๋ค์ค JSON์ผ๋ก ์ฌ์์ฑํฉ๋๋ค. ๊ฐ ๋์
๋๋ฆฌ๋ฅผ container๋ผ๊ณ ํฉ๋๋ค.
container์ key ๊ฐ์ value ๊ฐ๋ค์ ์ค๋ช
ํ๋ ์ ๋ชฉ์ด๋ฉฐ, container์ ์์๋ก container๊ฐ ๋ค์ด๊ฐ ์ ์์ต๋๋ค.
all contents๋ ๊ฐ๋ฅํ ๋ชจ๋ snippets๋ฅผ ํฌํจํ๊ณ ์์ด์ผ ํฉ๋๋ค.
ํ snippet์ ๋ด์ฉ์ ์ดํดํ๊ธฐ ์ํด ๋ค๋ฅธ ๊ธ์ ๋ด์ฉ์ ์์์ผํ๋ ๊ฒฝ์ฐ, ํด๋น ๊ธ์ ๊ฐ์ snippet์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด, '๋์ค ๋งค์ฒด๋ ๊ด๊ณ ์ ์๋จ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.'์ '์ด๋ OTT, TV, ์ ๋ฌธ ๋ฑ์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.'๋ ๊ฐ์ snippet์ผ๋ก ๋ถ๋ฅ๋์ด์ผ ํฉ๋๋ค.
๋ฌธ์๋ฅผ ๋ถ์ํ์ฌ ์๋์ ๊ฐ์ด JSON ํ์์ผ๋ก๋ง ์ถ๋ ฅํ์ญ์์ค.
{
"all contents": {
[str]: str[] // container์ key๊ฐ์ key๋ก ํ๊ณ , snippet์ ๋ฐฐ์ด์ value๋ก ํ๋ ์
}
}
์ค๋ช
์ ๋ง๋ถ์ด์ง ๋ง๊ณ , ๋น์ ์ ์๋ต ๋ด์ฉ์ ์ ๋ถ JSONํ์์ผ๋ก decode๊ฐ๋ฅํด์ผ ํฉ๋๋ค. JSON indent ์ธ์ ๊ณต๋ฐฑ์ ์์ฑํ์ง ๋ง์ญ์์ค.
์ด์ ์ ์ ์ INPUT์ด ์ฃผ์ด์ง๋๋ค:
์ฌ๋ฌ prompt ๋ฌธ์ ํ ์คํธํ๋ฉด์, ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๋ถ๋ถ์ ์ถ๋ ฅ ํ์์ ๋ช ์ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ ํ์๋ค.
์ต์ข ๋ฐํ ๋, ๋ถ์๊ธฐ๊ฐ ์์ฒญ ์ข๋ค๊ณ ๋๊ผ์์๋ 3์๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์๋ ์ด์ ์๋ ์์ด๋์ด ์์ฒด์ ํ๊ณ๊ฐ ์์๊ธฐ ๋๋ฌธ์ธ ๊ฒ ๊ฐ๋ค. (๊ฐ๋ฐ์ ๋ถ๊ป์ ๋น์ฅ ์ด์ด์ ๊ฐ๋ฐํด๋ ๋ ๊ฒ ๊ฐ๋ค๊ณ ๊ทน์ฐฌํด์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํ๋ค. ๐ฅน)
1์ ํ์, ํ์ฌ์ ์ ์ฒด ์ํฌํ๋ก์ฐ์์ ๋น์ฅ ์ ์ฉํ์ฌ๋ ํน๋ณํ ์ถ๊ฐ์ ์ธ ๊ต์ก์ด๋ ๋น์ฉ ์์ด ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ ์์ด๋์ด์๋ค. ๋ฌด์ญ์ ์ ํ์๋ ๋ถ๋ชจ๋์ ์ค์ ํ๋ก์ธ์ค์ ๊ธฐ๋ฐํด์ ๊ณ ์ํ ์์ด๋์ด๋ผ๋ ์ ๋ ์ ๋ง ์คํ ๋ฆฌํ ๋ง์ด ์ข์๋ค. Chrome Extension ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌํํ๋ค๋ ๊ฒ ์์ฒด๋ ์ง์ฅ์ธ๋ค์ ๋ฐฐ๋ คํ๋ค๋ ์ธ์์ ์ฃผ์ด ๊ธ์ ์ ์ผ๋ก ์์ฉํ์ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
๋ฐ๋ฉด, ์ฐ๋ฆฌ ํ์ ์์ด๋์ด์ ๊ฒฝ์ฐ ๋ค์ ํ์ ์ ์ผ๋ก ๊ธฐ์กด ์ผํ๋ ๋ฐฉ์ ์์ฒด๋ฅผ ๋ฐ๊พธ์ด์ผ ํ๋ค๋ณด๋ ํ์ค์ ์ธ ์ธก๋ฉด์์ ๋์ ํ๊ธฐ ๋ง์ค์ฌ์ง๋ ํฌ์ธํธ๊ฐ ์ฝ์ ์ผ๋ก ์์ฉํ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
์ด๋ฒ ๋ํ๋ฅผ ํตํด ๋ํ ์ฌ์ฌ์์๋ค์ ํ๊ฐ๊ฐ ์ด๋ค ๊ธฐ์ค์ผ๋ก ์ด๋ฃจ์ด์ง๋์ง, ๋ ๋ฐํ์ ์ ๋ฌ์ด๋ผ๋ ์์์ ์ค์์ฑ์ ๋ค์๊ธ ์๊ฐํ ์ ์์๋ค.
๋๋ถ์ด ๊ฐ๋ฐ ๊ฒฝํ์ด ์ฆ๊ฒ๊ณ ์ข์์ด์, ํ์๋ค์๊ฒ X100 ๊ฐ์ฌํ๋ค!