- ๊ฐ๋ฐ ์ญ๋ ์ง๋จ์ ์ํ AI ๊ธฐ๋ฐ์ ์๋ ์ฑ์ ๋ฐ ๋ถ์ ๋ฐฑ์๋ ์๋ฒ์ ๋๋ค.
- ์๊ฐ์์ด ํ์ต์ ์ํ๋ ๊ด์ฌ ๋ถ์ผ(์นดํ ๊ณ ๋ฆฌ)๋ฅผ ์ ํํ๋ฉด, ์๋ฒ์์ ํด๋น ๋ถ์ผ 10๊ฐ์ ์์ ํ ๋ฌธ์ ๋ฅผ ์๊ฐ์์๊ฒ ์ ๊ณตํฉ๋๋ค.
- ๋ต๋ณ์ด ์ ์ถ๋๋ฉด, ๋น๋๊ธฐ๋ก ์ฑ์ ์ด ์์๋ฉ๋๋ค.
- ์ฑ์ ์ด ์๋ฃ๋๋ฉด, ์ฑ์ ๋ ๋ด์ฉ ๊ธฐ๋ฐ์ผ๋ก ์ข ํฉ ๋ ํฌํธ๋ฅผ ์์ฑํฉ๋๋ค.
- ์ข ํฉ ๋ ํฌํธ ์์ฑ์ด ๋๋ฉด, Kafka ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ํตํด ์๊ฐ์์๊ฒ ์๋ฆผ์ด ์ ๊ณต๋ฉ๋๋ค.
- ์ดํ ์๊ฐ์์ ๋ณธ์ธ์ด ํผ ๋ฌธ์ ์ ๋ํด์ ์ข ํฉ ๋ ํฌํธ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ํจํค์ง ๊ตฌ์กฐ
leveltest
โโmain
โ โโjava/com/lgcms/leveltest
โ โ โโcommon
โ โ โ โโdto
โ โ โ โโkafka
โ โ โโconfig
โ โ โโcontroller
โ โ โโdomain
โ โ โโdto
โ โ โโevent
โ โ โโrepository
โ โ โโservice
โ โโresources
โโtest/java/com/lgcms/leveltest
| ์ด๋ฆ | ์ญํ |
|---|---|
| ์กฐ๋ฏผ์ค | Level Test ๋ฐฑ์๋ ๊ฐ๋ฐ |
| ์ด์ฌ์ | CI/CD, ๋ชจ๋ํฐ๋ง |
- ์๊ฐ์ โ API ์๋ฒ : ๊ด์ฌ ๋ถ์ผ ์นดํ ๊ณ ๋ฆฌ ID๋ฅผ ํฌํจํ์ฌ ๋ฌธ์ ์์ฑ ์์ฒญ
- API ์๋ฒ:
- ์์ฒญ๋ ์นดํ ๊ณ ๋ฆฌ์ ํด๋นํ๋ ๋ฌธ์ ๋ค์ DB์์ ์กฐํํฉ๋๋ค.
- 'ํ(3), ์ค(4), ์(3)'์ ๋์ด๋ ๋น์จ์ ๋ง์ถฐ 10๊ฐ์ ๋ฌธ์ ๋ฅผ ๋๋ค์ผ๋ก ์กฐํฉํฉ๋๋ค.
- API ์๋ฒ โ ์๊ฐ์: ์กฐํฉ๋ 10๊ฐ์ ๋ฌธ์ ๋ชฉ๋ก์ ์๋ต์ผ๋ก ๋ฐํํฉ๋๋ค.
์ฌ์ฉ์๊ฐ ์ํ๋ ๊ด์ฌ ๋ถ์ผ๋ฅผ ์ ํํ๋ฉด, ํด๋น ๋ถ์ผ์ ์ญ๋์ ํ๊ฐํ ์ ์๋ 10๊ฐ์ ์์ ํ ๋ฌธ์ ๊ฐ ๋์ด๋๋ณ๋ก ์๋ ๊ตฌ์ฑ๋์ด ์ ๊ณต๋ฉ๋๋ค.
-
์ฌ์ฉ์ โ API ์๋ฒ: ์์ฑํ 10๊ฐ์ ๋ต๋ณ์ ์ผ๊ด ์ ์ถ
-
API ์๋ฒ:
- DB์ ๋ต๋ณ์ ์ฑ์ ๋๊ธฐ ์ํ๋ก ์ ์ฅํฉ๋๋ค.
- ๋น๋๊ธฐ ์ฑ์ ์๋น์ค๋ฅผ ํธ์ถํฉ๋๋ค.
- ์ฌ์ฉ์์๊ฒ ์ ์ถ ์๋ฃ ์๋ต์ ์ฆ์ ๋ฐํํฉ๋๋ค.
-
๋น๋๊ธฐ ์ฑ์ ์๋น์ค (๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ):
-
[1๋จ๊ณ] ๋ฌธํญ๋ณ ์ฑ์ : ์ ์ถ๋ 10๊ฐ์ ๋ต๋ณ์ ํ๋์ฉ LLM์๊ฒ ์ ์กํ์ฌ ์ฑ์ ์ ์งํํฉ๋๋ค. ์ฑ์ ๊ฒฐ๊ณผ๋ฅผ DB์ ์ ๋ฐ์ดํธํฉ๋๋ค.
-
[2๋จ๊ณ] ํต์ฌ ๊ฐ๋ ๋ถ์: ์ฑ์ ์ด ์๋ฃ๋ ๋ต๋ณ ์ ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก LLM์ด ํต์ฌ ๊ฐ๋ ์ดํด๋๋ฅผ ๋ถ์ํฉ๋๋ค.
-
[3๋จ๊ณ] ์ข ํฉ ํผ๋๋ฐฑ ์์ฑ: AI๊ฐ ๋ชจ๋ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์ข ํฉ ํผ๋๋ฐฑ ๋ฐ ํ์ต ์ถ์ฒ ๋ด์ฉ์ ์์ฑํฉ๋๋ค.
-
[4๋จ๊ณ] ๋ ํฌํธ ์์ฑ ๋ฐ ์ ์ฅ : ๋ชจ๋ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ทจํฉํ์ฌ DB์ ์ต์ข ๋ฆฌํฌํธ๋ฅผ ์์ฑ ๋ฐ ์ ์ฅํฉ๋๋ค.
-
-
Kafka Producer: ๋ฆฌํฌํธ ์์ฑ ์๋ฃ ์ด๋ฒคํธ๋ฅผ Kafka ํ ํฝ์ผ๋ก ๋ฐํํฉ๋๋ค.
-
์๋ฆผ ์๋ฒ (Kafka Consumer): ์ด๋ฒคํธ๋ฅผ ์์ ํ์ฌ ์ฌ์ฉ์์๊ฒ ์๋ฆผ์ ์ ์กํฉ๋๋ค.
๋ต๋ณ ์ ์ถ ์, ๋ฌด๊ฑฐ์ด ์ฑ์ ์์ ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. 3๋จ๊ณ์ ๊ฑธ์น AI ๋ถ์์ ํตํด ์์ธํ ์ฑ์ , ์ฌ์ธต์ ์ธ ๊ฐ๋ ์ดํด๋ ๋ถ์, ๋ง์ถคํ ์ข ํฉ ํผ๋๋ฐฑ์ด ํฌํจ๋ ๋ฆฌํฌํธ๊ฐ ์์ฑ๋๋ฉฐ, ์๋ฃ ์ Kafka๋ฅผ ํตํด ์ฌ์ฉ์์๊ฒ ์๋ฆผ์ด ์ ์ก๋ฉ๋๋ค.
- ์ฌ์ฉ์๋ Spring, React, Database ๋ฑ ์ํ๋ ๊ธฐ์ ์คํ์ ์ ํํ์ฌ ๊ฐ๋ฐ ๊ธฐ์ ๊ด๋ จ ์ญ๋ ์ง๋จ ํ ์คํธ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค.
- LLM์ด ์ฌ์ฉ์ ๋ต๋ณ์ ์ฑ์ ํ๊ณ ์์ธํ ๊ฐ๋ ๋ณ ์ดํด๋ ๊ธฐ๋ฐ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
- ๊ฐ๋ณ ๋ฌธํญ ์ฑ์ ๊ฒฐ๊ณผ๋ฅผ ๋์ด, ํ ์คํธ ์ ๋ฐ์ ๊ฑธ์น ํต์ฌ ๊ฐ๋ ์ดํด๋๋ฅผ ๋ณ๋๋ก ๋ถ์ํ๊ณ ์ข ํฉ์ ์ธ ๊ฐ์ , ์ฝ์ , ์ถ์ฒ ํ์ต ๋ฐฉํฅ์ ์ ์ํ๋ ๋ ํฌํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋ ํฌํธ ์์ฑ์ด ์๋ฃ๋๋ฉด Kafka ์ด๋ฒคํธ๋ฅผ ํตํด ์ฌ์ฉ์์๊ฒ ์ฆ์ ์๋ฆผ์ ๋ณด๋ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ํ์ธํ ์ ์๋๋ก ํฉ๋๋ค.
์๊ฐ์์ ๋ ํฌํธ ํ์คํ ๋ฆฌ ์ต์ ์นดํ ๊ณ ๋ฆฌ๋ก ๋ชจ๋ ๊ธฐ๋ก์ ์นดํ ๊ณ ๋ฆฌ ์ ์ฅ ์ด์
- ๋ฌธ์ ํ์
- ๋ ํฌํธ ํ์คํ ๋ฆฌ ์กฐํ ์, ๊ณผ๊ฑฐ์ ์์ํ๋ ๋ชจ๋ ๋ ํฌํธ์ ์นดํ ๊ณ ๋ฆฌ๊ฐ ๊ฐ์ฅ ์ต๊ทผ์ ์์ํ ์ํ์ ์นดํ ๊ณ ๋ฆฌ๋ก ํต์ผ๋์ด ํ์๋๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. (์: ๊ณผ๊ฑฐ 'Java' ๋ ํฌํธ๊ฐ 'Docker'๋ก ํ์๋จ)
- ์์ธ ๋ถ์
- ๋ฐ์ดํฐ ์ค๊ณ ์ค๋ฅ: LevelTestReport ์ํฐํฐ์ ์ด๋ค ์นดํ ๊ณ ๋ฆฌ์ ์ํ์ด์๋์ง ๊ธฐ๋กํ๋ category ํ๋๊ฐ ๋๋ฝ๋์ด ์์์ต๋๋ค.
- ์๋ชป๋ ๋์ ์กฐํ: ์นดํ ๊ณ ๋ฆฌ ์ ๋ณด๊ฐ ์์๊ธฐ ๋๋ฌธ์, ํ์คํ ๋ฆฌ๋ฅผ ์กฐํํ ๋๋ง๋ค "ํ์์ ๊ฐ์ฅ ์ต๊ทผ ๋ต๋ณ 10๊ฐ"๋ฅผ ๊ธฐ์ค์ผ๋ก ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ถ์ธกํ์ต๋๋ค. ์ด ๋๋ฌธ์ ๋ชจ๋ ๊ณผ๊ฑฐ ๋ฆฌํฌํธ๊ฐ ํญ์ ์ต์ ์ํ์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ฐ๋ผ๊ฐ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
- ํด๊ฒฐ ๊ณผ์
- ์ํฐํฐ ์์ : LevelTestReport ์ํฐํฐ์ category ํ๋๋ฅผ ์ถ๊ฐํ์ฌ, ๋ฆฌํฌํธ ์์ฑ ์์ ์ ์นดํ ๊ณ ๋ฆฌ ์ ๋ณด๊ฐ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋๋๋ก ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์์ ํ์ต๋๋ค.
- ์์ฑ ๋ก์ง ์์ : createReport ๋ฉ์๋๊ฐ ์คํ๋ ๋, ํด๋น ์ํ์ ์นดํ ๊ณ ๋ฆฌ ์ ๋ณด๋ฅผ ์กฐํํ์ฌ ์ category ํ๋์ ์ ์ฅํ๋๋ก ๋ก์ง์ ๋ณ๊ฒฝํ์ต๋๋ค.
- ์กฐํ ๋ก์ง ๋จ์ํ: ๋ถํ์ํ๊ณ ์๋ชป๋ ๋์ ์กฐํ ๋ก์ง์ ์ ๊ฑฐํ๊ณ , DB์ ์ ์ฅ๋ ๊ฐ ๋ฆฌํฌํธ์ category ๊ฐ์ ์ง์ ์ฝ์ด์ค๋๋ก ์์ ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ฑ๋ฅ์ ๊ฐ์ ํ์ต๋๋ค.
-
๋ฌธ์ ํ์
- LLM์ด ๋ฐํํ๋ '๊ฐ๋ ๋ณ ์ดํด๋' ์ ์๊ฐ ์ฝ์๋ 1~5์ ๋ฒ์๋ฅผ ์ด๊ณผํ๋ ๊ฐ(์: 7์ , 8์ )์ผ๋ก ์์ฑ๋์์ต๋๋ค. ์ด๋ก ์ธํด ๋ฆฌํฌํธ ์์ฑ ์ค ์์คํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
-
์์ธ ๋ถ์
- ์ด๊ธฐ์๋ AI๊ฐ ๊ท์น์ ๋ฐ๋ฅด์ง ์๋ ๋ฌธ์ ๋ก ์ถ์ธกํ์ผ๋, ์ง์ง ์์ธ์ ํ๋กฌํํธ ์ค๊ณ์ ๋ชจํธ์ฑ์ ์์์ต๋๋ค.
- ๊ฐ๋ณ ๋ฌธ์ ์ฑ์ ํ๋กฌํํธ(GradingPrompt.java)์ JSON ์๋ต ํ์ ๋ด์, ์ด๋ฆ์ ๊ฐ์ง๋ง(score) ์๋ฏธ์ ๋ฒ์๊ฐ ๋ค๋ฅธ ๋ ํ๋๊ฐ ๊ณต์กดํ์ต๋๋ค.
- LLM์ด ๋ score ํ๋์ ๋งฅ๋ฝ์ ํผ๋ํ์ฌ, '๊ฐ๋ ์ดํด๋ ์ ์'์ '๋ฌธ์ ์ ์ฒด ์ ์'์ ๋์ ๋ฒ์๋ฅผ ์๋ชป ์ ์ฉํ ๊ฒ์ด ํต์ฌ ์์ธ์ด์์ต๋๋ค.
-
ํด๊ฒฐ ๊ณผ์
- ํ๋กฌํํธ ๋ช ํํ (์์ธ ์ ๊ฑฐ): AI์ ํผ๋์ ๋ง๊ธฐ ์ํด ํ๋กฌํํธ ๋ด studentScore ํ๋๋ช ์ questionScore๋ก ๋ณ๊ฒฝํ์ฌ, '๋ฌธ์ ์ ์'์ '๊ฐ๋ ์ ์'๋ฅผ ๋ช ํํ ๋ถ๋ฆฌํ์ต๋๋ค.
- ์ฝ๋ ๋ ๋ฒจ ๋ฐฉ์ด ๋ก์ง ์ถ๊ฐ (์์ ์ฑ ํ๋ณด): AI ์๋ต์ 100% ์ ๋ขฐํ ์ ์๋ค๋ ์์น ํ์, AI๋ก๋ถํฐ ๋ฐ์ ์ ์๋ฅผ DB์ ์ ์ฅํ๊ธฐ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์์ ๊ฐ์ ๊ฐ์ ๋ก ๋ณด์ ํ๋ ๋ก์ง์ ์ถ๊ฐํ์ต๋๋ค.
- LLM ํ๋กฌํํธ์ ๋ํด์ ๋ง์ด ๋ฐฐ์ ์ต๋๋ค.
- ์ ๋ฐ์ ์ผ๋ก MSA ํ๊ฒฝ์์ Spring์ ์ฒ์ ์จ๋ณด๋ฉด์ dto๋ถํฐ config, Service๋ก์ง ๋ฑ๋ฑ ๋ง์ ๊ฒ์ ๊ฒฝํํ ์ ์์์ต๋๋ค.
- Kafka ์ด๋ฒคํธ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ์ฒ์ ์ ํด๋ดค๋๋ฐ ์์ง ๋ง์ด ์ด๋ ต์ง๋ง ์ด๊ฒ ๋ํ ๋ฐฐ์ธ ์ ์์ด์ ์ข์์ต๋๋ค.