생성 AI TIP

GPT API로 서비스 만든 후기 1편

Neehoot 2023. 4. 14.

오늘은 직접 GPT API로 서비스 만든 후기에 대해 말씀드리겠습니다.

계속 글을 작성하면서 ChatGPT의 성능이나 AI의 기술발전에 편승해야겠다는 생각이 들어서 ChatGPT를 활용한 서비스를 만들어보려고 사이드 프로젝트를 진행하게 되었습니다.

개발 인원은 본인 포함 2명으로 둘 다 대기업 소속 개발자로 일하고 있고 포지션은 각각 F/E, B/E를 맡아서 진행했습니다. 그렇다면 서론은 이 정도하고 어떤 방식으로 진행되었는지 한번 볼까요?

 

서비스 목표 및 타겟 설정

가장 먼저 해야할 일은 서비스 기획입니다. 따라서 서비스 목표와 타깃을 설정하는 것이 가장 우선 해야 할 일이었습니다. 

GPT는 텍스트를 생성하는데 강점이 있기 때문에 어떤 타겟 사용자의 글을 작성해 주는 서비스를 만들어야 할지 고민했습니다. 글을 작성하는데 어려운 사람들, 그리고 이를 GPT를 통해 보조하는 형태로 서비스를 제공하는 것을 목표로 하였습니다.

 

API 선택 

목표와 타겟이 정해졌다면 어떤 API를 활용할지에 대해 선택해야 합니다.

API 선택에는 다음과 같은 요인을 고려해야 합니다.

  1. 요금
  2. Token 수
  3. API 활용 방식

1. 요금

가장 기본적으로 확인해야 할 부분은 요금입니다. GPT API의 경우 사용량에 따라서 요금이 부과되므로 이를 확인하시고 서비스를 기획해야 합니다. 비용에 따른 수익 부분을 어떻게 구성할 것인지, 그리고 타깃이 GPT API를 활용하는 빈도가 어느 정도 될지를 예측하고 요금제를 선택해야 합니다. 

저희는 프로덕트 사용 구조상 Chat API만을 활용하여 작성하더라도 큰 문제가 없을 것으로 보았기 때문에 Chat API인 "GPT3.5 Turbo" 모델을 사용하여 개발을 진행하였습니다. GPT3.5 Turbo Model의 경우 1000 토큰당 0.002$로 한번 호출시 최대 4000 토큰이므로 1회 호출에 들어가는 비용은 최대 0.008$로 잡고 진행하였습니다.
(들어가는 비용을 회수하는 방법은 다양한 BM이 있습니다. 경영학 관련 서적을 읽어보시는 것을 추천드립니다.)

 

Pricing

Simple and flexible. Only pay for what you use.

openai.com

2. Token 수

Token수의 경우 프롬프트를 포함하여 작성된 총 Token에 제한이 있습니다. 따라서 답변의 길이에 따라서 이에 맞는 모델을 활용해야 합니다. 토큰의 선택에 대한 부분은 아래 표를 확인해 주세요.

 

Model Description Max Tokens Training Data
gpt-3.5-turbo Most capable GPT-3.5 model and optimized for chat at 1/10th the cost of text-davinci-003. Will be updated with our latest model iteration. 4,096 tokens Up to Sep 2021
gpt-3.5-turbo-0301 Snapshot of gpt-3.5-turbo from March 1st 2023. Unlike gpt-3.5-turbo, this model will not receive updates, and will only be supported for a three month period ending on June 1st 2023. 4,096 tokens Up to Sep 2021
text-davinci-003 Can do any language task with better quality, longer output, and consistent instruction-following than the curie, babbage, or ada models. Also supports inserting completions within text. 4,097 tokens Up to Jun 2021
text-davinci-002 Similar capabilities to text-davinci-003 but trained with supervised fine-tuning instead of reinforcement learning 4,097 tokens Up to Jun 2021
code-davinci-002 Optimized for code-completion tasks 8,001 tokens Up to Jun 2021

3. API 활용 방식

만약 모델에 특정 데이터를 학습하여 원하는 정보를 정확하게 뽑아내기 위해서는 GPT3.5 Turbo 를 사용하면 안 됩니다.

FAQ란에 들어가 보면 명시가 되어있는데요. 아래 내용 확인하시면 GPT3.5 Turbo(Chat API)를 사용하는 것은 정확한 정보를 얻을 수 없습니다. 따라서 Fine Tuning(학습)을 시키기 위해서는 다른 API를 활용하여 학습을 시켜야 합니다.

학습시키는데 들어가는 비용은 아래 표를 참고해 주세요.

Model Training Usage
Ada $0.0004 / 1K tokens $0.0016 / 1K tokens
Babbage $0.0006 / 1K tokens $0.0024 / 1K tokens
Curie $0.0030 / 1K tokens $0.0120 / 1K tokens
Davinci $0.0300 / 1K tokens $0.1200 / 1K tokens

계정 연결

 

개발

저희는 Javascript 기반의 Next.js, Node.js Express를 활용하여 시스템을 구성했습니다. 따라서 Javascript 가이드 문서를 확인하면 되는데요. 아래 내용을 따라서 작성하시면 간단하게 사용할 수 있습니다.

const GPT35TurboMessage = [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ];
    
const response = await openai.createChatCompletion({
        model: 'gpt-3.5-turbo',
        messages: GPT35TurboMessage,
        max_tokens: 3250,
        temperature: 0.3,
        top_p: 1,
      });

여기에 주목해야 할 부분은 message입니다. 이것이 프롬프트를 작성하는 부분인데요.

이 부분 관련해서는 2편에서 자세하게 설명드리겠습니다. 이번 편에서는 단순하게 사용 방법에 대해 이야기해 보겠습니다.

위 코드에 삽입하여 작성하면 됩니다. 이때 프롬프트와 답변을 합쳐서 Max_token을 넘으면 안 됩니다. response에 작성한 max_tokens의 경우 답변만을 의미하므로 프롬프트 token 수 + 답변의 token 수가 모델의 max tokens를 초과하는지 확인하여 작성하시면 됩니다.

// Response 객체
{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "\n\nHello there, how may I assist you today?",
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}

 

마치며

오늘은 GPT open AI 재단의 API를 활용하여 서비스를 만드는 방법에 대해 이야기해 보았습니다. 1편은 개발 세팅에 관련한 부분으로 많은 개발자 분들이 Documentation을 보고 사용해 보셨으리라 생각됩니다. 다음시간에는 프롬프트 작성 및 상세한 내용에 대해 가져오겠습니다.

긴 글 읽어주셔서 감사합니다.

 

오늘 하루도 성장하겠습니다.

댓글

💲 추천 글