๐[ChatGPT] ChatGPT API ์ฌ์ฉํ๊ธฐ - Python
Chat GPT API
Chat GPT API
์ผ๋ฐ์ ์ธ api
๋ key
๋ฅผ ๋ฐ๊ธ๋ฐ์์ผ ์ฌ์ฉํ ์ ์๋ค.
https://platform.openai.com/docs/overview ์์ key
๋ฐ๊ธ ๊ฐ๋ฅํจ.
key๋ฅผ ๋ฐ๊ธ๋ฐ์ผ๋ฉด ๋ณต์ฌํ ์ ์๋ ๋ชจ๋ฌ์ด ๋์ค๋๋ฐ, ๋ฐ๋์ ๋ณต์ฌํ๊ณ ์ด๋๊ฐ์ ์ ์ฅํด๋์ผ ํจ. ๊ทธ๋ฌ์ง ์๊ณ ๋ชจ๋ฌ์ ๋๋ฉด ๋ค์๋ key๋ฅผ ํ์ธํ ์ ์์
API ์ฌ์ฉํ๊ธฐ (Python ๊ธฐ์ค)
๋จผ์ openai ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํด์ผ api๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฉํ ์ ์๋ค.
๋ฌผ๋ก ๊ฐ์ํ๊ฒฝ์์ ์งํํ๋ ํธ์ด ์ข์ ๊ฒ ๊ฐ๋ค.
๊ฐ์ํ๊ฒฝ ์คํ ๋ฐฉ๋ฒ
๊ฐ์ํ๊ฒฝ ์คํํ๊ธฐ[macOs]
python -m venv venv
source venv/bin/activate
๊ฐ์ํ๊ฒฝ ์คํํ๊ธฐ[windows]
python -m venv venv
cd venv/Scripts
./activate
pip install openai
์์ ์ฝ๋ (OpenAI ๋ฌธ์์์ ๊ฐ์ ธ์จ ์ฝ๋)
import openai
openai.api_key = "YOUR_API_KEY"
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)
output_text = response["choices"][0]["message"]["content"]
print(output_text)
openai.api_key
: ์ฌ๊ธฐ์ ์๊น ๋ฐ๊ธ๋ฐ์ api key๋ฅผ ๋ถ์ฌ๋ฃ์ด์ค๋ค.response
- model : ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ธ์ ๋ง์ง๋ง, 3.5 ํฐ๋ณด๊ฐ ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋๋ ๋ชจ๋ธ
- messages :
role
๋ถ๋ถ์ ๋ณด๋ฉดsystem
,user
,assistance
๊ฐ ์๋ค.- ์์คํ : gpt์๊ฒ ์ด๋ป๊ฒ ํ๋์ ํ ์ง ์ง์ ํด๋๋ ๊ธฐ๋ฅ (gpt์ act as ___ ์ ์ ์ฌํ ๋ช ๋ น)
- ์ฌ์ฉ์ : ์ฌ์ฉ์ ์ง๋ฌธ, ์ด์ ๋ํ๋ฅผ ์ ์ฅํ๊ณ ์ฐ์์ฑ ์ ์ง โ ์ด์ด์ง๋ ๋ต๋ณ์ ์ํฅ์ ์ค ์ ์์
- ๋ณด์กฐ์ : ์ง๋ฌธ์ ํ๊ธฐ๋ณด๋จ, ์ด ์ ๋ํ์ ๋ด์ฉ์
์ ์ฅ
ํ๊ณ , ์ฐ์์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ต์ โ ์ด์ด์ง๋ ๋ต๋ณ์ ์ํฅ์ ์ค ์ ์์
์ค์ํ ์ ๋ ฅ ๊ฐ
- temperature
- 0 ~ ๋ฌดํ๋์ ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง, ๊ธฐ๋ณธ ๊ฐ์
0.7
- ๊ฐ์ด ๋์ ์๋ก ๋ชจ๋ธ์ด ์์ฑํ๋ ๋ฌธ์ฅ์ด ๋ค์ํด์ง โ ๋ค์ํ ์ ํ์ง๋ฅผ ํตํ ๋ต๋ณ
- ๊ฐ์ด ๋ฎ์ ์๋ก ์ผ๊ด์ฑ ์๋ ๋ฌธ์ฅ์ด ์์ฑ๋จ โ ๊ฐ๋ฅํ ์ ํ์ง ์ค, ๊ฐ์ฅ ํ๋ฅ ์ด ๋์ ๋ต๋ณ
- ์ผ๋ฐ์ ์ผ๋ก 0.5 ~ 1.0 ์ฌ์ด์ ๊ฐ์ ์ฃผ๋ก ์ฌ์ฉํจ
- ์ ๋ณด๊ฐ ์ค์ํ ๊ฒฝ์ฐ : ๋ฎ์ ๊ฐ
- ์ฐฝ์์ฑ์ด ์ค์ํ ๊ฒฝ์ฐ : ๋์ ๊ฐ
- 0 ~ ๋ฌดํ๋์ ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง, ๊ธฐ๋ณธ ๊ฐ์
- max_tokens
- ์์ฑ๋๋ ํ ์คํธ์ ์ต๋ ๊ธธ์ด ์ง์
- ๊ธฐ๋ณธ ๊ฐ์
256
- ์ต๋ ๊ฐ์
2048
๋ด๊ฐ ์ฌ์ฉํ ์ฝ๋
import openai
# API KEY ๋ฅผ ๋ฃ์ด์ฃผ์ธ์.
openai.api_key = ""
# ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ์ message ๋ฆฌ์คํธ๋ฅผ ์์ฑํฉ๋๋ค.
messages = []
while True:
# ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ์ต๋๋ค.
content = input("input content : ")
print("input content : ", content)
# ์ฌ์ฉ์ ์
๋ ฅ์ messages์ ์ถ๊ฐํด์ค๋๋ค.
messages.append({"role": "user", "content": f"{content}"})
completion = openai.ChatCompletion .create(
model="gpt-3.5-turbo",
messages=messages
)
# gpt๋ก๋ถํฐ ์๋ต์ ๋ฐ์ต๋๋ค.
# strip() : ์๋ต์ด ์ฌ ๋, ๋น ๊ณต๊ฐ ์ ๊ฑฐ
assistance_content = completion.choices[0].message['content'].strip()
# assistance์ ์ด์ ๋ํ ๋ต๋ณ์ ์ ์ฅํฉ๋๋ค.
messages.append({"role": "assistance", "content": f"{assistance_content}"})
print(f'ChatGPT : {assistance_content}')
- messages : ์ฌ์ฉ์ ์ ๋ ฅ๊ณผ ์๋ต์ ๊ดํ ๋ฆฌ์คํธ
- completion : ์ฌ์ฉํ ๋ชจ๋ธ์ ์ ํ๊ณ ,
messages
ํ ๋นํด์ gpt์๊ฒ ์ ์ก - assistance_content :
completion.choices[0].message['content']
๋ก ๋ฐ์์จ ์๋ต์ ์ ์ฅ.- strip() : ๋ณด๊ธฐ ํธํ๊ฒ ํ๋ ค๊ณ ์ฌ์ฉ.
- ์๋ต์ด ์ฌ ๋, ์ ๋งคํ ๊ณต๋ฐฑ์ด ์๊ฒจ์ ์ง์ฐ๊ธฐ ์ํด ์ฌ์ฉํจ.
- ์ด์ ์ฌ์ฉ์์ ์ง๋ฌธ์ ๋ต๋ณ์ ์ ์ฅํ๋ฉด, gpt๊ฐ ์ด๊ฑธ ๊ธฐ์ตํด ๋ค์ ์ง๋ฌธ์ ์ํฅ์ ์ค ์ ์์
- messages.append({โroleโ: โassistanceโ, โcontentโ: f {assistance_content}โ}) :
assiatance_content
๋ฅผ ์ถ๊ฐํจ -> ๋ฐฉ๊ธ ๋ฐ์ ๋ต๋ณ์ ๋ค์ ์ง๋ฌธ์ ์ ํจํ๊ฒ ํ๊ธฐ ์ํด์
๋๊ธ๋จ๊ธฐ๊ธฐ