JSON(제이슨, JavaScript Object Notation)
데이터를 주고받을 때 사용하는 '데이터 표현 규칙' 또는 '양식'
이름에 JavaScript가 들어가지만, 현재는 거의 모든 프로그래밍 언어에서 표준처럼 사용되는 매우 가벼운 텍스트 형식
특징 : {"key": "value"} 형태로 데이터를 표현
ex) 사람의 정보를 JSON으로 표현
{ "name": "홍길동", "age": 30, "isStudent": false, "courses": ["컴퓨터공학", "데이터베이스"] }
앞으로의 진행에서는 정보를 JSON형식으로 만들어서 달라고 요청할 것이다.
JSON형식으로 데이터를 받으면 Python 코드로 쉽고 안정적이게 데이터를 분석하고 원하는 정보를 DB에 저장할 수 있기 때문
프롬프트 (Prompt)
원하는 작업을 시키기 위해(현재 상황에서는 우리가 LLM(Gemini)에게) 전달하는 요청서 또는 지시문 양식이다.
내 컴퓨터: IntelliJ / Python 스크립트
-----------> (인터넷을 통해 데이터 전송) ----------->
Google Cloud 서버: Gemini LLM
<----------- (인터넷을 통해 데이터 전송) <-----------
내 컴퓨터: IntelliJ / Python 스크립트
아래 코드에 사용된 문법/라이브러리 해설
import os, os.getenv("GEMINI_API_KEY"):
os는 운영체제(Windows, Mac 등)의 기능을 제어하는 라이브러리
os.getenv()는 로드된 환경 변수 중에서 GEMINI_API_KEY라는 이름의 변수 값을 가져오는 함수이다.
import google.generativeai as genai:
Google이 Gemini API를 Python에서 쓸 수 있게 배포한 공식 라이브러리(SDK)이다. genai라는 별칭으로 사용한다.
(이 라이브러리가 없을 경우 앞서 설명한 네트워크 요청(HTTPS)을 코드로 만들어야 함.)
genai.configure(api_key=api_key):
genai 라이브러리를 사용하기 전에 API를 등록한다.
model = genai.GenerativeModel('gemini-1.5-flash-latest'):
Gemini의 모델을 지정한다.
response = model.generate_content(prompt):
실행 코드이다.
model 객체에게 프롬프트대로 답변 생성을 요청하는 코드.
이 함수 호출 시 앞서 설명한 통신 과정이 실행되고,
최종 응답이 response 변수에 담긴다.
response.text:
response 변수 안에는 텍스트 외에 여러 정보가 들어있는데, 그중 우리가 원하는 답변 텍스트만 꺼내오는 속성이다.
# gemini_test.py
import os
import google.generativeai as genai
from dotenv import load_dotenv
def main():
# .env 파일에서 환경 변수 로드
load_dotenv()
# API 키 설정
api_key = os.getenv("GEMINI_API_KEY")
if not api_key:
print("오류: .env 파일에 GEMINI_API_KEY가 설정되지 않았습니다.")
return
try:
genai.configure(api_key=api_key)
# 사용할 모델 선택 (gemini-1.5-flash는 빠르고 비용 효율적인 최신 모델)
model = genai.GenerativeModel('gemini-1.5-flash-latest')
# 테스트용 프롬프트
prompt = "대한민국의 수도는 어디야?"
print(f"Gemini에게 질문 중: \"{prompt}\"")
# API 호출
response = model.generate_content(prompt)
# 응답 출력
print("\n--- Gemini 응답 ---")
print(response.text)
print("--------------------")
print("\nAPI 연동 테스트 성공!")
except Exception as e:
print(f"API 호출 중 오류가 발생했습니다: {e}")
if __name__ == "__main__":
main()
PS C:\Users\admin\IdeaProjects\springproject\python_api_collector> python gemini_test.py
Gemini에게 질문 중: "대한민국의 수도는 어디야?"
--- Gemini 응답 ---
대한민국의 수도는 서울입니다.
--------------------
API 연동 테스트 성공!
PS C:\Users\admin\IdeaProjects\springproject\python_api_collector>