Vi.NO 서비스의 핵심 ! GPT 이렇게 활용했어요.

Team Vi.NO·2024년 2월 28일

Vi.NO 제작기

목록 보기
6/8

개요


Vi.NO는 Youtube 영상을 글로 보기 쉽게 AI를 이용해 요약해주는 서비스입니다. 본 포스트에서는 AI API 중 GPT API를 선정한 이유와 Vi.No서비스에서 어떤식으로 사용했는지 알려드리겠습니다!

GPT API?


먼저 GPT는 Open Ai에서 2018년 선보인 대형 언어 모델(LLM)이며, GPT 모델들은 레이블링 되지 않는 대량의 텍스트 셋으로 미리 훈련되고, 인간과 같은 문자를 생성할 수 있는 변환기 아키텍처에 기반한 인공 신경망입니다. 쉽게 말해 데이터베이스에 저장된 내용을 기반으로 학습하여, 사람과 대화가 가능한 ai들을 LLM이라 하며, 가장 유명한 모델이 GPT이기 때문에 LLM을 GPT라고 부르기도 합니다. (셀로판 테이프를 스카치테이프로 부르는 것처럼)
Open ai에서는 순차적으로 번호가 매겨진 GPT기반 모델을 생성했으며, 현재 기준으로 가장 최신 모델은 2023년 3월 출시된 GPT-4입니다.

GPT API 종류


2024년 3월 기준 GPT API 종류는 다음과 같습니다.

GPT-4 TURBO, GPT-4, GPT -3.5 TURBO


모델명토큰데이터 학습입력(1K)출력(1K)
GPT-4-Turbo(gpt-4-1106-preview)128,00023년 4월$0.01$0.03
GPT-4-Turbo(gpt-4-1106-vision-preview)128,00023년 4월$0.01$0.03
GPT-4(gpt-4)8,19221년 9월$0.03$0.06
GPT-4(gpt-4-32k)32,76821년 9월$0.06$0.12
GPT-3.5 Turbo(gpt-3.5-turbo-1106)16,38521년 9월$0.001$0.0020
GPT-3.5 Turbo(gpt-3.5-turbo-instruct)4,09621년 9월$0.0015$0.0020

가장 최근 모델은 GPT-4 Turbo 모델이며, 명령 수행 능력, JSON 모드, 일관된 답변 제공 능력, 병렬 함수 호출 등이 개선된 최신 GPT-4 모델입니다.
또 gpt-4-1106-vision-preview 모델은 이미지를 이해 하는 기능까지 있으며, 이때 비용은 이미지의 크기와 해상도에 따라 달라집니다. 때문에 OpenAi 홈페이지에서 예상 비용을 계산 할 수 있는 Vision Pricing calculatior가 제공됩니다.

GPT, VI.NO에서는 어떻게 사용했나요?


VI.NO에서는 gpt-3.5-turbo-16k 모델을 사용했습니다! 물론 성능은 GPT-4 Turbo 모델들이 더 좋고 토큰 수도 많긴 하지만, 거의 10배나 되는 가격차이로 인해, 눈물을 머금고 gpt-3.5-turbo-16k 모델을 선정했습니다.

VI.NO 서비스에서 GPT를 사용하는 부분은 다음과 같습니다.

  • 유튜브 영상 내용를 기반으로 한 제목 생성
  • 스크립트 원문에 대한 소주제들,
  • 그 소주제에 맞게 스크립트를 나누기
  • 해당 유튜브 영상의 한줄 요약 5개
  • 해당 유튜브 영상의 태그 생성

이 5개의 요소들을 GPT API를 통해 생성하고 사용자에게 전달합니다.

문제점


API 모델링을 하면서, 하나의 난관에 봉착했습니다. 프롬프트 기반의 AI API라 발생한 문제였는데요. 바로

프롬프트 기반의 API는 매번 다른 형태의 값을 줄 수도 있다!

는 것이었습니다. 그렇기에 초반 모델링 개발에는 프롬프트를 수정해가며 원하는 형태의 값을 줄 수 있는, 프롬프트를 찾아내는 것이 핵심 과제였습니다. GPT한테서 매번 이상한 값을 받게 되면, 사용자나 그 데이터를 처리하는 입장에서도 골치가 아프기 때문이죠.

해결책


그러기 위해서는 어떻게 하면 GPT에게서 원하는 대답을 끌어 낼 수 있는지 방법을 찾아야했습니다. 이때 구글링을 하던 도중 스탠퍼드대 겸임교수이신 엔드류 응 교수님이 말씀하신 "AI에게 질문을 잘하는 방법" 이라는 글을 보게 되었습니다.

이 글을 보고, 프롬프트를 기존 명령문이 아닌 구체적인 JSON 예시와 함께, 달라고 지시했으며, 표현되는 개수 또한 명확하게 표현함으로써 좀 더 나은 결과를 얻을 수 있었습니다.

[참고] 프롬프트를 작성하는 좋은 방법


내용 가이드라인은 다음과 같습니다

1. 명확하고 구체적인 지시를 작성하라


글에 따르면 작업 관련 내용을 모르는 신입사원에게 지시하듯 명확하고 구체적으로 필요한 결과를 이야기 하라고 나와 있습니다. 예를 들면

"VI.NO에 대해 무언가 알려주세요"

보다는

"VI.NO 서비스에 대해 그 역사와 기능에 대해 알려주세요"

가 더 좋은 결과를 받을 수 있다고 합니다.

2. 구분 기호를 사용하여 입력 내용을 명확하게 표시 해야한다


띄어쓰기, 쉼표, 마침표 등으로 입력내용을 명확하게 표시할 수 있어야 합니다.

3. 구조화된 출력 방식을 요청 해야한다


값이 어떤 형식(표, JSON등) 으로 표현되길 원하는 지 구체적으로 알려줄 수 있어야 합니다.

4. 원하는 작업의 성공적인 실행 예시를 제공해라


원하는 답변에 대한 예시가 있다면 그 내용을 알려주고 일관된 스타일의 응답을 요청할 수 있습니다.

5. AI가 생각할 시간을 줘야한다.


AI 모델에게 짧은 시간이나 적은 단어로 복잡한 작업을 주게 된다면, 잘못된 추측을 할 가능성이 높다고 합니다. 그렇기에 세부적으로 1단계.. 2단계.. 등으로 단계를 나눠서 요청해야합니다.

GPT Fine tunning


프롬프트 수정을 통해 나은 결과를 얻었다 해도, 10번중에 8번정도 원하는 결과를 얻는 상황이라 정확도를 위해 다른 방법을 찾아보던 중 GPT 모델 중 사용자의 서비스에 최적화된 맞춤형 모델을 만들 수 있는 Fine tunning을 발견했습니다.

Fine-tunning은 기존 프롬프트 기반의 GPT API와 다르게 우리가 새로운 데이터 셋을 넣음으로써, 데이터 기반으로 학습하여 데이터를 주기 때문에, 우리가 원하는 결과를 손쉽게 얻을 수 있을거라 판단했습니다. 종류와 가격은 다음과 같습니다.

모델명학습(1k)입력(1K)출력(1K)
GPT-3.5-turbo$0.008$0.003$0.006
Davinci-002$0.0060$0.003$0.0120
Babbage-002$0.0004$0.0016$0.0016

사용법은 Open Ai 홈페이지 또는 터미널을 이용해 모델에 데이터셋을 학습시키고, 그 학습시킨 모델의 이름을 가져와 사용하는 방식입니다. 학습시킬 데이터셋은

   {"prompt":"","completion":""}

이런 jsonl 구문를 최소 10개부터 학습시키면 됩니다. 그렇기에

이런 식으로 Jsonl 형식의 파일을 주어 학습시켰습니다.

결과


결과적으로는 학습시킨 데이터셋이 불안정하기때문에, 아직까진 Fine Tunning 보다는 일반 gpt api를 활용하여 원하는 값을 받아오는게 더 정확도가 높았습니다.

그렇지만, 학습시키는 데이터가 많아질 수록 정확도가 높아지기 때문에, 계속해서 데이터셋을 추가하고 훈련 중에 있습니다.

결론


이번 게시물에서는 저희 Vi.NO 서비스의 핵심 기능 gpt api에 대해 소개했습니다.

어렸을 땐 어렵고 영화, 소설 속 이야기 같았던 AI가 지금은 손쉽게 우리 곁으로 다가오고 활용할 수 있다는 점이 너무 좋은 것 같습니다. 앞으로도 계속 발전할 Vi.NO! 기대해주시면 감사드리겠습니다.

profile
Vi.NO를 만드는 사람들

0개의 댓글