오늘은 챗 지피티의 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로 구성됩니다.
예제 해석
- 첫 번째 문장: "I've been waiting for a HuggingFace course my whole life."
- label: "POSITIVE"
- score: 0.9598
- 이 문장은 긍정적인 감정을 나타내며, 모델이 이 문장이 긍정적이라고 판단한 신뢰도는 약 95.98%입니다.
- 두 번째 문장: "I hate this so much!"
- label: "NEGATIVE"
- score: 0.9994
- 이 문장은 부정적인 감정을 나타내며, 모델이 이 문장이 부정적이라고 판단한 신뢰도는 약 99.94%입니다.
- 세 번째 문장: "I have a dream."
- label: "POSITIVE"
- score: 0.9997
- 이 문장은 긍정적인 감정을 나타내며, 모델이 긍정적이라고 판단한 신뢰도는 약 99.97%입니다.
- 네 번째 문장: "She was so happy."
- label: "POSITIVE"
- score: 0.9998
- 이 문장은 긍정적인 감정을 나타내며, 모델이 긍정적이라고 판단한 신뢰도는 약 99.98%입니다.
요약
모델은 각 문장이 긍정적인지 부정적인지를 판단하고, 그 신뢰도를 score로 제공합니다. 점수가 1에 가까울수록 모델이 해당 감정을 더 확신하고 있다고 볼 수 있습니다.