OpenAI API 설정

API 키 발급 및 환경설정

OpenAI API 키 발급 및 환경설정 가이드

AI
RAG
LangChain
저자

Kwangmin Kim

공개

2025년 01월 03일

1 OpenAI 키 발급

  • OpenAI API 웹사이트에 접속
  • 링크: https://platform.openai.com/docs/overview
  • 설정 > Billing > Payment methods > 신용카드 등록 > add to credit > $10 충전 > continue > Usage Limits
    • “Set a monthly budge”: 월간 사용한도를 지정. 이 금액에 도달하면 더이상 과금하지 않고 API 는 사용을 멈춤
    • “Set an email notification threshold”: 이메일이 발송되는 요금을 지정. 이 금액에 도달하면 이메일이 발송됨
  • 우측 프로필 이미지 클릭 - “Your profile”
  • API Key 관리 메뉴 로 접속
    • 링크: https://platform.openai.com/api-keys
    • “Create new secret key” 를 클릭
    • 생성된 API key 복사
    • 키가 유출되면 다른 사람이 내 API KEY 를 사용하여 GPT 를 사용할 수 있다.
    • 절대 키는 타인에게 공유하지 말고, 안전한 곳에 보관

2 .env 파일 설정

  • 프로젝트 루트 디렉토리에 .env 파일을 생성
  • .env 파일에 OPENAI_API_KEY=방금복사한 키를 입력 한 뒤 Ctrl + S 를 눌러 저장하고 파일을 닫는다.
OPENAI_API_KEY=sk-proj-81q....

3 환경변수 설정

# API KEY를 환경변수로 관리하기 위한 설정 파일
from dotenv import load_dotenv

# API KEY 정보로드
load_dotenv()
# 출력: True

import os

print(f"[API KEY]\n{os.environ['OPENAI_API_KEY'][:-15]}" + "*" * 15)
# 출력: sk-proj-81qk0Z***************
from langchain_openai import ChatOpenAI

# 객체 생성
llm = ChatOpenAI(
    temperature=0.1,  # 창의성 (0.0 ~ 2.0)
    model_name="gpt-4.1-mini",  # 모델명
)

# 질의내용
question = "대한민국의 수도는 어디인가요?"

# 질의
print(f"[답변]: {llm.invoke(question)}")
# 출력: [답변]: content='대한민국의 수도는 서울특별시입니다.' additional_kwargs={'refusal': None} response_metadata={'token_usage': {'completion_tokens': 11, 'prompt_tokens': 16, 'total_tokens': 27, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4.1-mini-2025-04-14', 'system_fingerprint': 'fp_658b958c37', 'id': 'chatcmpl-BgLGZlSCdQpopkgabeEolgKOjSec5', 'finish_reason': 'stop', 'logprobs': None} id='run-7cd14eae-4ceb-4eda-9565-3076148bf702-0' usage_metadata={'input_tokens': 16, 'output_tokens': 11, 'total_tokens': 27, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}}


# 질의내용
question = "대한민국의 수도는 어디인가요?"

# 질의
response = llm.invoke(question)
response
# AIMessage(content='대한민국의 수도는 서울입니다.', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 8, 'prompt_tokens': 16, 'total_tokens': 24, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_07871e2ad8', 'id': 'chatcmpl-BgLBMjx3jC0X772uUgb5BnYMd5x8c', 'finish_reason': 'stop', 'logprobs': None}, id='run-dbfc16ce-51ce-43c8-a01e-8d8bfc2debe1-0', usage_metadata={'input_tokens': 16, 'output_tokens': 8, 'total_tokens': 24, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})

response.content
# 출력: '대한민국의 수도는 서울입니다.'
response.response_metadata
# 출력: {'token_usage': {'completion_tokens': 8, 'prompt_tokens': 16, 'total_tokens': 24, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_07871e2ad8', 'id': 'chatcmpl-BgLBMjx3jC0X772uUgb5BnYMd5x8c', 'finish_reason': 'stop', 'logprobs': None}

Subscribe

Enjoy this blog? Get notified of new posts by email: