본문 바로가기
Project

Chat GPT API 사용법

by re-hwi 2023. 3. 27.

며칠 전 유튜버 조코딩 님이 chat gpt를 이용한 챗도지 만들기를 실시간 강의로 하신 적이 있었다. 나도 GPT API를 사용해보고 싶었는데 어떻게 해야 할지 감을 못 잡고 있던 차에 좋은 강의가 있어 바로 들어가서 따라해 봤다.
 
강의는 정말 초보자도 따라만 하면 될 정도로 쉬웠고 잘 가르쳐 주셔서 쉽게 이해할 수 있었다. 이 글을 읽어도 이해가 가질 않는다면 조코딩님의 강의를 듣는것을 적극 추천한다.
 
아 시작하기에 앞서 api에 대한기초내용은 이전 글에 포스팅해놓았으니 참고하면 좋을 것 같다. 그리고 백엔드는 node.js 프론트는 html, css, js만 사용했다.


API KEY 발급

가장 중요한 KEY는 GPT 홈페이지에서 발급 받을 수 있으며 삭제도 가능하다. 하지만 처음 발급 때 보여주는 KEY번호는 창을 닫으면 볼 수 없으니 메모장에 적어놓는 것을 추천한다.

GPT API KEY 발급

또 GPT를 목적에 맞게 사용하기 위해서는 조금의 기능 수정이 필요하다. 아래는 그 기능 수정을 위한 사진과 설명이다.

SYSTEM
: 쉽게 말해서 GPT의 역할을 정해주는 것이다. 이 때 역할을 최대한 자세하게 적는 것이 좋다.
 
예를 들어 옷을 추천하는 프로그램을 구현하고 싶다면 '모든 질문에 명확한 대답을 하며 아름다운 색 조합에 대해 자세하게 알고있는 패션 컨설턴트' 와 같이 GPT가 질문을 회피할 수 없고 옷의 색감또한 알려 줄 수 있는 패션 컨설턴트로 만드는 것이다.
 
쉽게 말해서 GPT를 가스라이팅 하는 창 이라고 생각하면 좋다.
 
USER
: 유저가 할 말을 적는 곳이다. 이게 필요한 이유는 Few-Shot Learning 을 할 수 있기 때문이다. Few-Shot Learning 이란 예를 들어서 유저가 강아지 라고 질문을 했을 때 기본 GPT는 강아지의 대한 설명을 할 것이다.

하지만 USER : 강아지 ,assistant : 멍멍 이렇게 gpt를 학습시키면 나중에 유저가 '고양이' 라는 단어를 보내면 gpt는 '야옹' 이라는 대답을 할 수 있도록 교육 시키는 방법이라고 보면 된다.
 
ASSISTANT
: GPT의 답변이다. 위에서 설명 한 내용과 같다.
 
TEMPERATURE
: 1로 갈수록 GPT는 같은 질문에 거의 같은 대답을 한다. GPT의 대답의 랜덤 값을 조절하는 옵션이다.
이 옵션을 0으로 한다면 너무 질문과는 상관없는 대답을 할 수 있으므로 사용 목적에 따라 적당히 조절해야한다.
 
MAXIMUM LENGTH
: GPT의 답변의 최대 길이이다. 이게 길면 자세한 대답을 할 수 있고 짧으면 대답이 중간에 끊길 수 있다. 하지만 무조건 길게 하면 돈이 조금 들 수 있으니 본인 선택에 따라 조절하면 된다.
 
요금은 1000 토큰당 0.002$ 인데 1000 토큰이 어느정도인지는 여기에서 확인 할 수 있다. 대충 알파벳 4글자에 1토큰 이라고 생각하면 된다. 
 
TOP P
: 이것도 TEMPERATURE 하고 비슷한 개념인데 질문에 대한 대답으로 몇 퍼센트 이상의 확률을 가진 답변을 할지 정하는 것이다.
 
예를 들자면 내가 좋아하는 동물은? 이라는 질문을 받았을 때 강아지 0.5 고양이 0.3 거북이 0.1 핸드폰 0.0001 이라는 확률을 가진다고 가정해보자
 
TOP P를 0.5라고 하면 '강아지'만 나올 수 있고 0.8이라고 하면 '강아지'와 '고양이' 만 나올 수 있다. 이렇게 가장 높은 확률부터 아래로 더한 후에 TOP P에 설정된 값과 같다면 그 안에 있는 데이터만 나올 수 있다는 뜻이다.
 
FREQUECY PENALTY 
: 빈도수 패널티이다. GPT가 가끔 똑같은 대답을 할 때가 있는데 이러한 현상을 줄이기 위한 옵션이다.


OPEN AI 라이브러리 사용법
1. npm 사이트에 들어가 open ai 검색 후 open ai 다운
 

2. API 키 부분에 발급받은 API 넣은 후 실행
 
3. prompt 인 hello world 뒤에 들어갈 아무 단어가 출력되면 성공!
 
아 주의해야할점은 completion 함수에 await이 있기 때문에 async 함수로 한 번 감싸줘야 한다.
예시)

async function apiCall(){
  const { Configuration, OpenAIApi } = require("openai");

  const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
  });
  const openai = new OpenAIApi(configuration);

  const completion = await openai.createCompletion({
    model: "text-davinci-003",
    prompt: "Hello world",
  });
}
console.log(completion.data.choices[0].text);
반응형

댓글