<Assist! Code Lingo>๋ ์์ฑ ์ค์ธ ํ์ด์ฌ ์ฝ๋๋ฅผ ๋ถ์ ๋ฐ ์์ฝํ์ฌ ์ถ์ฒ ์ฝ๋๋ฅผ ์ ๊ณตํ๊ฑฐ๋, ๋ถ์ ๋ด์ฉ์ ์ธํฐ๋ท์ ๊ฒ์ํ๋ VSCode Extension์ ๋๋ค.
์ต๊ทผ์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ IDE๋ฅผ ๊ผฝ์๋ฉด ๋จ์ฐ VSCode๋ผ๊ณ ํ ์ ์์ต๋๋ค.
Extension์ ํตํด์ ์๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ค์ํ ํ ๋ง๋ฅผ ์ ๊ณตํ ๋ฟ๋ง ์๋๋ผ, ์ฝ๋ ์์ฑ์ ๋ฐ์ฐจ๋ฅผ ๊ฐํ๋ ํ์ํ ๊ธฐ๋ฅ ๋๋ถ์ผ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ Idea๋ฅผ ์ป์์ต๋๋ค.
'์ด๋ค ๊ธฐ๋ฅ์ ํ๋๋ผ๋ Extension์ ํํ๋ก ํ ๋ฒ ๋ง๋ค์ด๋ณด์!' ๋ผ๊ณ ๋ง์ด์ฃ .
๊ทธ๋ ๊ฒ ์์ํ ์ด ํ๋ก์ ํธ๋ Valiant-Searching(VS) ์ด๋ผ๋ ํค์๋์ ๋ง๊ฒ ์ฌ์ฉ์์ ์ฝ๋๋ฅผ ๋ถ์ํ๊ณ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ฒ ๋์์ต๋๋ค.
- ์ฝ๋ ๋ถ์์ ํตํ ์ธ ๊ฐ์ง ์์ฝ ์ง๋ฌธ ์ ๊ณต
- ์ฌ์ฉ์ ์์ฒญ์ ์ํ ์ฝ๋ ์ถ์ฒ Assistant
- ๋ถ์๋ ์ฝ๋์ ๋ํ ์ง๋ฌธ์ ์๋์ผ๋ก ํฌํจํ๋ ๊ตฌ๊ธ ๊ฒ์ ๊ธฐ๋ฅ
ํด๋น ๊ธฐ๋ฅ์ ๋ชจ๋ Sidebar์ ์์นํ ๋ฒํผ์ผ๋ก ์คํํ ์ ์์ผ๋ฉฐ, ๋งค์ฐ ๊ธด๋ฐํ๊ฒ ํ๋ ฅํ์ฌ ๋น์ ์ ์ฝ๋ฉ์ ๋์์ค ๊ฒ์ ๋๋ค!
- Sungtae124(๊น์ฑํ) : Extension Parts (์ต์คํ ์ ๊ฐ๋ฐ ๋ถ๋ถ ์ ๋ฐ - TypeScript)
- RyuJinHyeok(๋ฅ์งํ) : Models & API (๋ชจ๋ธ ๊ตฌํ ๋ฐ ์ฝ๋ ๋ถ์ ํ์ด์ฌ ํํธ)
- ์ค์น
- ์ฌ์ฉ๋ฒ - ๊ตฌํ ์์น ๋ณ ์ค๋ช
- ๊ธฐ๋ฅ ๊ตฌํ ๋ณ ์ค๋ช
- ๋ถ์ ๋ชจ๋ธ ์ค๋ช
- License
- ์ฐธ๊ณ ์๋ฃ
- ๊ฐ๋ฐ ๊ด๋ จ ์ฌํญ
-
์์ ํ Extension์ผ๋ก ๊ฐ๋ฐ์ด ์๋ฃ๋ ๊ฒ์ด ์๋๋ผ์, ์ฝ๋๋ฅผ ์คํ์ํค๊ธฐ ์ํด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจํค์ง ์ค์น๊ฐ ํ์ํฉ๋๋ค.
-
GPT-API ํค๊ฐ ๋น ์ ธ์๋ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์ gpt_api.py์ ํค๋ฅผ ๋ฃ์ง ์์ผ๋ฉด ๋ถ์์ ๊ด๋ จํ ๋์์ ์คํํ ์ ์์ต๋๋ค.
-
1st) Node.js (npm) : https://nodejs.org/en
-
2nd) Yeoman : https://yeoman.io/
-
3rd) VS Code Extension Generator : https://www.npmjs.com/package/generator-code
npm install -g yo npm install -g yo generator-code pip install numpy pip install gensim pip install openai
๊ธฐ์กด์ VSCode์ Extension์ ์ฌ์ฉํด๋ณด์ ๋ถ๋ค์ ํฐ ์ด๋ ค์ ์์ด ์ฌ์ฉํ์ค ์ ์์ต๋๋ค.
์ฒ์ ์ฌ์ฉํ์๋ ๋ถ๋ ์ถ๊ฐ์ ์ธ ์ค๋ช ์์ด ์ธ ์ ์๋๋ก ์ค๊ณํ์ง๋ง, ํน์ ๊ถ๊ธํ ์ ์ด ์๋ค๋ฉด ์๋์ ์ค๋ช ์ ์ฐธ๊ณ ํด์ฃผ์ธ์!
(from. https://code.visualstudio.com/api/ux-guidelines/overview)
- Icon์ ํด๋ฆญํ๋ฉด Code Lingo์ ์ํธ์์ฉ ํ ์ ์๋ View๊ฐ Primary Sidebar์์ ์ด๋ฆฝ๋๋ค.
-
Buttons
- ์ฌ์ฉ์๋ ๋ฒํผ์ ํตํด์ ์ฌ์ ๋ฑ๋ก๋ ๋ช ๋ น์ด์ ์ฐ๊ฒฐ๋ ๊ฐ ๊ธฐ๋ฅ์ ์คํํ ์ ์์ผ๋ฉฐ, ์ด๋ ์ ๊ธฐ์ ์ผ๋ก ๋์ํฉ๋๋ค. ์์ธํ ์ค๋ช ์ ๊ธฐ๋ฅ ๊ตฌํ ๋ณ ์ค๋ช ์ ์ฒจ๋ถํ์์ต๋๋ค.
- Start Code Lingo : Code Lingo๊ฐ ํธ์ถ๋๊ณ ์ธ์ฌํด์ค๋๋ค.
- Analyze Code : ์ฝ๋๋ฅผ ๋ถ์ํ ๋ค ํค์๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ง๋ฌธ ํํ๋ก ๋ํ๋ด ์ค๋๋ค.
- Assist! Code Lingo : ์ฌ์ฉ์๊ฐ ์ ํํ ์ง๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ์ถ์ฒ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ณด์ฌ์ค๋๋ค.
- Search on Google :
- Analyze Code์์ ์ ๊ธฐ๋ ์ง๋ฌธ์ ๊ธฐ๋ณธ ๊ฒ์์ด๋ก ๋ฐ์์ ๊ฒ์ํฉ๋๋ค. (Enterํค ํ๋ฒ)
- ๊ฒ์์ด๋ฅผ ์ง์ ์ ๋ ฅ ๋ฐ์ ๊ฒ์ํ ์ ์์ต๋๋ค.
- ๊ธฐ๋ณธ ๋ธ๋ผ์ฐ์ ์ ์ ์ฐฝ์ผ๋ก ๋์์ค๋๋ค.
-
Interaction View
-
Code Lingo์ ๊ธฐ๋ณธ ์๋ด ๋ฉ์ธ์ง๋ค์ ์ข์ธก์ Interactions๋ก ํ์๋ฉ๋๋ค.
- ๊ฐ command๊ฐ ์คํ๋๋ฉฐ ์ฌ์ฉ์์๊ฒ ์งํ ์ํฉ๊ณผ ๊ด๋ จ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค.
-
์ด๋ค ๋ช ๋ น์ด๊ฐ ์คํ๋์๋์ง ๋ณด์ฌ์ค์ผ๋ก์จ Extension์ด ์ ์์ ์ผ๋ก ๋์ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์์๊ฒ ์ง์ ์๋ ค์ค์ผ ํ๋ ์ ๋ณด์ ๋ํด์ ๋ณ๋๋ก Message๋ฅผ ๋์์ค๋๋ค. (์ฐ์ธก ํ๋จ)
- ์ฝ๋ ๋ถ์ ํ ์ฌ์ฉ์์๊ฒ ๋ถ์๋ ์ ๋ณด๋ฅผ ๋ด์ ์ง๋ฌธ์ด ์ ์ ํ์ง ๋ฌผ์ด๋ณด๊ณ , ์ฌ์ฉ์๋ ๋ฒํผ์ผ๋ก ๊ฐ๋จํ๊ฒ ๋ต๋ณ์ด ๊ฐ๋ฅํฉ๋๋ค.
- Yes : ํ์ฌ ์ง๋ฌธ์ด ์ ์ ํ๋ค๋ ์๋ต์ผ๋ก, ์ด ์ง๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ๊ด๋ จ ํจ์๋ ์๊ณ ๋ฆฌ์ฆ์ ์ถ์ฒํด ๋๋ฆฝ๋๋ค.
- No : ํ์ฌ ์ง๋ฌธ์ด ๋ถ์ ํํ๋ค๋ ์๋ต์ด๋ฏ๋ก, ์์ฑ๋ ์ง๋ฌธ ์ค 2,3 ๋ฒ์งธ ์ง๋ฌธ์ ์ต์ ์ผ๋ก ์ ๊ณตํ์ฌ ์ฌ์ฉ์๊ฐ ์ ํํ ์ ์๋๋ก ํฉ๋๋ค.
- ์ต์ ์ค โRequest analysisโ๋ฅผ ์ ํ ์ ์ฝ๋ ๋ถ์์ ๋ค์ ์์ฒญํฉ๋๋ค.
- ๋ฏธ์๋ต : ์ถํ์ ๋ค์ ๋ถ์์ ์งํํ๊ณ ์๋ต์ ๋ฐ๋๋ก ์๋ดํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํตํด ์ ํํ ์๋ต์ ๋ฐ๋ผ ์ง๋ฌธ์ด ์ ์ฅ๋ฉ๋๋ค.
- ์ด ์ง๋ฌธ์ ๊ฒ์ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ ๊ฒ์์ด๋ก ์ ์ฅ๋ฉ๋๋ค.
- ์ด ์ง๋ฌธ์ด ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ๋์ด ๋ฐ๋ก ๋ถ์ฌ๋ฃ๊ธฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- 3๊ฐ์ง ์ต์
์ ์ ๊ณตํ์ฌ ์ฌ์ฉ์๊ฐ ์ ํํ๋ฉด ํด๋นํ๋ ๋์์ ์ํํฉ๋๋ค.
- ๋ถ์ํ ์ฝ๋๋ก๋ถํฐ ์์ฑ๋ ์ง๋ฌธ ์ค์ ์ฌ์ฉ์์๊ฒ ์ ํ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
- ์ฝ๋ ์ฌ๋ถ์ ์์ฒญ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
- ์ฝ๋ ๋ถ์ ํ์ ๋์ถ๋ ๊ฒฐ๊ณผ ์ง๋ฌธ์ ์ ํ๋ ์์๋๋ก 3๊ฐ๊น์ง ๋ณด์ฌ์ค๋๋ค.
- ์ฌ์ฉ์๋ ์ง๋ฌธ์ ํ์ธํ ๋ค Notification๊ณผ QuickPick์ผ๋ก ์๋ต์ด ๊ฐ๋ฅํฉ๋๋ค.
- Search on Google ๋ฒํผ ํด๋ฆญ์ ์ ๋ ฅ๊ฐ์ ๋ฐ์ต๋๋ค.
Button / Interaction (View) / Information message / Notification, Quick Pick, Output Channel / Console / Command
- Button : Start Code Lingo
- Command : CodeLingo.start
- Title : Code Lingo start
- ๋์ : ๋ช ๋ น ์คํ ์ โCode Lingo is started! May I assist you?โ๋ผ๊ณ ๋ฌผ์ผ๋ฉฐ ์ธ์ฌํฉ๋๋ค.
- Command : CodeLingo.getFileContent
- Title : get file content
- ์ฐ๊ฒฐ ํ์ผ : fileCopy.ts
- ํจ์ : readCurrentFileContent()
- ๋์ : VSCode ๋ด์ ์ด๋ ค์๋ ์ธ๋ถ ๊ฒฝ๋ก์ ์ฝ๋ ๋ด์ฉ์ ๋๊ธฐ์ ์ผ๋ก ์ฝ์ด์ ๋ฌธ์์ด๋ก ๋ฐํํฉ๋๋ค.
- โGetting file contentโ
- console.log๋ก VSCode์ ์ด๋ ค์๋ ์คํฌ๋ฆฝํธ ๋ด์ฉ์ด ์ฑ๊ณต์ ์ผ๋ก ๋ณต์ฌ๋์๋์ง ํ์ธ์ด ๊ฐ๋ฅํฉ๋๋ค. โํ์ผ ๋ด์ฉ์ ๊ฐ์ ธ์์ต๋๋ค. โ
- fileCopy.ts ์ธก์์ ์คํฌ๋ฆฝํธ ๋ณต์ฌ ์์ ์๋ฌ๊ฐ ์๋ค๋ฉด ์ฝ์๋ก ์๋ ค์ค๋๋ค.
- โํ์ผ์ ์ฝ๋ ๋์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.โ
- fileContent๋ฅผ ์ ์์ ์ผ๋ก ๋ถ๋ฌ์ค์ง ๋ชปํ๋ค๋ฉด : โํ์ผ ๋ด์ฉ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.โ ์ถ๋ ฅ.
- Button : Analyze Code
- Command : CodeLingo.letsAnalyzeCode
- Title : Letโs analyze your code!
- ์ฐ๊ฒฐ ํ์ผ : fileCopy.ts & externalAnalysisIO.ts & analyze.py
- ๋์ : [3-1. ์ธ๋ถ ์ฝ๋ ์ ์ถ๋ ฅ] + [4. ์ฝ๋ ๋ถ์ ์ดํ] ์๋ ์คํ
- โLetโs analyze your code!โ
- try - catch๋ฅผ ์ฌ์ฉํ Error Handling
- externalAnalysisIO.ts์์ analyze.py๊ฐ ์ ์์ ์ผ๋ก ์ข
๋ฃ๋๋ฉด
- โCode analysis succeeded!โ
- ์ค๋ฅ ๋๋ ๋น์ ์ ์ข
๋ฃ ์
Code analysis failed with exit code ${result.status}.- reject(
Code analysis failed with exit code ${result.status}.)
- ๋ณ๋์ Command ์ค์ ์์ด extension.ts ํ์ผ์ letsAnalyzeCode ๋ช ๋ น์ด ๋ด๋ถ์์ ๊ตฌํํ์ต๋๋ค.
- ์ฐ๊ฒฐ ํ์ผ : externalAnalysisIO.ts & analyze.py
- ๋์ : letsAnalyzeCode ๋ช
๋ น์ด ๋ด๋ถ์์ ๋ณต์ฌํด์จ ์ฝ๋ ์ ์ฒด๋ฅผ ํ์ค ์
๋ ฅ์ ์ด์ฉํด string์ผ๋ก ์ฝ๋ ๋ถ์ ํ์ผ์ธ main.py์ ๋๊ฒจ์ค๋๋ค.
๋ถ์ ์งํ ํ ๊ฒฐ๊ณผ๊ฐ์ string[]๋ก ๋ฐ์์์ Output Channel์์ ๋ณด์ฌ์ค๋๋ค.
- โCode analysis result: โ
- ๊ฒฐ๊ณผ ๋ฆฌํด ์ ์๋ฌ๊ฐ ์์ ๊ฒฝ์ฐ Information Message๋ก ๋์์ค๋๋ค.
- Command : CodeLingo.askAnalyzedCode
- Title : Do you writing this code?
- ์ฐ๊ฒฐ ํจ์ : copyToClipBoard
- ๋์ : ๋ถ์ํ ์ฝ๋๋ก๋ถํฐ ๋์ถ๋ ์ง๋ฌธ์ด ๋ง๋์ง ์ฌ์ฉ์์๊ฒ ํ์ธํฉ๋๋ค.
- โAre you writing this type of code?โ
- Notification ํ์ฉ
- Yes : ํ์ฌ ์ง๋ฌธ์ด ์ ์ ํ๋ค๋ ์๋ต์ผ๋ก, ์ด ์ง๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ๋ณธ ๊ฒ์์ด์ ์ถ์ฒ ์ฝ๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
- โGreat! Let me assist you.โ
- โI will recommend functions and algorithms.โ
- ๋ฏธ์๋ต : ์ถํ์ ๋ค์ ๋ถ์์ ์งํํ๊ณ ์๋ต์ ๋ฐ๋๋ก ์๋ดํฉ๋๋ค.
- โIt's Okay. Let me assist you later!โ
- Yes : ํ์ฌ ์ง๋ฌธ์ด ์ ์ ํ๋ค๋ ์๋ต์ผ๋ก, ์ด ์ง๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ๋ณธ ๊ฒ์์ด์ ์ถ์ฒ ์ฝ๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
- QuickPick ํ์ฉ
- No : ํ์ฌ ์ง๋ฌธ์ด ๋ถ์ ํํ๋ค๋ ์๋ต์ด๋ฏ๋ก, ์์ฑ๋ ์ง๋ฌธ ์ค 2,3 ๋ฒ์งธ ์ง๋ฌธ์ QuickPick์ ์ต์
์ผ๋ก ์ ๊ณตํ์ฌ ์ฌ์ฉ์๊ฐ ์ ํํ ์ ์๋๋ก ํฉ๋๋ค.
- "You chose No, let me show you optionsโ
You selected ${selectedOption}!- โI will recommend functions and algorithms.โ
- ์ต์ ์ค โRequest code analyze again!โ์ ์ ํ ์ ์ฝ๋ ๋ถ์์ ๋ค์ ์์ฒญํฉ๋๋ค.
- ๋ง์ฝ QuickPick ์ฐฝ์์ ๊ทธ๋ฅ ๋๊ฐ๋ค๋ฉด..
- โYou did not select any option.โ
- No : ํ์ฌ ์ง๋ฌธ์ด ๋ถ์ ํํ๋ค๋ ์๋ต์ด๋ฏ๋ก, ์์ฑ๋ ์ง๋ฌธ ์ค 2,3 ๋ฒ์งธ ์ง๋ฌธ์ QuickPick์ ์ต์
์ผ๋ก ์ ๊ณตํ์ฌ ์ฌ์ฉ์๊ฐ ์ ํํ ์ ์๋๋ก ํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ์ ํํ ์ง๋ฌธ์ ์ธ๋ฑ์ค๋ฅผ chosenOption ๋ณ์์ ์ ์ฅํฉ๋๋ค.
- Yes(1๋ฒ ์ง๋ฌธ) โ 0 / No โ option 1(2๋ฒ ์ง๋ฌธ) : 1 / option 2(3๋ฒ์ง๋ฌธ) : 2 / re-analyze(๋ถ์ ์ฌ์์ฒญ) : -1
- ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํตํด ์ ํํ ์๋ต์ ๋ฐ๋ผ ์ง๋ฌธ์ด ์ ์ฅ๋ฉ๋๋ค.
- ์ ํ๋ ์ง๋ฌธ์ ๊ฒ์ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ ๊ฒ์์ด๋ก ์ ์ฅ๋ฉ๋๋ค.
- ์ ํ๋ ์ง๋ฌธ์ด ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ ๋์ด ๋ฐ๋ก ๋ถ์ฌ๋ฃ์ ์ ์์ต๋๋ค.
- ์ ํํ ์ง๋ฌธ์ ํด๋นํ๋ ์ถ์ฒ ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค. (recommendedCode๋ก ์ถ์ฒ ์ฝ๋๋ฅผ ๋ฐ์์ด)
- ์ถํ์ ์ฌ์ฉ์๊ฐ Assist! Code Lingo ๋ฒํผ์ ๋๋ฅด๋ฉด Output Channel์ ๋ณด์ฌ์ค๋๋ค.
- Button : Search on Google
- Command : CodeLingo.searching
- Title : What do you want to search?
- ๋์ : Quick Input์ ํตํด ์ฌ์ฉ์์๊ฒ ๊ฒ์์ด๋ฅผ ์ ๋ ฅ ๋ฐ์ต๋๋ค. + โPlease enter queryโ
- Quick Input: โEnter your search query.โ, โWhat do you want to search?โ
- ์ฝ๋ ๋ถ์ ์ด์ ์ ๊ธฐ๋ณธ ๊ฒ์์ด๋ Code Lingo๋ก ์ค์ ๋์ด ์์ต๋๋ค.
- ๊ฒ์์ด๋ฅผ ์
๋ ฅํ์ง ์๊ณ ์ํฐ ์ ์ ํ๋ ์ง๋ฌธ์ ๊ธฐ๋ณธ ๊ฒ์์ด๋ก ์ค์ ํ์ฌ ๊ฒ์์ ์ค์ํฉ๋๋ค.
- โNo query input.โ
- โ"I enter selected option as query.โ
- ๊ตฌ๊ธ ๊ฒ์์ ์คํ ํ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ณธ ๋ธ๋ผ์ฐ์ ์ ์ ์ฐฝ์ผ๋ก ์ด์ด์ค๋๋ค.
- Button : Assist! Code Lingo
- Command : CodeLingo.assist
- Title : Assist! Code Lingo
- ๋์ : "Assist! Code Lingoโ, "Recommend usual codeโ
- ์ฌ์ฉ์์๊ฒ ์ ํ๋ ์ง๋ฌธ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ์ถ์ฒ ์ฝ๋๋ฅผ ๋ณด์ฌ์ค๋๋ค.(Output Channel ํ์ฉ)
-
ํ์ผ ๊ฒฝ๋ก ์ค์ ์ ๋ํ ์ฑํ ๊ณ ๋ฏผ ๋์ ํ์ฌ ์ฝ๋์ ์ฌ์ฉ๋ ๋ฐฉ์์ ์ ์งํ๊ธฐ๋ก ๊ฒฐ์ ํ์์ต๋๋ค.
-
์ธ๋ถ ํ์ผ์ ์ฌ๋ ์ํฉ(getFileContent ๋ช ๋ น์ด์ fileCopy.ts)์์๋ VSCode ์๋ํฐ ๋ด์ ์ด๋ ค์๋ ํด๋์ ์คํฌ๋ฆฝํธ์ ๊ฒฝ๋ก๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ฌ ํ์ํฉ๋๋ค.
const editor = vscode.window.activeTextEditor; //์๋ํฐ ๋ด์ ์ด๋ ค์๋ ์คํฌ๋ฆฝํธ์ ๊ฒฝ๋ก๋ฅผ ํ์ํฉ๋๋ค. const currentFilePath = editor.document.uri.fsPath;
-
ํ์ด์ฌ์ผ๋ก ๊ตฌํ๋ ์ฝ๋ ๋ถ์ ๋ชจ๋ธ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ด ๊ฒฝ๋ก๋ฅผ ์ค์ ํ์์ต๋๋ค.
-
externalAnalysisIO.ts๋ฅผ extension.ts๊ฐ ํฌํจ๋ srcํด๋ ๋ด๋ถ์ ์์น ์์ผฐ์ต๋๋ค.
-
codeAnalyzeMachine ํด๋๋ฅผ ์ ์ฒด Extension์ ๋ฃจํธ ํด๋ ํ์์ ์์น ์์ผฐ์ต๋๋ค. (src ํด๋์ ๋๋ฑํ ๋ฃจํธ ์๋)
-
์๋ ๊ฒฝ๋ก๋ฅผ ํ์ ํ์ฌ externalAnalysisIO.ts ๊ธฐ์ค
- ์์ ํด๋ ์ด๋ โ models ํด๋๋ก ์ด๋ โ main.py ์ ๊ทผ
์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์ ๊ทผํ์์ต๋๋ค.
// ํ์ฌ ์คํ ์ค์ธ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ป์ต๋๋ค. const scriptDir = path.dirname(__dirname); // ์ฝ๋ ๋ถ์ ์คํฌ๋ฆฝํธ์ ๊ฒฝ๋ก๋ฅผ ๊ณ์ฐํฉ๋๋ค. const scriptPath = path.join(scriptDir, 'models', 'main.py');
-
-
๊ธฐ์กด์ ๋ฐฉ์์ ์ด๋ ๊ฒ ๋์ด์์์ต๋๋ค. ํ์ฌ๋ fileCopy.ts์ externalAnalysisIO.ts๋ก ๋ถ๋ฆฌ๋์๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ๋์์ต๋๋ค. (ํ์ผ์ด ์ด๋ ค์๋ ๊ฒฝ๋ก์ ํ์ผ๋ช ์ ์กฐํฉํ์ฌ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ ๋ฐฉ์)
const currentFilePath = editor.document.uri.fsPath; const fileName = path.basename(currentFilePath); // ํ์ผ ์ด๋ฆ ๊ฐ์ ธ์ค๊ธฐ const scriptPath = path.join(path.dirname(currentFilePath), fileName);
-
ํ์ด์ฌ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ tokenize๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ์ฐ์, ๊ตฌ๋ถ์๋ฅผ ์ ์ธํ ๋ณ์๋ช , ํจ์๋ช , ํด๋์ค๋ช ๋ฑ์ ์ถ์ถํฉ๋๋ค.
-
์ถ์ถ๋ ๋จ์ด๋ค ์ค, if, else, for, def ์ ๊ฐ์ด ๋ถ์์ ํ์ ์๋ ๋ถ์ฉ์ด๋ ๋ชจ๋ ์ ์ธํ์ฌ ํ ํฐํ๋ฅผ ์ํํฉ๋๋ค.
-
๋น์ทํ ๋จ์ด๋ฅผ ๊ฐ๊น์ด vector๋ก ๋งคํํ๋ word embedding ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์ฝ๋ ๋ด๋ถ ๋จ์ด๋ค์ ๋ํด word embedding์ ์ํํฉ๋๋ค.
-
๋ชจ๋ธ์ embedding ๊ฒฐ๊ณผ์ ์ ๋ขฐ์ฑ์ ๋์ด๊ธฐ ์ํด, 2๊ฐ ์ด์์ ๋ชจ๋ธ์ ์ฌ์ฉํ์ต๋๋ค. (Word2Vec, FastText)
-
embedding ํ, ๊ฐ ๋จ์ด๋ค๊ณผ ๋๋จธ์ง ๋จ์ด๋ค์ cosine similarity๋ฅผ ๊ตฌํ๊ณ ๋ชจ๋ ๋ํฉ๋๋ค.
$C_i = \sum_{k=1}^{n}{similarity(i, k)}$ -
๋ชจ๋ ๋จ์ด๋ค์ ๋ํด
$C$ ๊ฐ์ ๊ตฌํ ํ, ์ ๊ทํ๋ฅผ ์ํด softmax๋ฅผ ์ทจํฉ๋๋ค.
$SC_i = softmax(C_i)=\frac{exp(c_i)}{\sum_{j=1}^{n}{exp(c_j)}}$ -
๊ฐ ๋ชจ๋ธ์
$SC$ ๊ฐ์ ๋ํ์ฌ ์์๋ธ์ ์ํํฉ๋๋ค.
$SC^{ensemble} = SC^{Word2Vec} + SC^{FastText}$
-
์์์ ๊ตฌํ
$SC^{ensemble}$ ๊ฐ ํฌ๊ธฐ ์์๋๋ก ์์ 10๊ฐ ๋จ์ด๋ง ์ถ์ถํ์๊ณ , ์ด๋ฅผ ์ง๋ฌธ ์์ฑ ์ญํ ์ ๋ถ์ฌํ GPT์๊ฒ ํ๋์ ์ง๋ฌธ ํ์์ ๋ฌธ์ฅ์ผ๋ก ์์ฑํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋๋ค. -
์ฌ์ฉ์๋ก๋ถํฐ ์น์ธ๋ ์ง๋ฌธ์ด ๋ค์ด์ค๋ฉด, ํด๋น ์ง๋ฌธ์ ํ์ด์ฌ ํํฐ ์ญํ ์ ๋ถ์ฌํ GPT์๊ฒ ์ ๋ฌํ์ฌ ์์ธํ ์ค๋ช ์ ํ๋๋ก ํฉ๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก MIT License๋ฅผ ๋ฐ๋ฆ ๋๋ค.
- ์ ํฌ๋ ์ด ์ฝ๋๊ฐ ์ต๋ํ ๋๋ฆฌ ํผ์ง๊ณ , ์์ ๋๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ๊ฐ๋ฐ์ ์์ํ์๊ธฐ ๋๋ฌธ์ ์ผ๋ง๋ ์ง ํ์ฉํ์ ๋ ์ข์ต๋๋ค. ์ถ์ฒ๋ง ๋จ๊ฒจ์ฃผ์ธ์!
- ์ด ์ฝ๋๋ฅผ ์ง์ ์์ ํ์ค ์ํฅ์ด ์๋ค๋ฉด ๋ฉ์ผ๋ก ์ฐ๋ฝ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
-
VS Code extension API ๊ณต์ ๋ฌธ์
https://code.visualstudio.com/api/get-started/your-first-extension
-
Vscode extionsion API์ ํ๊ตญ์ด ๋ฒ์ญ
https://github.com/pg-vscode-extn-kr/pg-vscode-extn-kr.github.io/tree/master
-
๊ฐ๋ฐ ์์ฒด์ ์ง์ ์ ์ธ ์ฐธ๊ณ ๋ ์๋์ง๋ง TypeScript ์ดํด๋ฅผ ์ํด ์ฐธ๊ณ ํ ๊ฐ์์ ๋๋ค.
- ์ฝ๋ฉ์๋ง๋์ JavaScript ์ด, ์ค๊ธ & TypeScript ๊ฐ์ (Youtube)
-
Word2Vec
Efficient Estimation of Word Representations in Vector Space
-
FastText
-
GPT-API ๊ณต์ ๋ฌธ์
- ํ๋ก์ ํธ ์์ ์์๋ pip install์ด๋ ๊ธฐ์กด์ Extension๊ณผ ๊ฐ์ด ์ฌ์ฉ์๊ฐ ์ง์ ์ค์นํ์ฌ ์ฌ์ฉํ ์ ์๋ ์์ค๊น์ง ๋ง๋๋ ๊ฒ์ด ๋ชฉํ์์ต๋๋ค.
- ๊ทธ ๋ชฉํ๋ฅผ ์ด๋ฃจ๊ธฐ ์ํด์๋ ๋ฐฐํฌ ๋ฐ ๋ง์ผํ๋ ์ด์ค ๋ฑ๋ก์ด ํ์์ ์ด์ง๋ง, ์๋ ์ ์ด๋ GPT-API ํค ๊ด๋ จ ๋ฌธ์ ๋ก ์คํ์ํค์ง ๋ชปํ์ต๋๋ค.
- ์ถํ์ ์ง์์ ์ธ ๊ฐ๋ฐ ์์ ์ด๋ฏ๋ก, ์ธ์ ๊ฐ๋ ๋ง์ผํ๋ ์ด์ค์ VSCode ๋ด์ Extensions ํญ์์ ๊ผญ ๋ต ์ ์๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.
- GPT-API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๊ณ ์ ํค๊ฐ ํ์ํฉ๋๋ค.
- ์คํ์์ค์ ๋ชฉ์ ์ ๋ง๊ฒ ํค๋ฅผ ๊ทธ๋๋ก ๋ฃ์ด๋๊ณ Extension ๋ฐฐํฌ ํ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ณ ์ถ์์ง๋ง..
- ์ธํฐ๋ท๊ณผ ๊นํ๋ธ ๋ฑ์ ๊ณต๊ฐ ์๋ฒ์ ํค๋ฅผ ์ฌ๋ฆฌ๋ ์๊ฐ open-ai ์ธก์์ ํค๋ฅผ ์์ ๋ฒ๋ฆฌ๋ ์ํฉ์ด๋ผ ๋ถ๊ฐํผํ๊ฒ ํค๋ง ์ญ์ ํ์ฌ ์ ๋ก๋ํ์์ต๋๋ค.
- Recommendation Code ํํธ์์ ์์ฑ๋ ์ถ์ฒ ์ฝ๋๋ฅผ ๋ณ๋์ ํญ์ธ Web View์ ํ์ํ๋ ๊ฒ์ด ์๋ ๊ณํ์ด์์ต๋๋ค.
- ๊ทธ๋ฌ๋ Web View์ ํ์ํ ๋ ์ง๋์น๊ฒ ์ค๋ฅ๊ฐ ๋ง์์ง๊ณ , ํ๋ก๊ทธ๋จ ๊ตฌ๋ ์์ฒด๊ฐ ๋๋ ค์ ธ ์คํ๋ ค ์์ฑ๋๋ฅผ ํด์น๋ค๊ณ ์๊ฐํ์ฌ ์ ์ธ์์ผฐ์ต๋๋ค.
- ํ์ฌ๋ Output Channel๋ก ๋์ฒดํ์ฌ ํ์ํ๋๋ก ํ์ต๋๋ค.
- ํจ์ ๋ฐ ์๊ณ ๋ฆฌ์ฆ ์ถ์ฒ ๊ธฐ๋ฅ
- ๋ง์ผํ๋ ์ด์ค ๋ฐฐํฌ ์์
- Extension ๋ฉ์ธ ํด๋ ๋ด์ generator ์ฌ์ฉ ์ ๊ธฐ๋ณธ์ผ๋ก ์์ฑ๋๋ ReadMe ํ์ผ์ด ์์ต๋๋ค. ํ์ฌ ๋ฐฐํฌ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์์ ์ํ๋ก ๋์์ต๋๋ค.














