11.7일 오전 메일함에 OpenAI로 부터 아래 제목으로 메일이 왔다.

"New platform updates from DevDay: GPT-4 Turbo, Assistants API, new modalities + GPTs in ChatGPT"

오늘 DevDay가 있었고, ChatGPT 업데이트가 있었다.

▶ GPT4

  • API로 GPT4가 사용이 가능해졌고, 128K Context size 채팅(API아님)이 가능해졌다는 점
  • 이제 API쓸때 GPT4 모델을 쓰면 32K context size까지 쓸 수 있다.
  • 최신 데이터. 23년 4월까지 데이터가 들어 갔다고 한다.

▶GPT3

  • 가격 인하? 디폴트로 16K 사이즈로 변경될 예정. (12월 11일부터 1106 모델이 디폴트로 적용되는 듯)
  • 가격은 인풋에 대해서 기존 0.0015달러에서 0.0010 달러로 내렸다. (기존은 4K 이고, 이제 디폴트가 16K라 더 내린거라 봐도 될려나 싶다. 기존 16K 모델은 0.003달러였으므로 1/3로 내린거긴 하다)
  • 16K 모델 파인튜닝 가능

32K 사이즈 모델을 쓰려면 가격이 60배 비싸다. 지금 상담용 챗봇은 4K 사이즈로 개발을 하고 있는데, 1번의 상담을 하고 나면 대~략 20원 정도였다, 32K 모델로 쓴다고 가정하면, 단순 계산으로 1200원이 된다. 사이즈가 늘었으니 대화도 더 길게 끌고 간다고 하면 비용이 엄청 커지겠다.

Pricing (openai.com)

 

Pricing

Simple and flexible. Only pay for what you use.

openai.com

 

  • Reproducible Output
    • 기존에는 같은 요청을 해도 랜덤처럼, 응답이 조금씩 바뀌었는데, 시드값을 주면, 동일한 결과값을 받아볼 수 있게 한다고 한다.

Text generation - OpenAI API

 

 

 

다음은 메일 번역본이다.

첫 번째 컨퍼런스인 OpenAI DevDay에서 발표된 주요 새로운 기능과 업데이트를 공유하게 되어 기쁩니다. 블로그에서 자세한 내용을 읽거나, 기조 연설 녹화본을 보거나, 새로운 @OpenAIDevs Twitter를 확인할 수 있지만 여기에 간략한 요약이 있습니다.
새로운 GPT-4 터보:
가장 진보된 모델인 GPT-4 Turbo를 발표했습니다. 128K 컨텍스트 창과 2023년 <>월까지의 세계 이벤트에 대한 지식을 제공합니다.
GPT-4 Turbo의 가격을 상당히 인하했습니다: 입력 토큰은 이제 $0.01/1K , 출력 토큰은 $0.03/1K로 이전 GPT-3 가격에 비해 각각 2배 및 4배 저렴합니다.
단일 메시지에서 여러 함수를 호출하고, JSON 모드를 사용하여 항상 유효한 함수를 반환하고, 올바른 함수 매개 변수를 반환하는 정확도를 개선하는 기능을 포함하여 함수 호출을 개선 했습니다.
모델 출력은 새로운 재현 가능한 출력 베타 기능을 통해 보다 결정적입니다.
API에서 gpt-4-4-preview를 전달하여 GPT-1106 Turbo에 액세스할 수 있으며 , 올해 말에 안정적인 프로덕션 준비 모델 릴리스가 계획되어 있습니다.
업데이트된 GPT-3.5 터보:
새로운 gpt-3.5-turbo-1106은 기본적으로 16K 컨텍스트를 지원하며 4배 더 긴 컨텍스트를 더 저렴한 가격($0.001/1K 입력, $0.002/1K 출력)으로 사용할 수 있습니다. 이 16K 모델의 미세 조정이 가능합니다.
미세 조정된 GPT-3.5는 입력 토큰 가격이 $75.0/003K로 1% 감소하고 출력 토큰 가격이 $62.0/006K로 1% 감소하여 훨씬 저렴합니다.
gpt-3.5-turbo-1106은 향상된 함수 호출 및 재현 가능한 출력으로 GPT-4 Turbo에 합류합니다.
어시스턴트 API:
애플리케이션에서 에이전트와 유사한 환경을 손쉽게 구축할 수 있도록 설계된 새로운 어시스턴트 API의 베타 버전을 소개하게 되어 기쁩니다. 사용 사례는 자연어 기반 데이터 분석 앱, 코딩 도우미, AI 기반 휴가 플래너, 음성 제어 DJ, 스마트 시각적 캔버스 등 다양합니다
이 API를 사용하면 특정 지침을 따르고, 추가 지식을 활용하고, 모델 및 도구와 상호 작용하여 다양한 작업을 수행할 수 있는 특수 목적의 AI 도우미를 만들 수 있습니다.
어시스턴트에는 개발자가 스레드 상태 관리를 OpenAI에 전달하고 컨텍스트 창 제약 조건을 해결할 수 있는 영구 스레드가 있습니다. 또한 코드 인터프리터, 검색 및 함수 호출과 같은 새로운 도구를 사용할 수 있습니다.
당사 플랫폼인 Playground를 사용하면 코드를 작성하지 않고도 이 새로운 API를 사용할 수 있습니다.
멀티모달 기능:
GPT-4 Turbo는 이제 Chat Completions API에서 시각적 입력을 지원하여 캡션 생성 및 시각적 분석과 같은 사용 사례를 가능하게 합니다. gpt-4-vision-preview 모델을 사용하여 비전 기능에 액세스할 수 있습니다. 이 비전 기능은 올해 말 프리뷰가 출시될 GPT-4 Turbo의 프로덕션 준비 버전에 통합될 예정입니다.
DALL· E 3 - 이미지 생성 API를 통해 애플리케이션으로 이미지를 생성합니다.
새로 도입된 TTS 모델을 통해 텍스트 음성 변환 기능을 출시했으며, 이 모델은 6가지 자연스러운 음성 중 하나를 사용하여 텍스트를 읽어줍니다.
ChatGPT의 사용자 지정 가능한 GPT:
GPT라는 새로운 기능을 출시했습니다. GPT는 지침, 데이터 및 기능을 맞춤형 버전의 ChatGPT로 결합합니다.
DALL· E 또는 Advanced Data Analysis, GPT는 개발자 정의 작업도 호출할 수 있습니다. GPT를 사용하면 개발자가 경험의 더 많은 부분을 제어할 수 있습니다. 우리는 의도적으로 플러그인과 액션을 매우 유사하게 설계했으며 기존 플러그인을 액션으로 전환하는 데 몇 분 밖에 걸리지 않습니다. 자세한 내용은 문서를 참조하세요.

DevDay 영상

OpenAI DevDay, Opening Keynote - YouTube

 

 

발표한지 열흘여만에 CEO에서 해고?가 되었다고.. ㅎ

Sam Altman, CEO of ChatGPT parent company Open AI, is out after board found he was ‘not consistently candid’ | CNN Business

 

Sam Altman, CEO of ChatGPT parent company Open AI, is out after board found he was ‘not consistently candid’ | CNN Business

CNN  —  OpenAI, the company behind the viral chatbot ChatGPT, fired its CEO and founder, Sam Altman, on Friday. His stunning departure sent shockwaves through the budding AI industry. The company, in a statement, said an internal investigation found th

www.cnn.com

 

 

GPT API 호출시 모든 비용은 토큰 수에 따라 계산이 되므로, 대략 어느정도의 토큰이 사용이 되는지를 알아야 비용 계산을 할 수 있다.

Python 같은 경우 tiktoken이라는 모듈로 이미 Open AI에서 제공하는 것이 있어서 참고를 할 수 있다.

 

def num_tokens_from_messages(messages, model="gpt-3.5-turbo-0613"):
  """Returns the number of tokens used by a list of messages."""
  try:
      encoding = tiktoken.encoding_for_model(model)
  except KeyError:
      encoding = tiktoken.get_encoding("cl100k_base")
  if model == "gpt-3.5-turbo-0613":  # note: future models may deviate from this
      num_tokens = 0
      for message in messages:
          num_tokens += 4  # every message follows <im_start>{role/name}\n{content}<im_end>\n
          for key, value in message.items():
              num_tokens += len(encoding.encode(value))
              if key == "name":  # if there's a name, the role is omitted
                  num_tokens += -1  # role is always required and always 1 token
      num_tokens += 2  # every reply is primed with <im_start>assistant
      return num_tokens
  else:
      raise NotImplementedError(f"""num_tokens_from_messages() is not presently implemented for model {model}.
  See https://github.com/openai/openai-python/blob/main/chatml.md for information on how messages are converted to tokens.""")

 

 

또는, 아래 사이트에서 텍스트를 넣어서 알수도 있다.

OpenAI Platform

 

 

 

Node js 에서 코드상에서 토큰을 세는 방법은 tiktoken이라는 모듈을 설치후에 가능하다.

(아마 open ai에서 공식적으로 제공한 패키지는 아닌것으로 알고있다.)

import { get_encoding, encoding_for_model } from "tiktoken";

function tiktoken_test() {
    let encoding = encoding_for_model("gpt-3.5-turbo");
    // encoding = get_encoding("cl100k_base"); // 일반적으로 gpt3.5 와 4에서 사용하는 인코더를 가져옴. 추천방식

    let encoded = encoding.encode("안녕하세요. 제 이름은 이호영입니다.");
    console.log(encoded);
    console.log('length = ', encoded.length);

    encoded = encoding.encode("Hello. My name is Hoyeong Lee");
    console.log(encoded);
    console.log('length = ', encoded.length);
}
tiktoken_test();

 

위 테스트 코드를 실행해보면,

와 같이, 토큰별 ID와 길이를 알 수 있다. 토큰은 Uint32Array라는 배열로 저장된다.

토큰이 어떻게 나눠지는지 알아보기 위해 토큰별로 글자를 프린트 해보겠다.

const encoding = get_encoding("cl100k_base");
const textDecode = new TextDecoder();

function testCountToken() {
    let encoded = encoding.encode("안녕하세요. 제 이름은 이호영입니다. 성은 이, 이름은 호영입니다.");
    console.log(encoded);
    let decoded = textDecode.decode(encoding.decode(encoded));
    console.log(decoded);
}

 

 

실행해보면,

토큰 ID가 나오고 있고, 전체 문장을 디코딩하면 원래 문장으로 잘 나오고 있다.

const encoding = get_encoding("cl100k_base");
const textDecode = new TextDecoder();

function testCountToken() {
    let encoded = encoding.encode("안녕하세요. 제 이름은 이호영입니다. 성은 이, 이름은 호영입니다.");
    displayDecodedCharacters(encoded);
    console.log('token length = ', encoded.length);
}

function displayDecodedCharacters(encoded) {
    let idx = 0;
    for (let key in Object.keys(encoded)) {
        let arr = new Uint32Array(1);
        arr[0] = encoded[key];
        let ch = textDecode.decode(encoding.decode(arr), {stream:true});
        console.log(`${idx} : ${encoded[key]}="${ch}"`);
        idx += 1;
    }
}
 

 

 

encode 된 Uint32를 한개씩 가져와서 길이 1인 배열에 첫번째 인덱스에 값을 넣고, 디코딩을 했다.

실행을 해보면 아래처럼 나온다.

첫번째 인자는 토큰 내부 로직을 자세히몰라서 왜 빈칸인지는 잘 모르겠다. 중간중간에도 빈칸이 존재한다. 컴마등의 기호에도 토큰이 붙는다.

"호"라는 글자가 공백 뒤에 있을때와 다른글자 뒤에 있을때 각각 다른 ID로 지정되고 있다. 공백+글자 이렇게 묶어서 토큰이 되는것으로 알고 있다.

이번엔 영어로 해보았다.

 

let encoded = encoding.encode("Hello. My name is Hoyeong Lee, First name is Hoyeong and last name is Lee.");

 

 

한글과는 달리, 첫번째 인자는 빈칸이 아니긴했다. 한글이 토큰 비용면에서 불리한 느낌이 있다.

토큰수를 대략 알고 있으면, 아래 pricing 페이지에서 비용을 참고하여 계산할 수 있겠다.

비용은 1000토큰 단위로 부과가 되는듯하고, Input(API 요청) Output (API 응답)에 따라 비용이 다르고, 보통 아웃풋이 더 비싸게 책정되어 있다.

현재 gpt3.5 모델 대비 4.0 모델은 30배 정도 비싸게 부과된다.

아주 대략적으로 10번의 일반적인 짧은 대화를 주고받고 나면 5k 토큰정도 소요되었고(상담용 챗봇 테스트 기준)

대략 0.01달러정도 쓰게되는것으로 보였다. 대략 20원 안쪽?

Pricing (openai.com)

 

Pricing

Simple and flexible. Only pay for what you use.

openai.com

 

 

'SW 개발 참고 > AI' 카테고리의 다른 글

OpenAI DevDay (23년11월7일) 변경내용  (0) 2023.11.19
Open AI (ChatGPT) 개발용 API Key 생성  (0) 2023.11.19

Open AI사의 LLM을 사용하여 개발을 하려면 회원 가입후 key를 생성해야 한다.

OpenAI 사이트에 가서, 회원가입/로그인을 하자.

OpenAI Platform

 

 

 

여기에 가서 API를 선택하면, 전화 인증 후 개발자 등록이 된다. 처음 가입하면 free credit 18$를 주는데, 혹시 이미 다른 계정에서 인증에 쓰인 전화번호라면 free credit은 못받는다.

(생각보다 18달러 쓰는데 오래 걸린다.)

 

나는 구글계정으로 가입을 했다.

첫 화면. 우측 상단에 계정 메뉴가 있는데, Manage account를 선택하면, API 키나 결제, credit, usage 등을 설정하거나 볼 있다.

API 키 메뉴. 키를 여러개 생성이 가능하다. 용도에 맞춰 쓰다가, 불필요하면 삭제하는 식으로 해도 될듯하다.

"+Create new secret key" 메뉴로 키를 새로 만들 수 있고, 생성하자마자 키값을 잘 저장해놔야 한다. 다시 보여주지는 않는듯하다.

키 생성 화면

Usage 메뉴. credit 사용량, 잔여량 등을 볼 수 있다. free credit은 몇달 지났더니 expire 되어 버렸다.

​나의 경우는, Biling 메뉴를 통해 신용카드 등록후, credit을 결제해놓고 사용중이다.

OpenAI Platform

 

 

사용량 제한을 걸어 둘 수 있는데

Soft limit : 해당 비용까지 도달하면 경고 메일 등으로 알려줌

Hard limit : 도달시, 서비스 block

그래서, 갑가지 비용이 증가할 경우를 대비할 수 있다.

 

 

 

+ Recent posts