๐ ๋ชฉ์ฐจ
ChatGPT API๋ OpenAI์์ ์ ๊ณตํ๋ ๊ฐ๋ ฅํ ์ธ์ด ๋ชจ๋ธ์ ์ธ๋ถ ์๋น์ค์ ํตํฉํ ์ ์๊ฒ ํด์ฃผ๋ ์ธํฐํ์ด์ค์์. ์ด๋ฅผ ํ์ฉํ๋ฉด ๊ณ ๊ฐ์ผํฐ ์ฑ๋ด์ ๋ง๋ค๊ฑฐ๋ ์๋ํ๋ ์๋ด ์์คํ ๋ ๊ตฌํํ ์ ์๋ต๋๋ค.
ํ๊ตญ์์๋ ๊ธฐ์ ์ด๋ ์คํํธ์ ์ด ChatGPT API๋ฅผ ํ์ฉํด ๊ณ ๊ฐ ์๋ด์ ์๋ํํ๋ ์ฌ๋ก๊ฐ ์ ์ ๋๊ณ ์์ด์. ์๋ฅผ ๋ค์ด ์ผํ๋ชฐ, ๋ณ์ ์์ฝ, ์ธ๋ฌด์๋ด ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ฑ๋ด์ด ์ง์ ์ฌ์ฉ์์ ์ง๋ฌธ์ ๋ต๋ณํ๊ณ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ ์์ด์.
API๋ง ์ ์ฐ๊ฒฐํ๋ฉด ์นด์นด์คํก, ์น์ฌ์ดํธ, ๋ค์ด๋ฒ ํกํก ๊ฐ์ ์ฑ๋์๋ ์ฝ๊ฒ ๋ถ์ผ ์ ์์ด์. ์ ๊ฐ ์๊ฐํ์ ๋ ์ด ๊ธฐ์ ์ ์์ผ๋ก ๊ฑฐ์ ๋ชจ๋ ์จ๋ผ์ธ ๊ณ ๊ฐ ์๋น์ค์ ํ์ค์ด ๋ ๊ฒ ๊ฐ์์. ์ง๊ธ๋ถํฐ ๊ทธ ๋ฐฉ๋ฒ์ ์ฐจ๊ทผ์ฐจ๊ทผ ์๋ ค์ค๊ฒ์!
ChatGPT API๋? ๐ค
ChatGPT API๋ OpenAI์์ ์ ๊ณตํ๋ ์ธ์ด ๋ชจ๋ธ ์๋น์ค๋ฅผ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์์คํ ์ ํตํฉํ ์ ์๋๋ก ๋์์ฃผ๋ ์ธํฐํ์ด์ค์์. ์ด๋ฅผ ํตํด ์ฌ๋์ฒ๋ผ ์์ฐ์ค๋ฝ๊ฒ ๋ํ๋ฅผ ์ด์ด๊ฐ๋ ์ฑ๋ด์ด๋ ๊ณ ๊ฐ ์๋ ์์คํ ์ ๋ง๋ค ์ ์์ด์.
์ด API๋ HTTP ๊ธฐ๋ฐ RESTful ๋ฐฉ์์ผ๋ก ์์ฒญ์ ๋ณด๋ด๊ณ , JSON ํฌ๋งท์ผ๋ก ์๋ต์ ๋ฐ์์. ๋ณดํต์ ํด๋ผ์ด์ธํธ(์น, ์ฑ ๋ฑ)์์ ์ง๋ฌธ์ ์ ๋ ฅํ๋ฉด, ์๋ฒ๊ฐ OpenAI์ API์ ๊ทธ ์ง๋ฌธ์ ์ ๋ฌํ๊ณ ์๋ต์ ๋ฐ์์ ๋ค์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ด์ฃ .
ํ์ฌ ChatGPT API๋ GPT-3.5์ GPT-4 ๋ชจ๋ธ์ ์ ํํด์ ์ฌ์ฉํ ์ ์๊ณ , ๋ฉ์์ง ํ์คํ ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฐ์ค๋ฌ์ด ๋งฅ๋ฝ ๋ํ๋ฅผ ์ด์ด๊ฐ๋ ๊ธฐ๋ฅ์ด ์์ด์. ๊ทธ๋์ FAQ ์์ค์ ๋จ๋ตํ ์๋ต๋ณด๋ค๋ ์ฌ๋์ฒ๋ผ ์๋ดํด์ฃผ๋ ๋๋์ ์๋ต์ด ๊ฐ๋ฅํ๋ต๋๋ค.
์๋ฅผ ๋ค์ด, ๊ณ ๊ฐ์ด "๋ฐฐ์ก์ด ์ ์์ง ์ ์๋์?"๋ผ๊ณ ๋ฌผ์ผ๋ฉด, ๋จ์ํ ๋ต๋ณ์ด ์๋ "์ฃผ๋ฌธ๋ฒํธ๋ฅผ ์๋ ค์ฃผ์๋ฉด ํ์ธํด ๋๋ฆด๊ฒ์!" ๊ฐ์ ์ฌ๋ ๊ฐ์ ๋ฐ์์ ์ ๊ณตํ ์ ์๋ ๊ฑฐ์์. ์ด๊ฒ ๋ฐ๋ก ๊ธฐ์กด ์ฑ๋ด๋ค๊ณผ ํฐ ์ฐจ์ด์ฃ .
๐ ChatGPT API ์ฃผ์ ํน์ง ๋น๊ตํ
ํญ๋ชฉ | GPT-3.5 | GPT-4 |
---|---|---|
์ฑ๋ฅ | ๋น ๋ฆ, ์ ๋ ด | ์ ํ๋ ๋์, ๋น์ฉ↑ |
์ ์ฉ ์ถ์ฒ ๋ถ์ผ | ์ผ๋ฐ ๋ํ, ๋จ์ ์๋ต | ์ ๋ฌธ ์๋ด, ์ ๋ฐ ์๋ |
๋น์ฉ | ๋ฎ์ | ์๋์ ์ผ๋ก ๋์ |
์ด์ GPT API๋ฅผ ์ฌ์ฉํ๋ ๋ชฉ์ ๊ณผ ์ฅ์ ์ ์๊ฒ ๋์์ผ๋, ๋ณธ๊ฒฉ์ ์ผ๋ก ์ด๋ป๊ฒ ์์ํ๋์ง ์๋ ค์ค๊ฒ์!
API ํค ๋ฐ๊ธ ๋ฐ ํ๊ฒฝ ์ธํ ๐ ๏ธ
ChatGPT API๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ OpenAI ์น์ฌ์ดํธ์ ๊ฐ์ ํ๊ณ , API ํค๋ฅผ ๋ฐ๊ธ๋ฐ์์ผ ํด์. https://platform.openai.com ์ ์ ์ํด์ ๊ณ์ ์ ๋ง๋ค๊ณ , ๋ก๊ทธ์ธํ ๋ค์ ์ฐ์ธก ์๋จ์ ‘API Keys’ ๋ฉ๋ด์์ ํค๋ฅผ ์์ฑํ ์ ์์ด์.
๋ฐ๊ธ๋ API ํค๋ ๋น๋ฐ๋ฒํธ์ฒ๋ผ ์ค์ํ ์ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์ ๋ ธ์ถ๋๋ฉด ์ ๋ผ์. ์ฝ๋์ ์ง์ ํค๋ฅผ ๋ฃ๊ธฐ๋ณด๋ค๋ `.env` ํ์ผ์ด๋ ์๋ฒ์ ํ๊ฒฝ ๋ณ์๋ก ๋ฐ๋ก ๊ด๋ฆฌํ๋ ๊ฒ ์์ ํ๋ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ ํ๊ฒฝ๋ ์ค๋นํด์ผ ํด์. Python์ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํด๋ณผ๊ฒ์. ๊ธฐ๋ณธ์ ์ผ๋ก `openai` ํจํค์ง๋ฅผ ์ค์นํ๊ณ , API ํค๋ฅผ ์ค์ ํ๋ ๊ณผ์ ์ด ํ์ํด์. ์๋์ฒ๋ผ ๊ฐ๋จํ ๋ช ๋ น์ด๋ก ์ค์นํ ์ ์์ด์:
pip install openai
๐ฆ API ํค ์ค์ ์์ ์ฝ๋
ํ์ผ๋ช | ๋ด์ฉ |
---|---|
.env | OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx |
app.py | import openai from dotenv import load_dotenv import os load_dotenv() openai.api_key = os.getenv("OPENAI_API_KEY") |
์ด๋ ๊ฒ ์ค์ ํ๋ฉด ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์ฝ๋์ ๊ทธ๋๋ก ๋๋ฌ๋์ง ์์์ ํจ์ฌ ์์ ํด์. ์ค์ ์๋น์ค์ ์ ์ฉํ ๋๋ ๊ผญ ํ๊ฒฝ ๋ณ์ ๋ฐฉ์์ผ๋ก API ํค๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ ์ข์์.
์ด์ API์ ์ฐ๊ฒฐํ ์ค๋น๊ฐ ๋ค ๋์์ด์! ๊ทธ๋ผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ด๋ป๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ๋์ง, ๊ธฐ๋ณธ ์์ฒญ ์ฝ๋๋ฅผ ์ดํด๋ณด์๊ตฌ์ โจ
๊ธฐ๋ณธ ์์ฒญ ์ฝ๋ ๊ตฌ์ฑ ๐ก
์ด์ ์ค์ ๋ก ChatGPT API์ ์์ฒญ์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณผ ์ฐจ๋ก์์. Python์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์์ ์ฝ๋๋ฅผ ๋ณด์ฌ์ค๊ฒ์. ์ด ์ฝ๋๋ ์ฌ์ฉ์์ ์ ๋ ฅ์ GPT์๊ฒ ์ ๋ฌํ๊ณ , GPT์ ์๋ต์ ๋ฐ์ ์ถ๋ ฅํ๋ ์ญํ ์ ํด์.
OpenAI์ Chat API๋ `openai.ChatCompletion.create()` ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์. ์ฌ๊ธฐ์ ๋ชจ๋ธ ์ข ๋ฅ, ๋ฉ์์ง ๋ฐฐ์ด, ์๋ต ์จ๋ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ๊ฒ ๋ผ์. ๊ฐ์ฅ ๋ง์ด ์ฐ๋ ๋ชจ๋ธ์ `"gpt-3.5-turbo"`๋ `"gpt-4"`์์.
์๋ ์์ ๋ ๊ฐ๋จํ ์ฑํ ์์คํ ์ ๊ตฌํํ ์ฝ๋์์. ์ค์ ์๋น์ค์์๋ ์ด๊ฑธ ์๋ต ํ์์ด๋ ์์ธ ์ฒ๋ฆฌ, ์ฌ์ฉ์ ์ธ์ฆ ๋ก์ง ๋ฑ๊ณผ ๊ฒฐํฉํด์ ์ฌ์ฉํ๋ฉด ๋ผ์.
๐ป ๊ธฐ๋ณธ ChatGPT API ์์ฒญ ์ฝ๋ ์์
๊ธฐ๋ฅ | ์ฝ๋ |
---|---|
์ฌ์ฉ์ ์ง๋ฌธ → GPT ์๋ต | import openai response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "๋น์ ์ ์น์ ํ ๊ณ ๊ฐ ์๋ ๋ด์ ๋๋ค."}, {"role": "user", "content": "๋ฐฐ์ก ์ํ๋ฅผ ์๊ณ ์ถ์ด์."} ] ) print(response['choices'][0]['message']['content']) |
์ด ์ฝ๋์์ ์ค์ํ ํฌ์ธํธ๋ messages ๋ฐฐ์ด์ด์์. system ๋ฉ์์ง๋ GPT์ ์ญํ ์ ์ ํด์ฃผ๋ ๋ฉ์์ง์ด๊ณ , user๋ ์ค์ ์ฌ์ฉ์์ ์ง๋ฌธ์ด์์. ์ด ๊ตฌ์กฐ๋ฅผ ์ ์ดํดํ๊ณ ์์ฉํ๋ฉด, ๋งค์ฐ ์ ์ฐํ ๋ํ ์์คํ ์ ๋ง๋ค ์ ์๋ต๋๋ค.
์ด์ ๊ธฐ๋ณธ์ ์ธ ํธ์ถ์ ๋๋ฌ๊ณ , ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ์ผ๊ฒ ์ฃ ? ๋ฐ๋ก ์ค์ ์์ ๊ฐ์ฅ ์ค์ํ ๊ณ ๊ฐ ์๋ ์๋๋ฆฌ์ค๋ฅผ ์ด๋ป๊ฒ ์ค๊ณํ๋์ง๊ฐ ํต์ฌ์ด์์. ์๋์์ ์ง์ ์ค๊ณ ์ ๋ต์ ์๊ฐํ ๊ฒ์! ๐ค
๊ณ ๊ฐ ์๋ ์๋๋ฆฌ์ค ์ค๊ณ ๐ง
์ค์ ๊ณ ๊ฐ ์๋ ์์คํ ์์๋ ๋จ์ํ ๋ฌธ๋ต๋ง์ผ๋ก๋ ๋ถ์กฑํด์. ์ฌ์ฉ์ ์๋๋ฅผ ํ์ ํ๊ณ , ๊ทธ์ ๋ง๋ ๋ํ ํ๋ฆ์ ์ ์งํ๋ ๊ฒ ํต์ฌ์ด์์. ๊ทธ๋์ ์๋๋ฆฌ์ค ๊ธฐ๋ฐ ์ค๊ณ๊ฐ ๊ผญ ํ์ํ๋ต๋๋ค. ์ฌ๊ธฐ์ ๋งํ๋ ์๋๋ฆฌ์ค๋, ๊ณ ๊ฐ์ด ์ด๋ค ์ํฉ์์ ์ด๋ค ์ง๋ฌธ์ ํ ์ ์์์ง ๋ฏธ๋ฆฌ ์์ธกํด์ ๋ํ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋ ๊ฑธ ๋งํด์.
์๋ฅผ ๋ค์ด ์ผํ๋ชฐ์ด๋ผ๋ฉด ๊ณ ๊ฐ์ด ‘๋ฐฐ์ก๋ฌธ์’, ‘ํ๋ถ์์ฒญ’, ‘์ํ ์ ๋ณด ๋ฌธ์’๋ฅผ ํ ๊ฐ๋ฅ์ฑ์ด ๋๊ฒ ์ฃ ? ์ด๋ฐ ์ฃผ์ ๋ง๋ค GPT์ ์๋ต ๋ฐฉํฅ์ ์ ํด์ฃผ๋ ์์คํ ๋ฉ์์ง๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํด๋๋ฉด ๋ํ ํ์ง์ด ํจ์ฌ ๋์์ ธ์.
๋ํ ๋ํ ์ํ๋ฅผ ์ ์งํด์ผ ํ๋๋ฐ, ์ด๊ฑธ ์ํด์๋ "๋ํ ํ์คํ ๋ฆฌ"๋ฅผ ๊ณ์ messages ๋ฐฐ์ด์ ์ถ๊ฐํด์ฃผ๋ ๊ตฌ์กฐ๋ก ์ฝ๋๋ฅผ ์ง์ผ ํด์. ๊ทธ๋์ผ GPT๊ฐ ๋งฅ๋ฝ์ ์ดํดํ๊ณ , ์๋ค๊ฐ ๋ง๋ ๋ํ๋ฅผ ์ด์ด๊ฐ ์ ์์ด์.
์ด๋ฐ ์๋๋ฆฌ์ค ์ค๊ณ๋ฅผ ์ํด ํํ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๊ฐ '์ํ ๊ธฐ๋ฐ ์๋ต ๋งคํ'์ด์์. ๊ฐ ์ํฉ(state)์ ๋ง๋ ์๋ต ํ ํ๋ฆฟ์ด๋ GPT ํ๋กฌํํธ๋ฅผ ๋ฏธ๋ฆฌ ์ ๋ฆฌํด๋๊ณ , ์ฌ์ฉ์ ์ ๋ ฅ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์๋ ๋ถ๊ธฐ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด์์.
๐งญ ์ฃผ์ ๊ณ ๊ฐ ์๋ ์๋๋ฆฌ์ค ์ค๊ณ ์์
์ํฉ | ์์คํ ํ๋กฌํํธ | ์์ ์ง๋ฌธ |
---|---|---|
๋ฐฐ์ก ๋ฌธ์ | "๋น์ ์ ๊ณ ๊ฐ์ ์ฃผ๋ฌธ ์ํ๋ฅผ ํ์ธํ๋ ์๋ด์ฌ์ ๋๋ค." | ๋ฐฐ์ก์ด ์ ์์ง ์ ์ค๋์? |
ํ๋ถ ์์ฒญ | "๋น์ ์ ์น์ ํ ํ๋ถ ๋ด๋น์์ ๋๋ค. ์ ์ฐจ๋ฅผ ์์ธํ ์๋ดํ์ธ์." | ์ ํ ๋ฐํํ๊ณ ์ถ์ด์ |
์ํ ์ ๋ณด | "๊ณ ๊ฐ์ด ์ ํ ์ค๋ช ์ ์์ฒญํ๋ฉด ์์ธํ ์๋ ค์ฃผ์ธ์." | ์ด ์ ๋ฐ ์ฌ์ด์ฆ ์ด๋ป๊ฒ ๋๋์? |
์ด๋ ๊ฒ ์ ๋ฆฌํด๋๋ฉด ๋์ค์ ์ฌ์ฉ์ ์ง๋ฌธ์ด ๋ค์ด์์ ๋, ์ด๋ ์นดํ ๊ณ ๋ฆฌ์ ์ํ๋์ง ๋ถ๋ฅํ๊ณ ๊ทธ์ ๋ง๋ ์๋ต ํ๋ฆ์ผ๋ก ์ด์ด๊ฐ ์ ์์ด์. ๋ ์ ๊ตํ๊ฒ ํ๋ ค๋ฉด ๊ฐ๋จํ ํค์๋ ํํฐ๋ ์์ฐ์ด ๋ถ๋ฅ ๋ชจ๋ธ์ ๊ฐ์ด ์ฐ๋ ๋ฐฉ๋ฒ๋ ์๋ต๋๋ค.
๊ณ ๊ฐ ์๋๋ ๋จ์ํ ๋๋ต๋ง ํ๋ ๊ฒ ์๋๋ผ, ๊ฐ์ ์ผ์ด๋ ์ค์ํด์. GPT์๊ฒ "์น์ ํ๊ฒ ๋๋ตํด์ค" ๊ฐ์ ์ญํ ์ง์๋ฅผ ์ฃผ๋ ๊ฒ๋ง์ผ๋ก๋ ์ธ์์ด ํ ๋ฐ๋์ด์. ๋ํ๋ ๊ธฐ์ ์ด์ง๋ง, ๊ฒฐ๊ตญ ์ฌ๋์ด ๋๋ผ๋ ๊ฐ์ ์ด ์ ์ผ ์ค์ํ๋๊น์ ๐
์น ๊ธฐ๋ฐ ์ฑ๋ด ์ธํฐํ์ด์ค ๋ง๋ค๊ธฐ ๐ฌ
์ด์ ๋ฐฑ์๋ ๋ก์ง๊น์ง ์์ฑํ๋ค๋ฉด, ์ด๊ฑธ ์ค์ ๋ก ์ฌ๋๋ค์ด ์ฌ์ฉํ ์ ์๋ ์น ๊ธฐ๋ฐ ์ฑ๋ด ์ธํฐํ์ด์ค์ ์ฐ๊ฒฐํด์ผ ํด์! ํ๊ตญ์์๋ ๋ณดํต ์น์ฌ์ดํธ์ ์ง์ ์ฑ๋ด์ ์ฝ์ ํ๊ฑฐ๋, ์นด์นด์คํก ์ฑ๋ด API์ ์ฐ๋ํด์ ์ฌ์ฉํด์.
๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ์์ Flask ๊ฐ์ ํ์ด์ฌ ์น ํ๋ ์์ํฌ๋ก ์๋ฒ๋ฅผ ๋ง๋ค๊ณ , JavaScript๋ก ํ๋ก ํธ์๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฑฐ์์. ์์ฆ์ React, Vue ๊ฐ์ ํ๋ก ํธ ํ๋ ์์ํฌ๋ฅผ ๋ง์ด ์ฐ์ง๋ง, ์ฌ๊ธฐ์ ๊ฐ๋จํ HTML + JS ์์ ๋ฅผ ๋ณด์ฌ์ค๊ฒ์!
๋จผ์ Flask๋ก ๊ฐ๋จํ API ์๋ฒ๋ฅผ ๋ง๋ค๊ณ , ์ด ์๋ฒ๊ฐ ์ฌ์ฉ์ ๋ฉ์์ง๋ฅผ ๋ฐ์์ ChatGPT API๋ก ์ ๋ฌํ๊ณ , ๋ค์ ์๋ต์ ๋ฐํํ๋ ๊ตฌ์กฐ์์. ํ๋ก ํธ์์๋ ์ด ์๋ฒ์ fetch๋ก ์์ฒญ์ ๋ณด๋ด๋ ๊ฑฐ์ฃ .
์น ์ฑ๋ด UI๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ ฅ์ฐฝ, ์ ์ก ๋ฒํผ, ๊ทธ๋ฆฌ๊ณ ๋ํ ๋ก๊ทธ๊ฐ ์์ด๋ ์ฑํ ์ฐฝ ๊ตฌ์กฐ๋ก ๋์ด ์์ด์. ์ฌ๊ธฐ์ GPT ์๋ต์ด ์์ฐจ์ ์ผ๋ก ์ถ๊ฐ๋๋ ๋ฐฉ์์ด์์.
๐ฅ๏ธ ์น ์ฑ๋ด ๊ตฌ์ฑ ์์
๊ตฌ์ฑ ์์ | ๊ธฐ๋ฅ ์ค๋ช |
---|---|
Flask API | ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ์ GPT API ํธ์ถ ํ ์๋ต ๋ฐํ |
HTML ์ ๋ ฅ์ฐฝ | ์ฌ์ฉ์๊ฐ ์ง๋ฌธ ์ ๋ ฅ |
JS fetch | ์ ๋ ฅ๊ฐ์ Flask ์๋ฒ๋ก ์ ์ก ํ ์๋ต ๋ฐ์ ์ถ๋ ฅ |
๋ค์์ Flask ๋ฐฑ์๋ ์์์์. ๊ฐ๋จํ GPT์๊ฒ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๊ณ ์๋ต์ ๋๋ ค์ฃผ๋ ๊ตฌ์กฐ๋๋๋ค.
app.py
from flask import Flask, request, jsonify
import openai
import os
from dotenv import load_dotenv
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
app = Flask(__name__)
@app.route('/chat', methods=['POST'])
def chat():
user_input = request.json['message']
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "์น์ ํ ๊ณ ๊ฐ ์๋ด ์ฑ๋ด์
๋๋ค."},
{"role": "user", "content": user_input}
]
)
return jsonify({'reply': response['choices'][0]['message']['content']})
if __name__ == '__main__':
app.run()
๊ทธ๋ฆฌ๊ณ HTML + JavaScript๋ก ๊ธฐ๋ณธ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ด๋ณด๋ฉด ์ด๋ ๊ฒ ๋ผ์. ๋ชจ๋ฐ์ผ์์๋ ๋ฐ์ํ์ผ๋ก ์ ๋ณด์ด๊ฒ ์ค๊ณํ ์ ์์ด์.
index.html
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>GPT ๊ณ ๊ฐ ์๋ด์ฑ๋ด</title>
</head>
<body>
<h3>GPT ๊ณ ๊ฐ ์๋ด์ฑ๋ด ๐ฌ</h3>
<div id="chat-box"></div>
<input type="text" id="message" placeholder="๋ฌด์์ด ๊ถ๊ธํ์ ๊ฐ์?" />
<button onclick="sendMessage()">๋ณด๋ด๊ธฐ</button>
<script>
function sendMessage() {
const msg = document.getElementById("message").value;
fetch("/chat", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ message: msg })
})
.then(res => res.json())
.then(data => {
const box = document.getElementById("chat-box");
box.innerHTML += "<p><strong>๐ค๋:</strong> " + msg + "</p>";
box.innerHTML += "<p><strong>๐คGPT:</strong> " + data.reply + "</p>";
});
}
</script>
</body>
</html>
์ด๋ ๊ฒ ํ๋ฉด ์ฌ์ฉ์์ GPT๊ฐ ์ฃผ๊ณ ๋ฐ๋ ๊ธฐ๋ณธ ์ฑ๋ด ์ธํฐํ์ด์ค๊ฐ ์์ฑ๋ผ์! ์ด๊ฑธ ๋ฐ์ ์ํค๋ฉด ์ด๋ฏธ์ง ์ ๋ก๋, ํ์ผ ์ฒจ๋ถ, ๋ก๊ทธ ์ ์ฅ, ๊ด๋ฆฌ์ ์๋ฆผ ๋ฑ ๊ณ ๊ธ ๊ธฐ๋ฅ๋ ์ถ๊ฐํ ์ ์์ด์ ๐
์ด์ ๋ฐ ํ์ฅ ์ ๋ต ๐
์ฑ๋ด์ ์์ฑํ๋ค๊ณ ๋์ด ์๋์์! ์ค์ ์์๋ ์์คํ ์ ์ด์ํ๊ณ ์ง์์ ์ผ๋ก ํ์ฅํ๋ ์ ๋ต์ด ์ ๋ง ์ค์ํด์. ๋จ์ํ MVP(์ต์ ๊ธฐ๋ฅ ์ ํ) ์์ค์์ ์ค์ ๊ณ ๊ฐ์ผํฐ์ ์์ ์ ์ผ๋ก ๋์ ํ๋ ค๋ฉด ๋ค์ํ ์กฐ๊ฑด์ ๊ณ ๋ คํด์ผ ํ๊ฑฐ๋ ์.
๋จผ์ ๊ฐ์ฅ ์ค์ํ ๊ฑด ํธ๋ํฝ ๊ด๋ฆฌ์์. GPT API๋ ํธ์ถ๋์ ๋ฐ๋ผ ๋น์ฉ์ด ๋์ด๋๊ณ , ํธ๋ํฝ์ด ๋ง์์ง๋ฉด ์๋ ์ ํ๋ ๋ฐ์ํ ์ ์์ด์. ๊ทธ๋์ ์บ์ฑ, ์ฟผ๋ฆฌ ์ ํ, ์์ฒญ ํํฐ๋ง ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ๋ฐฑ์๋ ์ค๊ณ๊ฐ ์ค์ํด์.
์๋ฅผ ๋ค์ด ๋์ผํ ์ง๋ฌธ์ ๋ฐ๋ณตํด์ ๋ฌผ์ด๋ณด๋ ๊ฒฝ์ฐ, GPT์ ๋ณด๋ด์ง ์๊ณ ์ด์ ์๋ต์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ฉด ๋น์ฉ๊ณผ ์๋ ๋ ๋ค ์ก์ ์ ์์ด์. ํนํ FAQ์ฒ๋ผ ์์ฃผ ๋ฌป๋ ์ง๋ฌธ์ ์บ์ฑ์ ๋ฑ์ด์์!
๊ทธ๋ฆฌ๊ณ GPT ์๋ต ํ์ง ๊ด๋ฆฌ๋ ์ค์ํด์. ํ๋กฌํํธ๊ฐ ์ ํํ๊ฒ ์ค๊ณ๋์ง ์์ผ๋ฉด, ๊ฐ์ ์ง๋ฌธ์๋ ์๋ต์ด ๋ค์ญ๋ ์ญํ๊ฒ ๋์ฌ ์ ์์ด์. ํนํ ์ค์ํ ์ง๋ฌธ(์: ํ๋ถ ์ ์ฑ )์ ์์คํ ๋ฉ์์ง๋ ํ๋กฌํํธ ํ ํ๋ฆฟ์ ๋ช ํํ๊ฒ ์ ์ํ๋ ๊ฒ ํต์ฌ์ด์์.
๐ ๏ธ ์ด์ ์์ ์ฑ ๋ฐ ํ์ฅ ๊ณํ ์ฒดํฌ๋ฆฌ์คํธ
ํญ๋ชฉ | ๋ด์ฉ |
---|---|
API ๋น์ฉ ์ ์ด | ์ง๋ฌธ ์บ์ฑ, ์๋ต ํ ํ๋ฆฟ ์ฌ์ ์ค์ |
์๋ฌ ์ฒ๋ฆฌ | API ์คํจ ์ ์ฌ์๋ ๋๋ ์ฌ์ฉ์ ์๋ด |
๋ณด์ | API ํค ํ๊ฒฝ๋ณ์ ๊ด๋ฆฌ ๋ฐ ์ธ์ฆ ํค๋ ์ ์ฉ |
์ค์ผ์ผ๋ง | Docker, Cloud Run, Lambda ๋ฑ์ผ๋ก ์ํ ํ์ฅ |
๋ถ์ ๋๊ตฌ | Google Analytics, Chat Log ์ ์ฅ |
๋ํ ์ฌ์ฉ์์ ํผ๋๋ฐฑ์ ์์งํ๋ ๊ฒ๋ ์ค์ํด์. ์ด๋ค ์๋ต์ด ๋์์ด ๋์๋์ง, ์ด๋ค ๋ถ๋ถ์ด ํท๊ฐ๋ ธ๋์ง ํ์ธํ๊ณ ์ง์์ ์ผ๋ก ์ฑ๋ด์ ์๋ต์ ๊ฐ์ ํด ๋๊ฐ์ผ ํด์. ์ด๋ฅผ ์ํด "๐/๐ ๋ฒํผ"์ด๋ "๋ง์กฑ๋ ํ๊ฐ" ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์์.
ํ์ฅ ์ธก๋ฉด์์๋ ๋ค๊ตญ์ด ์ง์, ์์ฑ ์ ๋ ฅ, ์นด์นด์ค/๋ค์ด๋ฒ ์ฑ๋ด ์ฐ๋, ๋ชจ๋ฐ์ผ ์ฑ ์ ์ฉ ๋ฑ ๋ค์ํ ๋ฐฉํฅ์ผ๋ก ๋ํ ์ ์์ด์. ๊ทธ๋ฆฌ๊ณ ๊ธฐ์ ๊ณ ๊ฐ์ฉ์ด๋ผ๋ฉด, GPT API ๋์ ์์ฒด ๋ชจ๋ธ์ ํ์ตํ๊ฑฐ๋ ํ๋ก์ ์๋ฒ๋ฅผ ๋๋ ๋ฐฉ์๋ ๊ณ ๋ คํ ์ ์์ด์.
FAQ
Q1. ChatGPT API๋ ๋ฌด๋ฃ์ธ๊ฐ์?
A1. ์๋์์! OpenAI API๋ ์ ๋ฃ์์. ์ฌ์ฉํ ๋งํผ ๊ณผ๊ธ๋๋ ๋ฐฉ์์ด๋ผ ์๊ธํ๋ฅผ ํ์ธํ๊ณ ๊ณํ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ ์ข์์.
Q2. ์นด์นด์คํก์ด๋ ๋ค์ด๋ฒ ํกํก๊ณผ๋ ์ฐ๋์ด ๊ฐ๋ฅํ๊ฐ์?
A2. ๋ค, ๊ฐ๋ฅํฉ๋๋ค! ์นด์นด์ค i ์คํ๋น๋๋ ๋ค์ด๋ฒ ์ฑ๋ด API์ GPT ์๋ฒ๋ฅผ ์ฐ๊ฒฐํ๋ฉด ์ถฉ๋ถํ ํ์ฉํ ์ ์์ด์.
Q3. ์๋ต ์๋๊ฐ ๋๋ฆฐ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋์?
A3. ์๋ต ์๋๋ ์๋ฒ ์์น, ๋ชจ๋ธ ์ข ๋ฅ, ๋คํธ์ํฌ ์ํ์ ๋ฐ๋ผ ๋ฌ๋ผ์. ์บ์ฑ, ํ๋ฆฌํ์นญ, ๊ฒฝ๋ ๋ชจ๋ธ ์ฌ์ฉ ๋ฑ์ผ๋ก ๊ฐ์ ํ ์ ์์ด์.
Q4. ์ฌ์ฉ์ ๋ํ ๊ธฐ๋ก์ ์ ์ฅํ๋ ค๋ฉด ์ด๋ป๊ฒ ํ๋์?
A4. Flask๋ Node ์๋ฒ์์ DB(MySQL, MongoDB ๋ฑ)์ ๋ํ ๋ด์ฉ ๋ก๊ทธ๋ฅผ ์ ์ฅํ๋ฉด ๋ผ์. ์ฑ๋ด ํ์ง ๋ถ์์๋ ํ์ฉ ๊ฐ๋ฅํด์.
Q5. ChatGPT ์๋ต์ด ์ด์ํ ๋๋ ์ด๋ป๊ฒ ์กฐ์ ํ๋์?
A5. ์์คํ ํ๋กฌํํธ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋, temperature ๊ฐ์ ์กฐ์ ํด์ ๋ ์ผ๊ด์ฑ ์๊ฒ ๋ง๋ค ์ ์์ด์.
Q6. ์ด๋ค GPT ๋ชจ๋ธ์ ์จ์ผ ํ๋์?
A6. gpt-3.5-turbo๋ ๊ฐ๋ณ๊ณ ๋น ๋ฅด๊ณ , gpt-4๋ ์ ๋ฐํ ๋ํ์ ์ ํฉํด์. ๋ชฉ์ ์ ๋ฐ๋ผ ์ ํํ๋ฉด ๋ผ์.
Q7. ํ๋ฃจ ํธ์ถ ํ์ ์ ํ์ด ์๋์?
A7. ๊ธฐ๋ณธ์ ์ผ๋ก๋ ์ฌ์ฉ๋์ ๋ฐ๋ฅธ ์ ํ์ด ์์ง๋ง, OpenAI ๊ณ์ ์ค์ ์์ ํ๋๋ฅผ ์กฐ์ ํ๊ฑฐ๋ ์์ฒญํด์ ๋๋ฆด ์ ์์ด์.
Q8. ๋ณด์์ ์ฃผ์ํ ์ ์ด ์๋์?
A8. API ํค ๋ ธ์ถ์ด ๊ฐ์ฅ ์ํํด์! ์ ๋ ๊ณต๊ฐ ์ ์ฅ์์ ์ฌ๋ฆฌ์ง ๋ง๊ณ , ๋ฐ๋์ ํ๊ฒฝ๋ณ์๋ก ๊ด๋ฆฌํ์ธ์.