삼정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)