본문 바로가기
삼정KPMG Future Academy/웹개발 Framework

5주차 - Day 1. 생성형 AI GPT API 활용

by _이유 2025. 10. 27.

생성형 AI GPT API 활용

  • git에 llm_basic_ex repository 생성 후 git clone
  • 가상환경에 pip install openai

 

OpenAi API key test

API key loading

  • open ai에 가서 api key 발급받은 후 개인적인 파일에 복붙 후 저장
    • git push 하기 전에 본 파일들에 api key가 노출되지 않았는지 확인하고 올릴것!
  • .env 파일에
OPENAI_API_KEY = 'api 개인 key' 입력 후 저장
from dotenv import load_dotenv
import os
from pathlib import Path

env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)

api_key = os.getenv('OPENAI_API_KEY')
if not api_key:
    raise RuntimeError("OPENAI_API_KEY가 설정되지 않았습니다. .env를 확인하세요.")

 

라이브러리 로딩 및 객체 생성

from openai import OpenAI
# openai api 인증 및 OpenAI 객체 생성
client = OpenAI(api_key=api_key)

 

GPT AI 모델에 질문하기

response = client.responses.create(
    model="gpt-5",
    input="안녕, gpt-5는 처음이야."
)

 

응답 결과 파싱

print(response.output_text)

< 인공지능과 생성형 AI 서비스 활용 기본 >

창의력 문제 해결

창의력 문제 해결

  • 새로운 방법과 혁신적인 접근을 통해 문제를 해결하는 프로세스
  • 단순히 문제를 해결하는 것에 그치지 않고, 기존의 틀을 벗어나 새로운 아이디어나 시각을 통해 더 나은 해결책을 찾아내는 것을 목표로 함

창의력 문제 해결의 중요성

  • 혁신 촉진
  • 문제의 근본적 해결
  • 팀워크 강화
  • 고객 만족도 응대

창의적 문제 해결의 단계

  • 문제 인식 및 정의
    • 문제를 명확하게 이해하고 정의하는 단계
    • 문제의 원인을 분석하고, 문제의 범위를 명확히 설정하는 것이 중요
    • 기법: 5 Why 기법, Fishbone Diagram, SWOT 분석
      • 5 Why 기법: 문제의 근본원인을 찾아내기 위해 사용하는 문제 해결 기법. 왜? 라는 질문을 다섯 번 반복하면서 표면적인 현상이 아니라 문제의 뿌리 원인을 찾아가는 방법

< 영화 추천 챗봇 >

  • 싱글턴: 한 번의 입력(질문)과 한 번의 출력(응답)으로 끝나는 대화 구조
    • 특징:
      • 모델은 이전 대화 내용이나 문맥을 기억하지 않아
      • 매번 새로운 대화로 취급돼
      • 간단하고 빠르지만, 문맥을 고려한 복잡한 대화는 어려움
  • 멀티턴: 여러 번의 주고받는 대화에서 문맥을 유지하며 이어지는 구조
    • 특징
      • 모델이 이전 대화 내용을 기억하고 그 흐름을 기반으로 응답함
      • 자연스러운 대화, 후속 질문, 교정 등 가능
      • 대신 구현 시 메모리 관리나 문맥 유지 로직이 필요함

 

API Key Loading

from openai import OpenAI
from dotenv import load_dotenv
import os

# 환경변수 로딩
load_dotenv(override=True)

# 메모리에 로딩된 값을 api_key 변수에 대입
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
# print(api_key)

 

라이브러리 로딩 및 객체 생성

from openai import OpenAI
# openai api 인증 및 OpenAI 객체 생성
client = OpenAI(api_key=OPENAI_API_KEY)

 

챗봇 기본

messages = []
while True:
    text = input("사용자(종료 : q) >>> ")
    # 종료 조건
    if text.lower() in ['q', 'ㅂ']:
        break
    messages.append(
        {
            "role": "user",
            "content": text
        }
    )
    # gpt 모델 챗 요청 -> 응답 받기
    completion = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=messages,
    )
    # 응답 출력
    # print(completion.choices[0].message.content)
    chat_response = print(completion.choices[0].message.content)
    messages.append(
        {
            "role" : "assistant",
            "content" : "chat_response"
        }
    )
    print("messages의 상태: ", messages)