[JS] koGPT API 사용해본 후기

TaeSun·2023년 2월 17일
0

koGPT API 는 무엇인가

koGPT : 카카오브레인 KoGPT API는 제시된 한국어를 사전적, 문맥적으로 이해하고 사용자의 의도에 맞춘 문장을 생성해 제공합니다. GPT-3 기반 언어 모델인 KoGPT를 활용하여, 주어진 문장의 긍정과 부정 판단, 내용 요약 또는 결론 예측, 질문에 대한 답변, 다음 문장 작성 등 한국어와 관련된 모든 과제를 수행할 수 있습니다.

출처 : https://developers.kakao.com/product/kogpt

koGPT 환경

웹 환경에서 테스트를 해보며 간단하게 GUI를 구성해서 실제로 어떻게 활용해 볼 수 있을지 상상하며 node js 로컬 서버환경을 통해서 REST API 통신을 진행했다.

koGPT GUI

koGPT Code

[Client]

submitBtn.addEventListener("click", (e) => { 
	let message = firstQuestion.value + " " + secondQuestion.value + " " + thirdQuestion.value;
 	const data = {
        key : message,
    }
	console.log(data);
    fetch("/result", {
        method: "POST",
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify(data),
    }).then((response) => response.json())
    .then((data) => {
      console.log('Success:', data);
    }).catch((error) => {
        console.error('Error:', error);
    }); 
});

[Server]

app.post('/result', (req, res) => {
    let prompt = req.body['key'];
    console.log("server received message : " + `${prompt}`);
    let options = {
        host: "api.kakaobrain.com",
        uri: urlString,
        method: 'POST',
        body: {
            prompt: prompt,
            max_tokens: max_tokens,
            temperature: temperature,
            top_p: top_p,
            n: n
        },
        json: true,
        headers: {
            'Authorization': 'KakaoAK ' + REST_API_KEY,
            'Content-Type': 'application/json',
        }
    };
    request.post(options, (error, response, body)=>{
        console.log(body);
        console.log(body.generations.text);
        console.log(body.generations[0].text);
        if (body != null) {
            return res.json(body);
        }
    }); 
});

[Client process]

클라이언트 버튼 클릭시 사용자 입력정보를 하나의 데이터셋으로 만들어
서버로 POST 요청하게 되고, JSON 객체로 변환하여 nodejs 서버로
호출하는 코드다. 

[Server process]

서버에서 클라이언트의 POST 요청의 대한 응답을 처리하기 위해 request body의
key 값을 가지고 value 값을 변수의 prompt 변수에 할당해주고 있다. 해당 변수에
저장된 값은 사용자의 입력 값이며 options를 통해서 koGPT 의 필요한 필수 파라미터들을
가지고 있는 데이터를 만든다. 해당 메서드 또한 koGPT의 POST로 요청해야 되기 때문에
cors 정책을 위반하지 않게끔 host 값의 koGPT에서 명시해둔 origin으로 설정해둔 뒤
미리 발급받아둔 REST API KEY를 이용하여 생성 모델을 기대하고 있다.
생성모델이 성공적으로 response 된다면 nodejs 서버 -> 클라이언트 전송하는 것 까지 
서버의 맡게되는 역할 이다.

koGPT 결과

document 에서 안내해주듯 뉴스 간추리는걸 시도해보았다. 뉴스 관련된 기사를 작성하고 마지막의 "한줄요약: " 형식을 통해서 얻어낸 결과이다.

[질문]

" 예상 강수량은 호남권과 경남권, 제주도가 5에서 300mm, 중부지방과 경북권이 5mm 미만이다. 강원도의 북부 내륙과 산지에는 1에서 3cm눈이 내릴 것으로 예상된다. 한줄요약: "

[답변]


생각보다 답변의 결과가 단순하다 고정 토큰값들로 설정을 해두었지만, 확실한건
" 눈과 비가 많이 올 수 있으니 우산을 챙기라는 말 "은 문맥을 정확히 이해하고 있는 것으로 보인다.

[질문]

" 대한항공 현재 국내선 1개와 여러 국제선을 운항하고 있다 이 국제선 지역별로 마일리지를 공제했지만, 앞으로는 운항 거리에 비례해서 국내선 1개와 국제선 10개로 기준을 세분화한다. 한줄 요약: "

[답변]


생각보다...대단하다.. 기존의 있었던 방식 + 바뀐 방식을 알려주고 있으며 내가 알고자 하는 탑승거리가 아닌 비행 시간과 횟수에 따라 마일리지를 적용한다. 라는게 정확하게 분류했다.
물론 중간중간 generation의 결과중 첫번째 결과에서 국내선과 국제선의 구분이 없어짐 등과 같이 내가 질문한 내용에서 유추해볼 수 있는 내용은 아닐것 같다는 생각은 들었다. 왜냐하면 국내선 1개와 여러 국제선을 운항하고 있으며 지역별로 마일리지를 공제하고 있고, 운행 거리의 비례해서 세분화 한다고만 했지 국내선과 국제선의 구분이 없어진다고 한다면 약간의 오해의 소지는 있을법 한다. 그래도 만족스러운 결과값으로 나와 향후 gpt 의 성능이 어디까지 갈지 그리고 실생활에 어떤 면에 녹아들지 기대되는 분야이다.

source code

https://github.com/ITSTIME1/web/tree/master/koGPT

profile
Good things take times

0개의 댓글