Overview
안녕하세요. 이번 시간에는 OpenAI API를 이용해서 챗GPT앱을 사용하지 않고 파이썬 스크립트로 AI응답을 받아오는 방법에 대해서 공부해 보도록 하겠습니다.
사용 Limit확인
OpenAI의 API를 이용하기 위해서는 본인의 계정에 API를 사용할 수 있는 크레딧이 남아 있어야합니다. 현재 남아있는 크레딧을 확인하시거나 결제를 하시려면 https://platform.openai.com/settings/organization/billing/overview에 접속하시면 아래와 같이 현재 보유하고 있는 크레딧을 확인하 실 수가 있습니다.

결제정보를 한번도 입력하지 않은 경우라면, Add payment details을 눌러서 결제정보를 입력해주세요. 카드정보와 빌링주소등을 적고 Continue버튼을 누릅니다.

그러면 충전화면으로 바로 이동합니다. 만약 결제정보가 이미 등록된 경우라면 화면에 Add to credit balance라는 버튼이 있을거에요. 그거 눌러서 아래 화면을 띄웁니다.

최소 충전 금액은 $5이고 한번에 $95까지 충전이 가능합니다. 충전하시고자 하는 금액을 입력하신 뒤 Continue버튼을 눌러서 충전을 완료해주세요. 충전이 완료되면 화면이 닫히고, 빌링대시보드에 충전된 금액이 표시됩니다.

API Key
크레딧이 충전이 되었다면 이제 API Key를 우선적으로 받아와야하는데요. https://platform.openai.com/api-keys에 들어가시면 아래와 같이 API Key관리화면이 뜨고 중앙에 + Create new secret key라는 버튼이 보일거에요.

+ Create secret key버튼을 누르면 팝업이 뜨고 해당 키의 이름과 사용될 프로젝트, 그리고 사용권한을 입력하는 양식이 나오는데요. 테스트니까 그냥 기본값으로 선택하신뒤에 Create secret key버튼을 누르시면 됩니다.

그러면 바로 API Key를 생성해서 화면에 보여줍니다. 그 Key를 복사해주세요. 여기서 반드시 복사하셔야합니다. 팝업창을 한번 닫으면 API Key를 다시 보여주지 않아요.

파이썬에서 API호출하기
우선 접속에 필요한 패키지를 설치해주세요.
pip install openai
pip install python-dotenv
.env
파일 생성
프로젝트 루트 디렉토리에 .env
파일을 생성하고, 다음과 같이 API 키를 저장합니다:
OPENAI_API_KEY=your-api-key-here
파이썬 코드에서 환경 변수 로드
이제 파이썬 코드에서 dotenv
를 사용하여 환경 변수를 로드하고, OpenAI
클라이언트를 생성할 수 있습니다:
import os
from openai import OpenAI
from dotenv import load_dotenv
# .env 파일 로드
load_dotenv()
# 환경 변수에서 API 키 가져오기
api_key = os.getenv("OPENAI_API_KEY")
# OpenAI 클라이언트 생성
client = OpenAI(api_key=api_key)
Chat Completions API 호출 예제
이제 client
객체를 사용하여 Chat Completions API를 호출하는 예제를 보여드리겠습니다:
response = client.chat.completions.create(
model="gpt-3.5-turbo", # 또는 사용 가능한 다른 모델
messages=[
{"role": "system", "content": "당신은 유용한 어시스턴트입니다."},
{"role": "user", "content": "파이썬에서 리스트를 정렬하는 방법을 알려줘."}
],
temperature=0.7,
)
# 응답 출력
print(response.choices[0].message.content)
위 코드에서 temperature
파라미터는 생성되는 응답의 창의성을 조절합니다. 값이 낮을수록 더 보수적인 응답을, 높을수록 더 창의적인 응답을 생성합니다.
위의 파일을 실행해보면 다음과 같은 결과가 나타납니다.
파이썬에서 리스트를 정렬하는 방법은 `sort()` 메서드나 `sorted()` 함수를 사용하는 것입니다 \n\n1 `sort()` 메서드를 사용하는 방법:\n```python\nmy_list = [3, 1, 4, 1, 5, 9, 2, 6, 5]\nmy_list sort()\nprint(my_list) # [1, 1, 2, 3, 4, 5, 5, 6, 9]\n```\n\n2 `sorted()` 함수를 사용하는 방법:\n```python\nmy_list = [3, 1, 4, 1, 5, 9, 2, 6, 5]\nsorted_list = sorted(my_list)\nprint(sorted_list) # [1, 1, 2, 3, 4, 5, 5, 6, 9]\n```\n\n`sort()` 메서드는 원본 리스트를 직접 변경하고, `sorted()` 함수는 정렬된 새로운 리스트를 반환합니다 필요에 따라 적절히 선택하여 사용하시면 됩니다
참고로 response를 출력해보면, print(response)
, 다음과 같은 결과를 보여줍니다.
ChatCompletion(
"id=""chatcmpl-BK8PJOCXL1zAp3MXID8Mn3YTCnrp8",
"choices="[
"Choice(
finish_reason=""stop",
index=0,
"logprobs=None",
"message=ChatCompletionMessage(
content=""파이썬에서 리스트를 정렬하는 방법은 `sort()` 메서드나 `sorted()` 함수를 사용하는 것입니다 \n\n1 `sort()` 메서드를 사용하는 방법:\n```python\nmy_list = [3, 1, 4, 1, 5, 9, 2, 6, 5]\nmy_list sort()\nprint(my_list) # [1, 1, 2, 3, 4, 5, 5, 6, 9]\n```\n\n2 `sorted()` 함수를 사용하는 방법:\n```python\nmy_list = [3, 1, 4, 1, 5, 9, 2, 6, 5]\nsorted_list = sorted(my_list)\nprint(sorted_list) # [1, 1, 2, 3, 4, 5, 5, 6, 9]\n```\n\n`sort()` 메서드는 원본 리스트를 직접 변경하고, `sorted()` 함수는 정렬된 새로운 리스트를 반환합니다 필요에 따라 적절히 선택하여 사용하시면 됩니다 ",
"refusal=None",
"role=""assistant",
"annotations="[],
"audio=None",
"function_call=None",
"tool_calls=None
)
)"
],
created=1744138577,
"model=""gpt-3 5-turbo-0125",
"object=""chat completion",
"service_tier=""default",
"system_fingerprint=None",
usage=CompletionUsage(
completion_tokens=273,
prompt_tokens=50,
total_tokens=323,
completion_tokens_details=CompletionTokensDetails(
accepted_prediction_tokens=0,
audio_tokens=0,
reasoning_tokens=0,
rejected_prediction_tokens=0
),
prompt_tokens_details=PromptTokensDetails(
audio_tokens=0,
cached_tokens=0
)
)
)
주의사항
- API 키 보안: API 키는 개인 정보이므로, 코드에 직접 포함시키기보다는 위에서 소개한 방법처럼 환경 변수를 통해 관리하는 것이 좋습니다.
- 모델 선택: 사용하려는 모델(
gpt-4o
,gpt-3.5-turbo
등)이 계정에서 접근 가능한지 확인하세요. - 에러 핸들링: API 호출 시 발생할 수 있는 예외를 처리하여 프로그램이 안정적으로 동작하도록 구현하는 것이 좋습니다.
오늘 강좌는 여기까지 입니다. 최신 버전의 OpenAI Python 라이브러리를 활용하여 다양한 API를 호출할 수 있는데, 더 자세한 내용은 OpenAI 공식 문서를 참고하시기 바랍니다. 시청해 주셔서 감사합니다.