구글 제미나이(Gemini) API 키 발급 방법 + 파이썬 활용 예제
구글의 강력한 AI 모델, 제미나이(Gemini)를 여러분의 프로젝트에 통합하고 싶으신가요? 멋진 AI 앱 개발의 첫걸음은 바로 Gemini API 키를 얻는 것입니다. 이 키는 여러분의 프로그램이 구글의 AI 서비스와 통신할 수 있게 해주는 인증 열쇠입니다.
복잡한 과정을 거치지 않고, 가장 빠르게 API 키를 발급받을 수 있는 직접적인 방법을 알려드리겠습니다. 바로 aistudio.google.com/apikey 링크를 이용하는 것입니다!
1단계: API 키 관리 페이지로 바로 이동
다른 페이지를 거칠 필요 없이, API 키 관리 페이지로 직접 접속합니다.
- 다음 웹사이트에 접속하세요: https://aistudio.google.com/apikey
- 아직 로그인하지 않았다면, Google 계정으로 로그인하라는 메시지가 표시됩니다. Gemini API를 사용할 Google 계정으로 로그인해주세요.
- (처음 사용자) 만약 Google AI Studio를 처음 사용한다면, 서비스 약관 동의 등의 팝업이 나타날 수 있습니다. 내용을 확인하고 동의 후 계속 진행합니다.
- 위 과정을 거치면 다음과 같은 페이지가 나타납니다.
2단계: 새 API 키 생성 버튼 클릭
이제 여기서 새 키를 생성합니다.
"API 키 만들기" 버튼을 클릭합니다.(위에 나타난 이미지의 빨간색 박스)
어떤 Google Cloud 프로젝트에 API 키를 생성할지 선택하는 옵션이 나타날 수 있습니다.
- "새 프로젝트에서 API 키 만들기": 새 Google Cloud 프로젝트를 만들면서 API 키를 생성합니다. (가장 간단)
- "기존 프로젝트에서 API 키 만들기": 기존에 사용하던 Google Cloud 프로젝트가 있다면 선택하여 키를 생성할 수 있습니다.
3단계: 생성된 API 키 확인 및 복사
"API 키 만들기" 버튼을 클릭하고 프로젝트 선택을 완료하면, 잠시 후 화면에 여러분의 새로운 Gemini API 키가 문자열 형태로 표시됩니다.
화면에 나타난 긴 영문/숫자 조합의 문자열이 바로 여러분의 API 키입니다.
키 옆에 있는 복사 아이콘 (클립보드 모양)을 클릭하거나, 마우스로 직접 드래그하여 키 전체를 정확하게 복사합니다.
⚠️ 메모장에 붙여넣어 따로 저장해둡니다.
4단계: 발급받은 API 키, 실제로 사용해보기 (Python 예제)
이제 API 키를 발급받았으니, 간단한 파이썬 코드를 통해 Gemini 모델과 실제로 대화하는 예제를 살펴보겠습니다. 이 코드는 Colab이나 Jupyter Notebook 환경처럼 셀 단위로 실행하는 것을 가정합니다.
# ─── Cell 1: API 키 입력 및 설정 ───
import google.generativeai as genai
# 사용자로부터 API 키를 안전하게 입력받습니다.
GOOGLE_API_KEY = input("Google API 키를 입력하세요: ")
if not GOOGLE_API_KEY:
# 키가 입력되지 않으면 오류를 발생시켜 중단합니다.
raise ValueError("API 키가 입력되지 않았습니다.")
# 입력받은 API 키로 Gemini 라이브러리를 설정합니다.
genai.configure(api_key=GOOGLE_API_KEY)
print("✅ API 설정 완료. 다음 셀을 실행하세요.")
코드 설명 (Cell 1):
google.generativeai
라이브러리를genai
라는 이름으로 가져옵니다.input()
함수를 사용하여 사용자에게 터미널이나 입력 필드를 통해 API 키를 직접 입력받습니다. 이렇게 하면 코드에 키가 직접 노출되지 않아 더 안전합니다.- 입력된 키가 비어있는지 확인하고, 비어있다면 오류를 발생시켜 프로그램이 중단되도록 합니다. API 키 없이는 다음 단계를 진행할 수 없기 때문입니다.
genai.configure(api_key=...)
함수를 호출하여 라이브러리에 우리가 사용할 API 키를 알려줍니다. 이 설정이 완료되어야 Gemini 모델과 통신할 수 있습니다.- 설정이 성공적으로 완료되었다는 메시지를 출력합니다.
# ─── Cell 2: 모델 고정 설정 ───
import google.generativeai as genai
# 사용할 Gemini 모델의 이름을 지정합니다. (예: 특정 실험 버전)
MODEL_NAME = "gemini-2.5-pro-exp-03-25" # 필요시 다른 모델 이름으로 변경 가능
try:
# 지정된 모델 이름으로 Gemini 모델 객체를 생성합니다.
model = genai.GenerativeModel(MODEL_NAME)
print(f"✅ 모델 설정 완료: {MODEL_NAME}")
print("다음 셀(Cell 3)을 실행하세요.")
except Exception as e:
# 모델 로딩 중 오류 발생 시 (잘못된 키, 네트워크 문제, 지원되지 않는 모델 등)
print(f"❌ 모델 설정 실패: {str(e)}")
print("⚠️ API 키가 유효한지, Google Cloud Console에서 API/쿼터 설정을 확인하거나, 네트워크 상태를 점검하세요.")
코드 설명 (Cell 2):
- 사용할 Gemini 모델의 이름을
MODEL_NAME
변수에 지정합니다. 여기서는"gemini-2.5-pro-exp-03-25"
라는 특정 실험 모델을 사용하도록 고정했습니다. (사용 가능한 최신 모델 이름은 공식 문서를 참고하세요.) try...except
블록을 사용하여 모델 로딩 과정에서 발생할 수 있는 오류를 처리합니다.genai.GenerativeModel(MODEL_NAME)
을 호출하여 지정된 이름의 모델 객체를 생성하고model
변수에 할당합니다. 이 객체를 통해 프롬프트를 보내고 응답을 받게 됩니다.- 모델 객체 생성에 성공하면 성공 메시지를 출력합니다.
- 만약 API 키가 잘못되었거나, 네트워크 연결 문제, 해당 모델을 사용할 권한(쿼터) 부족 등의 이유로 오류가 발생하면
except
블록이 실행되어 오류 메시지와 함께 가능한 점검 사항을 안내합니다.
# ─── Cell 3: 대화형 인터랙티브 모드 ───
import time # time.sleep() 함수 사용을 위해 import
import google.generativeai as genai
# 모델에게 기본적으로 지시할 내용 (항상 한국어로 답변하도록)
SYSTEM_PROMPT = "모든 응답을 한국어로 제공하세요. 간결하고 명확하게 답변하세요."
print("💬 프롬프트를 입력하세요. 종료하려면 'exit' 또는 'quit'를 입력하세요.\n")
# 사용자가 'exit' 또는 'quit'를 입력할 때까지 무한 반복
while True:
prompt = input("프롬프트: ") # 사용자로부터 질문(프롬프트) 입력받기
# 종료 명령어 확인
if prompt.strip().lower() in ("exit", "quit"):
print("🛑 대화를 종료합니다.")
break # 반복문 탈출
# 빈 입력 처리
if not prompt.strip():
print("⚠️ 빈 입력입니다. 프롬프트를 입력하세요.\n")
continue # 다음 반복으로 넘어감
try:
# 시스템 프롬프트와 사용자 프롬프트를 결합하여 모델에게 전달
full_prompt = f"{SYSTEM_PROMPT}\n\n사용자: {prompt}"
# 모델에게 프롬프트를 보내고 응답 생성 요청
response = model.generate_content(full_prompt)
print("\n✅ 응답 성공!")
# 생성된 텍스트 응답 출력
print(response.text, "\n" + "-"*50 + "\n")
except Exception as e:
# 오류 처리
msg = str(e)
if "503" in msg: # 서버 일시적 오류 (503 Service Unavailable)
print("⚠️ 503 오류: 서버가 응답하지 않습니다. 3초 후 재시도...")
time.sleep(3) # 3초 대기
try: # 재시도
response = model.generate_content(full_prompt)
print("\n✅ 재시도 성공!")
print(response.text, "\n" + "-"*50 + "\n")
except Exception as retry_e: # 재시도 실패
print(f"❌ 재시도 실패: {str(retry_e)}\n네트워크나 쿼터를 확인하세요.\n" + "-"*50 + "\n")
elif "quota" in msg.lower(): # API 사용량(쿼터) 초과 오류
print("❌ 쿼터 초과: Google Cloud Console에서 쿼터를 확인하거나 잠시 후 시도하세요.\n" + "-"*50 + "\n")
else: # 그 외 다른 오류
print(f"❌ 오류 발생: {msg}\n" + "-"*50 + "\n")
# API 서버 부하를 줄이기 위해 각 요청 사이에 1초 대기
time.sleep(1)
코드 설명 (Cell 3):
time
라이브러리를 가져와 요청 사이에 잠시 멈추는time.sleep()
기능을 사용합니다.SYSTEM_PROMPT
변수에 모델이 항상 지켜야 할 기본 지침을 설정합니다. 여기서는 "모든 응답을 한국어로, 간결하고 명확하게" 하도록 지시했습니다.while True:
를 사용하여 사용자가 종료 명령어를 입력할 때까지 계속해서 프롬프트를 입력받고 응답하는 무한 루프를 만듭니다.input("프롬프트: ")
로 사용자에게 질문을 입력받습니다.- 입력된 내용이 "exit" 또는 "quit" (대소문자 구분 없이)이면 루프를 종료합니다 (
break
). - 입력된 내용이 비어있으면 경고 메시지를 출력하고 다시 입력을 받습니다 (
continue
). try...except
블록 안에서 실제 API 호출 및 오류 처리를 수행합니다.full_prompt
변수에 시스템 프롬프트와 사용자의 프롬프트를 결합합니다. 이렇게 하면 모델이 사용자의 질문에 답할 때 시스템 프롬프트의 지침(한국어 응답)을 고려하게 됩니다.model.generate_content(full_prompt)
를 호출하여 준비된 프롬프트를 Gemini 모델에게 보내고 응답 생성을 요청합니다.- 성공적으로 응답을 받으면
response.text
속성을 통해 텍스트 내용을 가져와 출력합니다. - 오류 처리:
503
오류 (서버 일시적 문제)가 발생하면 3초 대기 후 재시도합니다. 재시도에도 실패하면 실패 메시지를 출력합니다.- 오류 메시지에 "quota"라는 단어가 포함되면 API 사용량 초과로 판단하고 관련 안내를 출력합니다.
- 그 외 다른 종류의 오류가 발생하면 해당 오류 메시지를 출력합니다.
- 각 요청이 끝난 후
time.sleep(1)
을 호출하여 1초간 대기합니다. 이는 무료 티어 사용 시 분당 요청 횟수(RPM) 제한을 준수하고 서버에 과도한 부하를 주는 것을 방지하는 데 도움이 됩니다.
참고: 무료 사용량(할당량) 확인
Gemini API는 무료로 시작할 수 있는 사용량을 제공합니다. 무료 할당량(쿼터)이 궁금하다면 Google AI Studio의 다음 페이지에서 확인할 수 있습니다:
만약 위 파이썬 코드 실행 중 "quota" 관련 오류가 발생한다면, 이 페이지를 방문하여 "사용 데이터 보기" 클릭 후 구글 클라우드에서 사용량 제한을 확인하고 필요한 경우 유료 플랜 전환을 고려해볼 수 있습니다.