카테고리 없음

api 를 이용해 언어모델 활용하기

yumin630 2024. 11. 6. 01:19

 

오늘은 챗 지피티의 api를 활용해서 언어 모델을 사용해보겟다

 

일단 챗 지피티의 api key가 필요하다.

 

냅다 코드보기

 

import pandas as pd
import numpy as np
import os
import openai
from openai import OpenAI

api_key = ' 발급받은 api key '
os.environ['OPENAI_API_KEY'] = api_key
openai.api_key = os.getenv('OPENAI_API_KEY')

#채팅을 위한 함수 생성
def ask_chatgpt1(question):

    # api key 지정
    client = OpenAI()

    # # API를 사용하여 'gpt-3.5-turbo' 모델로부터 응답을 생성합니다.
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},  # 기본 역할 부여
            {"role": "user", "content": question},                          # 질문
        ]
    )

    return response.choices[0].message.content

 

 

하하

 

이제 사용해보는 코드

question = "세계에서 가장 높은 산은 무엇인가요?"
response = ask_chatgpt1(question)
print(response)

 

이렇게 물어보면 답변이 나온다~

 

 

Transformer

NLP란?

▪ NLP는 인간 언어와 관련된 모든 것을 이해하는 데 초점을 맞춘 언어학 및 기계 학습 분야

▪ NLP 작업의 목표는 단일 단어를 개별적으로 이해하는 것뿐만 아니라 해당 단어의 맥락을 이해하는 것

 

일반적인 NLP 작업

▪ 문장 분류 : 리뷰의 감정 파악, 이메일 스팸 여부 감지 등

▪ 개체 명(사람, 위치, 조직 등) 인식

▪ 문장 생성

▪ 질문에 대한 답변

▪ 텍스트 번역, 요약

 

✓기존의 NLP : RNN 기반

▪ 오랫동안 언어모델을 위한 주요한 접근 방식

▪ 단점 : 병렬 처리 어려움, 장기 의존성 문제, 확장성 제한

 

✓Transformer 등장 (Google, 2017, Attention Is All You Need, https://arxiv.org/abs/1706.03762 )

▪ RNN 모델의 단점을 극복

▪ 언어 모델의 Game Changer

▪ Transformer 덕분에 LLM이 발전하게 됨.

 

Transformer의 특징

  • 이전 문장들을 잘 기억
  • 문맥상 집중해야 할 단어를 잘 캐치

 

파이프라인 함수를 이용해서 Transformer 사용하기

 

!pip install transformers==4.37.1

from transformers import pipeline

classifier = pipeline(task = "sentiment-analysis", model = 'bert-base-multilingual-cased')

classifier = pipeline("sentiment-analysis")

간단한 코드이다.

 

#모델을 사용해보자
text = ["I've been waiting for a HuggingFace course my whole life.",
        "I hate this so much!",
        "I have a dream.",
        "She was so happy."]

classifier(text)

이렇게 모델을 사용해 볼수 있다.

 

그러면 

[{'label': 'POSITIVE', 'score': 0.9598048329353333},
 {'label': 'NEGATIVE', 'score': 0.9994558691978455},
 {'label': 'POSITIVE', 'score': 0.9997022747993469},
 {'label': 'POSITIVE', 'score': 0.9998832941055298}]

이렇게 출력되는데,

해석방법은

 

classifier(text)를 실행했을 때 반환된 결과는 각 문장에 대한 감정 분석 결과입니다. 결과는 각 문장이 "POSITIVE" 또는 "NEGATIVE"인지에 대한 레이블과 해당 감정에 대한 신뢰도를 나타내는 score로 구성됩니다.

예제 해석

  1. 첫 번째 문장: "I've been waiting for a HuggingFace course my whole life."
    • label: "POSITIVE"
    • score: 0.9598
    • 이 문장은 긍정적인 감정을 나타내며, 모델이 이 문장이 긍정적이라고 판단한 신뢰도는 약 95.98%입니다.
  2. 두 번째 문장: "I hate this so much!"
    • label: "NEGATIVE"
    • score: 0.9994
    • 이 문장은 부정적인 감정을 나타내며, 모델이 이 문장이 부정적이라고 판단한 신뢰도는 약 99.94%입니다.
  3. 세 번째 문장: "I have a dream."
    • label: "POSITIVE"
    • score: 0.9997
    • 이 문장은 긍정적인 감정을 나타내며, 모델이 긍정적이라고 판단한 신뢰도는 약 99.97%입니다.
  4. 네 번째 문장: "She was so happy."
    • label: "POSITIVE"
    • score: 0.9998
    • 이 문장은 긍정적인 감정을 나타내며, 모델이 긍정적이라고 판단한 신뢰도는 약 99.98%입니다.

요약

모델은 각 문장이 긍정적인지 부정적인지를 판단하고, 그 신뢰도를 score로 제공합니다. 점수가 1에 가까울수록 모델이 해당 감정을 더 확신하고 있다고 볼 수 있습니다.

 
그렇다. 지피티가 알려주엇다.
지피티로 시작해서 지피티로 끝나는 복습이었다