본문 바로가기
인공지능/LLM 서비스

생성형 AI에 대해서 - GPT API

by hyunji00pj 2025. 1. 12.

1. 생성형 AI 란?

생성형 AI는 주어진 데이터를 학습하고 이를 바탕으로 새로운 콘텐츠를 만들어내는 인공지능 기술입니다. 예를 들어, 이런 AI는 사람처럼 글을 쓰거나 그림을 그릴 수 있습니다. 기본적으로 많은 데이터를 분석해 패턴을 배우고, 그 패턴을 사용해 새로운 것을 창작하는 것입니다. 그래서 질문에 대한 답변이나 창의적인 글쓰기, 이미지 생성 등 다양한 작업을 할 수 있도록 도와줍니다.

 

2. LLM과 SLM

 

2-1. LLM (Large Language Model)

LLM은 대형 언어 모델을 의미합니다. 이 모델은 매우 큰 데이터셋을 기반으로 학습되며, 수억에서 수조 개의 파라미터를 가지고 있습니다. 주로 딥러닝 기술을 활용하며, 자연어 처리(NLP) 작업에서 뛰어난 성능을 발휘합니다. LLM은 인간의 언어를 이해하고 생성하는 데 매우 뛰어난 능력을 보이며, 예를 들어 텍스트 생성, 번역, 질문 응답, 요약 등 다양한 작업을 처리할 수 있습니다.

  • 예) ChatGPT, Bloom, Gemini, LLaMa, Mistral 등

2-2. SLM (Small Language Model)

SLM은 소형 언어 모델을 의미하며, LLM과 비교하여 상대적으로 작은 크기의 모델입니다. SLM은 적은 수의 파라미터를 가지고 있으며, 특정 작업에 대해 최적화된 모델입니다. 이런 모델은 대형 모델보다 계산 자원이 적게 들고, 빠른 속도와 적은 메모리를 요구하지만, 성능은 LLM에 비해 다소 제한적일 수 있습니다.

  • 예) T5-Small, GPT-NeoX, ALBERT, MobileBERT 등

 

3. 파라미터

파라미터는 인공지능 모델이 학습하면서 조정하는 숫자들입니다. 쉽게 말해, 파라미터는 AI 모델의 "뇌의 연결 강도"와 같습니다. AI가 텍스트나 이미지를 이해하고 생성할 때, 파라미터는 어떤 단어나 개념이 서로 얼마나 관련이 있는지를 결정합니다. 예를 들어, "고양이"라는 단어가 나오면 "털", "동물", "야옹" 같은 단어들과 연결될 가능성을 파라미터들이 계산합니다. 이 숫자들은 학습 과정을 통해 조정되어 모델이 점점 더 똑똑해지게 만듭니다.

모델이 복잡할수록 더 많은 파라미터가 필요합니다. LLM 같은 대규모 모델은 수십억 개 이상의 파라미터를 가지고 있어 복잡한 질문에 대한 답변을 잘 할 수 있습니다. 반면, SLM은 더 적은 파라미터를 가지고 있어 간단한 작업에 적합합니다.

 

 

4. 텍스트 생성형 GPT

텍스트 생성형 GPT(Generative Pre-trained Transformer)는 대규모 데이터셋을 기반으로 훈련된 인공지능 모델로, 주어진 입력에 따라 자연스러운 텍스트를 생성할 수 있습니다. 이 모델은 사람의 언어를 이해하고 생성하는 능력을 바탕으로, 질문에 답하거나 글을 작성하고, 창의적인 작업을 수행하는 데 사용됩니다. GPT는 다양한 문맥을 처리할 수 있으며, 글의 흐름과 의미를 일관되게 유지하며, 다양한 주제에 대해 텍스트를 생성할 수 있는 능력을 지니고 있습니다.

 

4-1 텍스트 생성형 GPT API

GPT API 주소

https://platform.openai.com/docs/models

 

4-2. GPT-3.5 Turbo

최신 GPT-3.5-turbo는 한 번에 16,385개의 토큰을 기억하고 사용할 수 있으며, 최대 4,096개의 토큰을 생성할 수 있습니다. 이는 모델이 매우 긴 텍스트를 처리하거나 긴 답변을 생성할 수 있는 능력을 가지고 있다는 것을 의미합니다.

 

 

5.토큰

토큰은 모델이 처리하는 텍스트의 작은 단위입니다. 하나의 토큰은 단어, 부분적인 단어, 또는 심지어 공백이나 구두점일 수 있습니다. 예를 들어, "나는 학교에 간다"라는 문장은 5개의 토큰(나는, 학교, 에, 간다)으로 나눠질 수 있습니다. GPT 모델은 텍스트를 처리할 때 이 토큰들을 기반으로 학습하고, 예측을 생성합니다.

 

5-1. 토큰은 과금 단위로 사용

5-2 토큰화

토큰화(Tokenization)는 자연어 처리(NLP)에서 텍스트를 모델이 이해할 수 있는 작은 단위인 '토큰'으로 분리하는 과정입니다. 토큰은 대개 단어, 부분 단어, 구두점, 공백 등으로 구성될 수 있습니다. 이 과정은 언어 모델이 텍스트를 효과적으로 이해하고 처리할 수 있도록 돕습니다. 토큰화 방법은 문장을 어떻게 나누느냐에 따라 다르며, 각 방법은 모델이 텍스트를 어떻게 처리할지에 큰 영향을 미칩니다.

 

5-3. 토큰화 방법

  • 단어 단위 토큰화 (Word-level Tokenization): 문장을 단어 단위로 나눕니다. 예) "나는 학교에 간다" → ["나는", "학교에", "간다"]
  • 서브워드 단위 토큰화 (Subword-level Tokenization): 단어를 더 작은 단위로 나눕니다. 주로 길고 복잡한 단어를 나누는 데 사용됩니다. 예) "학교에" → ["학", "교", "에"]
  • 문자 단위 토큰화 (Character-level Tokenization): 문장을 하나하나의 문자로 나눕니다. 예) "학교" → ["학", "교"]
  • BPE (Byte Pair Encoding): 자주 등장하는 문자 쌍을 하나의 서브워드로 합치는 방법입니다. 예) "low"와 "est"라는 단어가 있을 때, "low"와 "est"를 합쳐서 "lowest"와 같은 서브워드를 만드는 방식입니다. 자주 나오는 문자 쌍을 합쳐서 더 효율적인 토큰을 만들 수 있습니다. 이 방식은 주로 GPT와 같은 모델에서 사용됩니다.

6. GPT API를 이용한 간단한 실습

 

6-1 .env

.env 파일은 환경 변수(Environment Variables) 를 저장하는 파일로, 주로 애플리케이션의 설정 정보나 비밀 키(secret key), 데이터베이스 비밀번호 등의 중요한 정보를 코드와 분리하여 관리하기 위해 사용됩니다. 이렇게 중요한 정보를 코드 안에 하드코딩하는 대신 .env 파일에 저장하고, 이를 코드에서 읽어오는 방식으로 보안과 유연성을 높일 수 있습니다.

 

필요한 라이브러리 설치

!pip install python-dotenv
!pip install --upgrade openai

 

 

  • python-dotenv:
    • 환경 변수 파일(.env)에서 API 키와 같은 민감한 정보를 로드하는 데 사용됩니다.
    • API 키를 코드에 직접 작성하지 않도록 도와주는 보안 도구입니다.
  • openai:
    • OpenAI API와 통신하기 위한 Python SDK.

2. 환경 변수 관리

.env 파일 생성

.env 파일은 API 키와 같은 민감한 정보를 저장합니다.

 

# .env 파일 내용
API_KEY=your_openai_api_key_here

 

 

  • API_KEY: OpenAI API에서 제공하는 비밀 키를 입력합니다.
  • .env 파일은 Git 저장소에 추가하지 않도록 .gitignore에 포함해야 합니다.

환경 변수 로드

from dotenv import load_dotenv
import os

# .env 파일 로드
load_dotenv()

# 환경 변수에서 API 키 가져오기
api_key = os.getenv('API_KEY')

 

  • load_dotenv()는 .env 파일에서 환경 변수를 로드합니다.
  • os.getenv('API_KEY')를 사용해 환경 변수에서 API 키를 가져옵니다.

OpenAI 클라이언트 초기화

from openai import OpenAI

client = OpenAI(
    api_key=os.getenv('API_KEY')  # 환경 변수에서 가져온 API 키 사용
)

OpenAI 클라이언트:

  • OpenAI API와 통신하기 위한 객체를 초기화합니다.
  • API 키는 환경 변수(os.getenv('API_KEY'))에서 가져와 보안성을 유지합니다.

 

ChatGPT API 호출

response = client.chat.completions.create(
    model="gpt-3.5-turbo-0125",  # 사용할 GPT 모델
    messages=[
        {"role": "user", "content": "안녕하세요? 오늘 어때요?"}
    ]
)

 

client.chat.completions.create:

  • ChatGPT API를 호출하여 대화를 생성합니다.

 

  • model:
    • 사용할 GPT 모델. 여기서는 gpt-3.5-turbo-0125를 사용.
    • 최신 모델일수록 더 나은 성능을 제공합니다.
  • messages:
    • 대화의 맥락을 제공하기 위한 메시지 배열.
    • 각 메시지는 role과 content로 구성:
      • role:
        • user: 사용자가 보낸 메시지.
        • assistant: AI의 응답.
        • system: AI의 동작 방식(지침)을 설정.
      • content: 실제 메시지 내용.

응답 처리

response

 

응답 전체 출력:

  • API가 반환한 전체 응답을 확인.
  • 결과는 JSON 형식으로 반환되며, 주요 키는 다음과 같습니다:
    • choices: 모델의 응답.
    • usage: 토큰 사용량.
response.choices[0].message.content

응답 내용 추출:

  • response.choices[0].message.content는 AI의 응답 메시지를 추출.
  • 예: "안녕하세요! 오늘도 좋은 하루 되세요!"

전체 코드

# 필요한 라이브러리 설치
!pip install python-dotenv
!pip install --upgrade openai

# 라이브러리 임포트
import os
from openai import OpenAI
from dotenv import load_dotenv

# 환경 변수 로드
load_dotenv()

# OpenAI 클라이언트 초기화
client = OpenAI(
    api_key=os.getenv('API_KEY')
)

# ChatGPT API 호출
response = client.chat.completions.create(
    model="gpt-3.5-turbo-0125",
    messages=[{"role": "user", "content": "안녕하세요? 오늘 어때요?"}]
)

# 응답 출력
print(response.choices[0].message.content)

 

출력 결과

 

 

'인공지능 > LLM 서비스' 카테고리의 다른 글

Gradio  (0) 2025.01.12
프롬프트 엔지니어링  (0) 2025.01.12
예스 24, 교보문고 크롤링(mongoDB,Excel 저장)  (0) 2025.01.12
셀레니움 - 요기요 리뷰 크롤링  (0) 2025.01.12
크롤링  (0) 2025.01.12