1. API 요청 구성
1.1 CURL을 사용하여 요청 보내기
CURL은 HTTP 및 HTTPS와 같은 다양한 프로토콜을 사용하여 데이터를 송수신하는 명령줄 도구입니다. OpenAI API에 CURL을 사용하여 요청을 보내려면 먼저 유효한 API 키를 가져와 요청 헤더에 추가해야 합니다.
다음은 OpenAI API에 요청을 보내기 위해 사용한 CURL 명령어의 예시입니다:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "이것은 테스트라고 말해봐!"}],
"temperature": 0.7
}'
$OPENAI_API_KEY
를 여러분의 API 키로 교체해야 합니다. 보안상의 이유로 API 키를 공개된 장소에 노출시키지 않아야 합니다.
1.2 요청 헤더 분석
위의 CURL 명령에서 우리는 두 가지 중요한 요청 헤더를 사용했습니다: Content-Type
와 Authorization
.
-
Content-Type
: 이는 서버에게 JSON 형식으로 데이터를 보내고 있다는 것을 알려줍니다. 보통 값은application/json
입니다. -
Authorization
: 이는 API 요청을 인증하는 데 사용되는 자격 증명으로, 형식은 항상Bearer (여러분의 API 키)
입니다.
이 두 헤더의 정확성은 요청의 성공에 매우 중요합니다.
1.3 요청 본문 구성
요청 본문은 OpenAI에게 우리의 의도를 알리는 JSON 형식의 문자열입니다. 이 요청에서는 model
을 사용하여 사용할 모델을 지정하고, 사용자의 입력을 정의하는 messages
배열을 전달하고, 응답의 변동성을 조절하기 위해 temperature
를 설정합니다.
JSON은 다음과 같은 모양입니다:
{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "이것은 테스트라고 말해봐!"}],
"temperature": 0.7
}
이 예에서는 모델에게 입력 메시지를 기반으로 테스트 응답을 생성하도록 요청하고 있습니다.
1.4 요청 매개변수의 상세한 설명
요청 본문 내부에는 주목해야 할 몇 가지 중요한 매개변수가 있습니다:
-
model
: 우리가 사용하려는 AI 모델을 지정합니다. OpenAI는 각기 다른 기능과 효과를 가진 여러 모델을 제공합니다. -
messages
: 이는role
이 메시지의 역할을 제공하고content
가 메시지의 내용을 나타내는 하나 이상의 메시지 객체를 포함하는 배열입니다. -
temperature
: 응답의 확신도를 제어합니다. 낮은temperature
는 더 확신되는 답변을 생성하고, 높은 값은 보다 무작위성을 가져옵니다.
2. API 응답 분석
2.1 응답 이해
요청을 보내면 서버는 HTTP 상태 코드와 응답 본문을 반환합니다. 일반적으로 성공적인 요청은 200 시리즈의 상태 코드를 받습니다. 반환된 JSON 데이터에는 요청의 결과가 포함되며, 예시 응답은 다음과 같습니다:
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1677858242,
"model": "gpt-3.5-turbo-1106",
"usage": {
"prompt_tokens": 13,
"completion_tokens": 7,
"total_tokens": 20
},
"choices": [
{
"message": {
"role": "assistant",
"content": "\n\n이것은 테스트입니다!"
},
"logprobs": null,
"finish_reason": "stop",
"index": 0
}
]
}
이 응답에서는 완료 ID, 생성 타임스탬프, 사용된 모델, 토큰 사용량, 그리고 실제 응답의 내용(choices
필드)을 볼 수 있습니다.
2.2 완전성과 오류 처리
finish_reason
필드는 API가 왜 더 이상의 내용을 출력하지 않게 되었는지를 나타냅니다. 일반적인 완료 이유에는 stop
, length
, idle
등이 있습니다. 토큰 한도를 초과하거나 올바르지 않은 API 키와 같은 오류가 발생하면 해당 오류 메시지와 상태 코드를 받게 됩니다. 이러한 오류를 적절하게 처리하여 사용자 경험과 애플리케이션의 안정성을 보장하는 것이 중요합니다. 오류 처리에 대해서는 반환된 상태 코드와 오류 메시지를 기반으로 적절한 오류 처리 전략을 결정하고, 예를 들어 요청을 다시 시도하거나 사용자에게 오류 이유를 설명하는 피드백을 제공하는 등의 조치를 취할 수 있습니다.
2.3 Python SDK를 사용하여 API 요청 보내기
아래는 공식 OpenAI Python SDK를 사용하여 API 호출하는 예제입니다.
먼저, pip을 사용하여 openai 라이브러리를 설치해야 합니다:
pip install --upgrade openai
다음으로, 다음과 같은 Python 코드를 사용하여 위의 예제와 비슷한 API 요청을 할 수 있습니다. 반드시 YOUR_OPENAI_API_KEY
를 여러분의 API 키로 교체해야 합니다.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_OPENAI_API_KEY",
)
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "여러분은 여러 가지 프로그래밍 문제를 해결하는 데 능숙한 전문 개발 보조입니다."},
{"role": "user", "content": "Go로 퀵정렬 함수를 작성해 주세요."}
]
)
print(completion.choices[0].message)