์ด ์ฝ์ค๋ฅผ ์์ํ์๊ฒ ๋์ด ์ ๋ง ๊ธฐ์ฉ๋๋ค. ์ฌ๋ฌ๋ถ์ด Generative AI์ ํจ๊ป ๋ฌด์์ ์๊ฐ๋ฐ์ ๋ง๋ค์ด๋ผ์ง ๊ธฐ๋๋ฉ๋๋ค!
์ฌ๋ฌ๋ถ๋ค์ ์๊ฐ์ ์ฑ๊ณต์ ์ผ๋ก ๋ณด๋ด๊ธฐ ์ํด, ์ฝ์ค ํ๊ฒฝ ์ค์ , ๊ธฐ์ ์ ์๊ตฌ์ฌํญ, ๋์์ด ํ์ํ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋์์ ๋ฐ์ ์ ์๋์ง ์๋ดํ๋ ํ์ด์ง๋ฅผ ๋ง๋ค์์ต๋๋ค.
์ด ๊ณผ์ ์ ์์ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์๋ฃํด์ผ ํฉ๋๋ค.
๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํฌํฌ ํ์ฌ ์์ ์ Github ๊ณ์ ์ ์ ๋ก๋ํ์ฌ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๊ณ ๊ณผ์ ๋ฅผ ์๋ฃํ ์ ์์ต๋๋ค. ๋ํ ๋ ํฌ์งํ ๋ฆฌ์ ์คํ (๐)๋ฅผ ์ถ๊ฐ ํ์ฌ ์ฝ๊ฒ ์ฐพ์๋ณผ ์ ์๋๋ก ํ ์ ์์ต๋๋ค.
์ฝ๋๋ฅผ ์คํํ๋ ๋์ ์์กด์ฑ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด Github codepsace๋ฅผ ํ์ฉํ์ฌ ์ฝ์ค๋ฅผ ์งํํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
์ด๋ฅผ ์ํด ํฌํฌํ ๋ ํฌ์งํ ๋ฆฌ์์ Code
์ต์
์ ์ ํํ๊ณ Codespaces ์ต์
์ ์ ํํ์ฌ ์์ฑํ ์ ์์ต๋๋ค.
์ด๋ ํ ์ข ๋ฅ์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ ์ง API ํค๋ฅผ ์์ ํ๊ฒ ๋ณด๊ดํ๋ ๊ฒ์ ์ค์ํฉ๋๋ค. ์ฝ๋์ ์ง์ API ํค๋ฅผ ์ ์ฅํ์ง ์๋ ๊ฒ์ ๊ถ์ฅํ๋ฉฐ, ์ด๋ค์ public ๋ ํฌ์งํ ๋ฆฌ์ ์ปค๋ฐํ๋ ๊ฒ์ ์์์น ๋ชปํ ๋น์ฉ ๋ฐ ๋ฌธ์ ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
์ปดํจํฐ์์ ๋ก์ปฌ๋ก ์ฝ๋๋ฅผ ์คํํ๋ ค๋ฉด Python์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
์ดํ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ฅผ ํด๋ก ํด์ผ ํฉ๋๋ค.
git clone https://github.com/microsoft/generative-ai-for-beginners
cd generative-ai-for-beginners
์ด์ ํ์ต์ ์์ํ๊ณ ์ฝ๋์ ์์ ์ ์งํํ ์ ์์ต๋๋ค.
miniconda๋ฅผ ์ค์นํ๋ฉด ์ฌ๋ฌ ์ด์ ์ด ์์ต๋๋ค. - ์ด๋ ์๋์ ์ผ๋ก ๊ฐ๋ฒผ์ด ์ค์น๋ก ๋ค์ํ Python ๊ฐ์ ํ๊ฒฝ์ ๋ํ conda
ํจํค์ง ๋งค๋์ ๋ฅผ ์ง์ํฉ๋๋ค. conda
๋ ๋ค๋ฅธ Python ๋ฒ์ ๋ฐ ํจํค์ง ๊ฐ์ ์ฝ๊ฒ ์ค์น ๋ฐ ์ ํํ ์ ์์ผ๋ฉฐ, pip
๋ฅผ ํตํด ์ฌ์ฉํ ์ ์๋ ํจํค์ง๋ ์ฝ๊ฒ ์ค์นํ ์ ์์ต๋๋ค.
miniconda๋ฅผ ์ค์นํ ํ, ๋ ํฌ์งํ ๋ฆฌ๋ฅผ cloneํ๊ณ , ์ด ์ฝ์ค์ ์ฌ์ฉํ ๊ฐ์ ํ๊ฒฝ์ ์์ฑํด์ผ ํฉ๋๋ค.
์๋ ๋จ๊ณ๋ฅผ ์คํํ๊ธฐ ์ ์ ๋จผ์ environment.yml์ด ์๋์ง ํ์ธํ์ธ์. environment.yml ํ์ผ์ ํ์ํ ์์กด์ฑ์ด ํฌํจ๋ conda ํ๊ฒฝ์ ๋ง๋๋๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ด ์ ๊ณต๋ ์ ์์ต๋๋ค.
name: <environment-name>
channels:
- defaults
dependencies:
- python=<python-version>
- openai
- python-dotenv
<environment-name>
์ ์ฌ๋ฌ๋ถ์ conda ํ๊ฒฝ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ ์ ์์ผ๋ฉฐ, <python-version>
์๋ ์ฌ์ฉํ๊ณ ์ถ์ Python ๋ฒ์ ์ ๊ธฐ์
ํ๋ฉด ๋ฉ๋๋ค. ์์ฑํ environment.yml ํ์ผ์ ๋ ํฌ์งํ ๋ฆฌ์ .devcontainer ํด๋ ์์ ์์นํ๋๋ก ํ์ธ์.
์ด์ environment.yml์ ๋ง๋ค์๋ค๋ฉด, ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ conda ํ๊ฒฝ์ ์์ฑํ ์ ์์ต๋๋ค.
conda env create --name ai4beg --file .devcontainer/environment.yml
conda activate ai4beg
๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด conda ํ๊ฒฝ ์์ฑ์ ๋ํ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
Probably the best way to use the curriculum is to open it in Visual Studio Code with Python Extension.
Note: โVS Code์์ ๋๋ ํ ๋ฆฌ๋ฅผ ํด๋ก ํ๊ณ ์ด๋ฉด ์๋์ผ๋ก Python ํ์ฅ์ ์ค์นํ๋ผ๋ ์ ์์ด ๋ํ๋ฉ๋๋ค. ๋ํ ์์์ ์ค๋ช ํ๋๋ก miniconda๋ ์ค์นํด์ผ ํฉ๋๋ค.
Note: VS Code๊ฐ ์ปจํ ์ด๋์์ ์ ์ฅ์๋ฅผ ๋ค์ ์ด ๊ฒ์ ์ ์ํ๋ฉด, ๋ก์ปฌ ํ์ด์ฌ ์ค์น๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๊ฑฐ์ ํด์ผ ํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ์์ ์ง์ ์์ ์ ์ปดํจํฐ์์ Jupyter ํ๊ฒฝ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ๊ธฐ์กด Jupyter์ Jupyter Hub ๋ชจ๋ ์๋ ์์ฑ, ์ฝ๋ ๊ฐ์กฐ ๋ฑ์ ์ ๊ณตํ๋ ๋งค์ฐ ํธ๋ฆฌํ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
Jupyter๋ฅผ ๋ก์ปฌ์์ ์์ํ๋ ค๋ฉด, ์ฝ์ค์ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ๊ณ ๋ค์์ ์คํํ์ญ์์ค:
jupyter notebook
๋๋
jupyterhub
๊ทธ๋ฐ ๋ค์ .ipynb ํ์ผ ์ค ์ด๋ ๊ฒ์ผ๋ก๋ ์ด๋ํ์ฌ ์ด๊ณ ์์ ์ ์์ํ ์ ์์ต๋๋ค.
Python ์ค์น์ ๋์์ผ๋ก ์ปจํ
์ด๋์์ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ ์ฅ์์๋ ์ด ์ ์ฅ์์ ๋ํ ์ปจํ
์ด๋๋ฅผ ๊ตฌ์ถํ ์ ์๋ ํน๋ณํ .devcontainer
ํด๋๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์, VS Code๋ ์ฝ๋๋ฅผ ์ปจํ
์ด๋์์ ๋ค์ ์ด ๊ฒ์ ์ ์ํ ๊ฒ์
๋๋ค. ์ด๊ฒ์ Docker ์ค์น๋ฅผ ํ์๋ก ํ๋ฉฐ, ๋ํ ๋ ๋ณต์กํ ์ ์์ผ๋ฏ๋ก, ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๋ ๊ฒฝํ ์๋ ์ฌ์ฉ์๋ค์๊ฒ ์ถ์ฒํฉ๋๋ค.
GitHub Codespaces๋ฅผ ์ฌ์ฉํ ๋ API ํค๋ฅผ ์์ ํ๊ฒ ์ ์งํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ ์ค ํ๋๋ Codespace Secrets๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ํด๋น ๊ฐ์ด๋๋ฅผ ๋ฐ๋ผ์ ์ฝ๋์คํ์ด์ค์ ๋ํ secrets์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
ํด๋น ์ฝ์ค์๋ 6๊ฐ์ ๊ฐ๋ ์์ ์ 6๊ฐ์ ์ฝ๋ฉ ์์ ์ด ์์ต๋๋ค.
์ฝ๋ฉ ์์ ์์๋ Azure OpenAI ์๋น์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ์ฝ๋๋ฅผ ์คํํ๋ ค๋ฉด Azure OpenAI ์๋น์ค์ ์ ๊ทผํ ์ ์์ด์ผ ํ๊ณ API ํค๊ฐ ํ์ํฉ๋๋ค. ์์์ ์์ฑํ์ฌ ์ ๊ทผ ๊ถํ์ ์ ์ฒญํ ์ ์์ต๋๋ค.
์ ์ฒญ์ด ์ฒ๋ฆฌ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์, ๊ฐ ์ฝ๋ฉ ์์
์๋ ์ฝ๋์ ์ถ๋ ฅ์ ๋ณผ ์ ์๋ README.md
ํ์ผ์ด ํฌํจ๋์ด ์์ต๋๋ค.
Azure OpenAI ์๋น์ค๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, Azure OpenAI ์๋น์ค ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ณ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ผ ์ฃผ์ธ์.
๊ณต์ AI ์ปค๋ฎค๋ํฐ ๋์ค์ฝ๋ ์๋ฒ์ ๋ค๋ฅธ ํ์ต์๋ค๊ณผ ๋ง๋ ์ ์๋ ์ฑ๋์ ๋ง๋ค์์ต๋๋ค. ์ฌ๊ธฐ์ ๊ฐ์ ๋ง์์ ๊ฐ์ง ์ฐฝ์ ๊ฐ, ๋น๋, ํ์, ๊ทธ๋ฆฌ๊ณ ์์ฑํ AI์์ ํ ๋จ๊ณ ๋ ๋์๊ฐ๊ณ ์ ํ๋ ๋ชจ๋ ์ฌ๋๋ค๊ณผ ๋คํธ์ํนํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ํ๋ ํด๋น ๋์ค์ฝ๋ ์๋ฒ์ ์์ด์ ์ด๋ค ํ์ต์๋ ๋์๋๋ฆด ์ ์์ต๋๋ค.
ํด๋น ์ฝ์ค๋ ์คํ ์์ค๋ก ๊ด๋ฆฌ๋ฉ๋๋ค. ๊ฐ์ ํ ๋ถ๋ถ์ด๋ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด Pull Request๋ฅผ ์์ฑํ๊ฑฐ๋ Github issue๋ฅผ ๊ธฐ๋กํด ์ฃผ์ธ์.
ํ๋ก์ ํธ ํ์ ๋ชจ๋ ๊ธฐ์ฌ๋ฅผ ์ถ์ ํ๊ณ ์์ผ๋ฉฐ, ์คํ ์์ค์ ๊ธฐ์ฌํ๋ ๊ฒ์ ์์ฑํ AI ๋ถ์ผ์์ ์ปค๋ฆฌ์ด๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ํ๋ฅญํ ๋ฐฉ๋ฒ์ ๋๋ค.
๋๋ถ๋ถ์ ๊ธฐ์ฌ๋ CLA(Contributor License Agreement)์ ๋์ํด์ผ ํฉ๋๋ค. CLA๋ ๊ทํ๊ฐ ๊ทํ์ ๊ธฐ์ฌ๋ฅผ ์ฌ์ฉํ ๊ถ๋ฆฌ๊ฐ ์์ผ๋ฉฐ ์ค์ ๋ก ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ ๋์ํ๋ค๊ณ ์ ์ธํ๋ ๊ฒ์ ๋๋ค. ์์ธํ ๋ด์ฉ์ CLA, Contributor License Agreement ์น์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ์ธ์.
์ค์: ์ด ์ ์ฅ์์ ํ ์คํธ๋ฅผ ๋ฒ์ญํ ๋ ๊ธฐ๊ณ ๋ฒ์ญ์ ์ฌ์ฉํ์ง ๋ง์ธ์. ์ปค๋ฎค๋ํฐ๋ฅผ ํตํด ๋ฒ์ญ์ ๊ฒ์ฆํ ๊ฒ์ด๋ฏ๋ก, ๊ทํ๊ฐ ๋ฅ์ํ ์ธ์ด๋ก๋ง ๋ฒ์ญ์ ์์ํด ์ฃผ์ธ์.
ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ๋ฉด CLA-bot์ด ์๋์ผ๋ก ๊ทํ๊ฐ CLA๋ฅผ ์ ๊ณตํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๊ณ ์ ์ ํ๊ฒ PR์ ๊พธ๋ฉฐ์ค๋๋ค(์: ๋ ์ด๋ธ, ์ฝ๋ฉํธ). ๋ด์ด ์ ๊ณตํ๋ ์ง์นจ์ ๋ฐ๋ฅด๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. CLA๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ ์ฅ์์์ ํ ๋ฒ๋ง ์ด ์์ ์ ์ํํ๋ฉด ๋ฉ๋๋ค.
ํด๋น ํ๋ก์ ํธ๋ Microsoft ์คํ ์์ค ํ๋ ๊ฐ๋ น์ ๋ฐ๋ฆ ๋๋ค. ์์ธํ ๋ด์ฉ์ ํ๋ ๊ฐ๋ น FAQ๋ฅผ ์ฝ๊ฑฐ๋ ์ถ๊ฐ์ ์ธ ์ง๋ฌธ์ด๋ ์๊ฒฌ์ด ์์ผ๋ฉด Email opencode์ผ๋ก ์ฐ๋ฝํ์ธ์.
ํด๋น ์ฝ์ค์ ํ์ํ ๋จ๊ณ๋ฅผ ๋ชจ๋ ์๋ฃํ์ผ๋, ์์ฑํ AI์ LLM ์๊ฐ๋ฅผ ํตํด ์์ํด ๋ณด์ธ์.