OpenAI API 모델 및 버전 마이그레이션

구형 OpenAI Completions API와 모델 지원 종료에 맞춰 API와 모델 버전을 마이그레이션한 기록.

OpenAI, API, LLM, Migration

지난 해의 11월 즈음, OpenAI에서 구형 API 모델에 대한 지원을 중단하겠다고 발표했다. 4월 초에 진행했던 Palette 프로젝트에서 text-davinci-003 모델을 사용하여 서비스를 개발하고 유지중이었는데, 이에 따라 변경이 필요해졌다.

GPT-4 API general availability and deprecation of older models in the Completions API GPT-3.5 Turbo, DALL·E and Whisper APIs are also generally available, and we are releasing a deprecation plan for older…

openai.com

모델을 변경하기 위해 OpenAI API 문서에 따라 변경하던 도중, 충돌을 발견하여 글을 작성하게 되었다.

당시 Node.js에서 OpenAI API를 이용하는 방식은 ‘openai’ NPM 패키지를 로드하고, 아래와 같이 클라이언트 인스턴스를 생성하여 호출하는 방식으로 사용했다. 프로젝트를 진행하던 2023년 4월 경의 openai NPM 패키지 버전은 3.2.x였다.

// client
import { Configuration, OpenAIApi } from "openai";

declare global {
    var __configuration: Configuration | undefined;
    var __openai: OpenAIApi | undefined;
}

const __configuration =
    global?.__configuration ??
    new Configuration({
        apiKey: process.env.OPENAI_API_KEY,
    });

if (process.env.NODE_ENV === "development")
    global.__configuration = __configuration;

const __openai = global?.__openai ?? new OpenAIApi(__configuration);

if (process.env.NODE_ENV === "development") global.__openai = __openai;

export default __openai;

// api call
const {
    data: { choices },
} = await __openai.createCompletion({
    model: "text-davinci-003",
    prompt,
    temperature: 0.55,
    max_tokens,
    n: 1,
    best_of: 1,
});

그러나 이후 openai NPM 라이브러리의 버전이 3.x에서 4.x으로 버전업됨에 따라 사용 방식이 일부 달라졌다. 클라이언트와 API 호출을 위한 객체 구성, 응답 객체의 형태 등이 달라졌다. 라이브러리 버전이 여전히 3.x.x인 경우, 공식 문서의 가이드를 따라 구성을 작성해도 오류가 발생할 수 있다.

자세한 내용은 공식 문서에 자세하게 나와있다.

import OpenAI from "openai";

const openai = new OpenAI();

async function main() {
  const completion = await openai.chat.completions.create({
    messages: [{ role: "system", content: "You are a helpful assistant." }],
    model: "gpt-3.5-turbo",
  });

  console.log(completion.choices[0]);
}

main();

이전에 세팅한 OpenAI 구형 모델을 이용하다가 위와 같이 지원 중단으로 인해 다른 모델로 변경하고자 공식 문서의 가이드를 참고하여 구성하였으나 오류가 발생하는 경우, openai NPM 패키지의 버전을 4.x 이상의 버전으로 업데이트하면 공식 문서에서 제공하는 가이드를 정상적으로 따라갈 수 있다.


원문: Medium