개발일지 24 - LLM 사용(JSON, 프롬프트, 원리)

tk7580·2025년 6월 24일

JSON

JSON(제이슨, JavaScript Object Notation)
데이터를 주고받을 때 사용하는 '데이터 표현 규칙' 또는 '양식'
이름에 JavaScript가 들어가지만, 현재는 거의 모든 프로그래밍 언어에서 표준처럼 사용되는 매우 가벼운 텍스트 형식

  • 특징 : {"key": "value"} 형태로 데이터를 표현

  • ex) 사람의 정보를 JSON으로 표현
    { "name": "홍길동", "age": 30, "isStudent": false, "courses": ["컴퓨터공학", "데이터베이스"] }

앞으로의 진행에서는 정보를 JSON형식으로 만들어서 달라고 요청할 것이다.
JSON형식으로 데이터를 받으면 Python 코드로 쉽고 안정적이게 데이터를 분석하고 원하는 정보를 DB에 저장할 수 있기 때문


프롬프트 (Prompt)

프롬프트 (Prompt)
원하는 작업을 시키기 위해(현재 상황에서는 우리가 LLM(Gemini)에게) 전달하는 요청서 또는 지시문 양식이다.


호출 및 응답 생성 원리

내 컴퓨터: IntelliJ / Python 스크립트

  1. 준비:
    스크립트 실행,
    .env 파일에서 GEMINI_API_KEY를 읽어온다.
  2. 요청 패키징:
    google-generativeai 라이브러리가
    API 키와 프롬프트("대한민국의 수도는...")를 함께 담아,
    Google 서버가 이해할 수 있는
    표준 형식의 네트워크 요청(HTTPS 요청)을 생성

-----------> (인터넷을 통해 데이터 전송) ----------->

Google Cloud 서버: Gemini LLM

  1. 인증 (Authentication):
    Google 서버는 요청에 담긴 API 키를 보고 신원 확인
  2. 프롬프트 처리:
    인증된 요청의 프롬프트를 Gemini 모델에게 전달
  3. 응답 생성:
    학습 데이터를 기반으로 프롬프트 이해, 답변 텍스트 생성
  4. 응답 패키징:
    생성된 답변 텍스트를 다른 정보(안전 등급 등)와 함께 네트워크 응답(HTTPS 응답)으로 포장

<----------- (인터넷을 통해 데이터 전송) <-----------

내 컴퓨터: IntelliJ / Python 스크립트

  1. 응답 수신:
    스크립트가 Google 서버로부터 온 응답을 수신
  2. 데이터 추출:
    response.text 코드를 통해, 수신한 응답 패키지에서 핵심 내용인 '텍스트' 부분만 추출
  3. 결과 출력:
    print() 함수가 추출된 텍스트를 화면(터미널)에 출력

문법/라이브러리

아래 코드에 사용된 문법/라이브러리 해설

  • from dotenv import load_dotenv, load_dotenv():
    .env파일에 있는 중요 정보(API키 등)를 '환경 변수'라는 형태로 스크립트가 쓸 수 있게 로드
  • 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> 

0개의 댓글