# ChatGPT API ํ์ฉ ๊ฐ์ด๋
## ํ์ต ๋ชฉํ
OpenAI API๋ก ChatGPT๋ฅผ ์ ํ๋ฆฌ์ผ์ด์
์ ํตํฉํฉ๋๋ค.
## 1. OpenAI API๋?
OpenAI์์ ์ ๊ณตํ๋ AI ๋ชจ๋ธ API์
๋๋ค.
- GPT-4, GPT-4o ๋ฑ ์ต์ ๋ชจ๋ธ
- ํ
์คํธ ์์ฑ, ๋ํ, ๋ถ์
- ์ด๋ฏธ์ง ์
๋ ฅ ์ง์ (Vision)
- ํจ์ ํธ์ถ ๊ธฐ๋ฅ
## 2. API ํค ๋ฐ๊ธ
1. platform.openai.com ๊ฐ์
2. API Keys ๋ฉ๋ด
3. Create new secret key
4. ํ๊ฒฝ๋ณ์๋ก ์ ์ฅ
## 3. Python ์ค์น
pip install openai
ํ๊ฒฝ๋ณ์:
export OPENAI_API_KEY=sk-xxxxx
## 4. ๊ธฐ๋ณธ ํธ์ถ
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "user", "content": "Hello"}
]
)
print(response.choices[0].message.content)
## 5. ์์คํ
ํ๋กฌํํธ
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "You are a helpful assistant that speaks Korean."},
{"role": "user", "content": "What is Python?"}
]
)
## 6. ๋ํ ๊ธฐ๋ก ์ ์ง
messages = [
{"role": "system", "content": "You are a helpful assistant."}
]
def chat(user_input):
messages.append({"role": "user", "content": user_input})
response = client.chat.completions.create(
model="gpt-4o",
messages=messages
)
assistant_message = response.choices[0].message.content
messages.append({"role": "assistant", "content": assistant_message})
return assistant_message
## 7. ์คํธ๋ฆฌ๋ฐ
stream = client.chat.completions.create(
model="gpt-4o",
messages=messages,
stream=True
)
for chunk in stream:
content = chunk.choices[0].delta.content
if content:
print(content, end="")
## 8. ํจ์ ํธ์ถ (Tool Use)
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"}
},
"required": ["location"]
}
}
}]
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools
)
if response.choices[0].message.tool_calls:
tool_call = response.choices[0].message.tool_calls[0]
function_name = tool_call.function.name
arguments = json.loads(tool_call.function.arguments)
# ํจ์ ์คํ ํ ๊ฒฐ๊ณผ ๋ฐํ
## 9. ์ด๋ฏธ์ง ์
๋ ฅ (Vision)
import base64
with open("image.jpg", "rb") as f:
image_data = base64.b64encode(f.read()).decode()
response = client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "What is in this image?"},
{"type": "image_url", "image_url": {
"url": f"data:image/jpeg;base64,{image_data}"
}}
]
}]
)
## 10. ํ๋ผ๋ฏธํฐ ์กฐ์
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
temperature=0.7, # ์ฐฝ์์ฑ (0-2)
max_tokens=1000, # ์ต๋ ํ ํฐ
top_p=1, # ๋ค์์ฑ
frequency_penalty=0, # ๋ฐ๋ณต ๋ฐฉ์ง
presence_penalty=0 # ์ ์ฃผ์ ์ ๋
)
## 11. ๋น์ฉ ๊ด๋ฆฌ
๋ชจ๋ธ๋ณ ๊ฐ๊ฒฉ:
- gpt-4o: ์
๋ ฅ 5/์ถ๋ ฅ 15 (๋ฐฑ๋ง ํ ํฐ๋น USD)
- gpt-4o-mini: ์
๋ ฅ 0.15/์ถ๋ ฅ 0.6
๋น์ฉ ์ ๊ฐ:
- gpt-4o-mini ์ฌ์ฉ
- max_tokens ์ ํ
- ์์คํ
ํ๋กฌํํธ ์ต์ ํ
- ์๋ต ์บ์ฑ
## 12. ์๋ฌ ์ฒ๋ฆฌ
from openai import RateLimitError, APIError
import time
def safe_call(messages, max_retries=3):
for i in range(max_retries):
try:
return client.chat.completions.create(
model="gpt-4o",
messages=messages
)
except RateLimitError:
time.sleep(2 ** i)
except APIError as e:
print(f"API Error: {e}")
raise
raise Exception("Max retries exceeded")
## 13. Node.js ์ฌ์ฉ
npm install openai
import OpenAI from "openai";
const openai = new OpenAI();
const response = await openai.chat.completions.create({
model: "gpt-4o",
messages: [{role: "user", content: "Hello"}]
});
console.log(response.choices[0].message.content);
## ์ถ์ฒ ํ์ต ์์
1. ๊ธฐ๋ณธ API ํธ์ถ
2. ๋ํ ๊ธฐ๋ก ๊ด๋ฆฌ
3. ์คํธ๋ฆฌ๋ฐ ๊ตฌํ
4. ํจ์ ํธ์ถ
5. ๋น์ฉ ์ต์ ํ