Node.js OpenAPI API

OpenAI의 공식문서에서는 세가지 방법으로 OpenAI의 다양한 API에 접근할 수 있도록 가이드를 하고 있습니다. 파이썬, Node.js, Curl 인데요. 파이썬 바인딩과 Node.js 라이브러리를 공식적으로 배포하고 있습니다. 그 밖에 .NET, Java 등 다른 언어의 커뮤니티에서도 라이브러리를 개발하고 있습니다.

 

쉽게 사용할 수 있는 건 파이썬이 좀 잘되어 있는 것 같습니다. 아무래도 AI 관련 프레임워크가 발달해 있다보니 파이썬을 많이 쓰는데요. 파이썬을 이용한 OpenAI API 접속에 관해서는 아래 링크를 참고합니다.

 

파이썬 OpenAI API 접속하기, text completion create - 파이썬 OpenAI (1) (tistory.com)

 

파이썬 OpenAI API 접속하기, text completion create - 파이썬 OpenAI (1)

파이썬으로 OpenAI의 API에 접속하는 방법은 다음과 같습니다. 우선 OpenAI 계정(account)를 만들어야 합니다. 계정이 없는 경우 아래 문서의 OpenAI 가입방법을 참고합니다. chatGPT 가입하고 시작하기 / ch

digiconfactory.tistory.com

 

 

Node냐 Python이냐 둘다 장단점이 있을텐데요. 둘다 장점이 너무 많은 언어라서 우열을 가리기는 힘들어 보이고, 아무래도 웹쪽의 프레임워크는 자바스크립트 쪽이 발달되어 있다는 점이 노드로 OpenAI API를 사용하는 이점입니다. 벌써 OpenAI 를 리액트에 적용하는 튜토리얼이 나오고 있습니다.

 

파이썬은 딱히 설명할 필요도 없이 뭘만들건 좋은 언어입니다. 직장, 가정, 상업용 / 개인용 소프트웨어, 웹 등 뭐든 접목이 가능하겠네요.

 

파이썬은 지난번에 해봤으니까 이 포스트에서는 Node.js로 OpenAI API를 사용하는 셋업을 해보겠습니다.

 

npm으로 시작합니다.

 

npm init -y

 

openai 모듈을 설치합니다.

 

npm install openai

 

사용가능한 모델을 알아봅니다.

 

const { Configuration, OpenAIApi } = require("openai");

const configiration = new Configuration({
    organization: process.env.OPENAI_ORGANIZATION,
    apiKey: process.env.OPENAI_SECRET_KEY,
});

console.log('<<--- Hello Node.js ---->>');
console.log('...openai api tutorial...');

const openai = new OpenAIApi(configiration);

const runAPI = async () => {
    const response = await openai.listModels();
    const models = response.data.data;

    for (let i=0; i<models.length; i++) {
        console.log(i + ' : ' + models[i].id);
    }

}

runAPI();
console.log('running...');

 

현재 68개 모델이 있습니다. 여기서 선택가능한 가장 최신의 모델은 gpt-3.5-turbo네요. GPT-4는 오늘 나와가지고 사용할려면 wait list 웨이팅 신청을 해야 합니다. 이거 신청자가 많을 것으로 예상되서 일단 바로 신청했습니다. 

 

GPT-3.5도 훌륭한 모델입니다. 시기적으로 봤을 때 대부분 사용자들이 3.5 능력을 몇번 사용안해봤지요. GPT-4가 어떻게 될지 모르겠지만 3.5도 아직 연구가치가 충분한 모델입니다.

 

gpt-3.5-turbo

 

text-davinci-003

 

그런데 gpt-3.5-turbo는 사용하는 함수가 다르니까 일단 간단한 text-davinci-003 부터 시작해봅니다. 모델과 프롬프트만 주면 작동합니다. apikey는 매번 입력하기 귀찮으니까 환경변수에서 가져옵니다. npm dotenv 를 쓰는 것도 방법입니다. organization  코드는 openai 계정에 들어가면 확인할 수 있습니다.

 

const { Configuration, OpenAIApi } = require("openai");

const configiration = new Configuration({
    organization: process.env.OPENAI_ORGANIZATION,
    apiKey: process.env.OPENAI_SECRET_KEY,
});


console.log('<<--- Hello Node.js ---->>');
console.log('*- openai api tutorial...');

const openai = new OpenAIApi(configiration);

const runPrompt = async () => {
    const response = await openai.createCompletion({
        model: "text-davinci-003",
        prompt: "how can you learn English?",
        max_tokens: 300,
        temperature: 0.2,
      });
    console.log('- completion:\n' + response.data.choices[0].text);
    console.log('\n- total tokens: ' + response.data.usage.total_tokens);
    console.log('*- completion ended...');
}
runPrompt();

영어 공부를 하는 방법 10가지를 알려준다

gpt3 node.js

gpt-3.5-turbo

 

GPT 3.5 모델을 사용하는 함수입니다. API에 연결하는 내용은 같고 messages 가 다릅니다. 이게 chatGPT 3.5에 보면 role 역할 분담을 해서 프롬프트를 만드는 방법이 있는데 솔직히 출시된지 얼마 안된 것이라 사용법을 잘 모르겠더군요. 이게 인제 프롬프트 엔지니어가 새로운 직업으로 나오게 되겠지요.

 

const runGPT35 = async (prompt) => {
    const response = await openai.createChatCompletion({
        model: "gpt-3.5-turbo",
        messages: [{ role: "user", content: prompt }],
    });
    console.log(response.data.choices[0].message.content);
};

runGPT35("how can you learn English");

 

OpenAI 공식문서에 따르면...

 

"채팅 모델은 일련의 메시지를 입력으로 받고 모델에서 생성된 메시지를 출력으로 반환합니다.

채팅 형식은 다중 턴 대화를 쉽게 하도록 설계되었지만, 대화가 없는 단일 턴 작업(예: 이전에 텍스트-davinci-003과 같은 명령어 추종 모델에서 제공한 작업)에도 유용합니다."

 

GPT-3.5와 4.0은 다중 턴 대화를 위해 설계되었습니다. 단일 턴은 한번에 끝나는 것을 말합니다. 질문하고 답변하고 한턴에 끝나지요.

 

다중 턴 대화

뭐 예를 들자면 이런 건데요. 아래 message에 보면 위에 davinci-003하고 프롬프트는 같습니다. 그런데 system (completion하는 자)에게 니가 영어 선생이라고 역할을 줘요. 그러면 영어를 어떻게 배우나요? 라는 질문에 영어 선생님 처럼 답변해준다는 겁니다. 자 위에서 답변이 단순하게 영어 배우는 방법 10가지 - 이렇게 나왔다면, 선생님은 답변이 다릅니다.

 

 

영어 선생님의 답변으로 출력된 내용입니다.

 

gpt 3.5 답변

 

한번 번역한 내용을 볼까요? 뭔가 영어 선생 답습니다. 영어 강의를 들으라는 것 부터 마케팅 하는 것 처럼 느껴지네요. (나를 고용해라 -> 나에게 돈내고 영어를 배워라) 즉 컨텍스트를 좀더 serious 하게 고려한 답변을 만드는 건데요. 

 

좋아요! 영어 학습은 여러 가지 방법으로 할 수 있습니다:

1. 영어 강좌를 듣거나 영어를 제2외국어로 가르치는 튜터를 고용하세요(ESL). 이렇게 하면 학습할 때 구조와 지침을 얻을 수 있습니다.

2. 뉴스, 팟캐스트, 영화 또는 TV 프로그램과 같은 영어 미디어를 듣거나 시청하며 영어에 몰입하세요. 이것은 듣기 실력을 향상시키는 좋은 방법입니다.

3. 원어민 또는 영어를 배우는 같은 반 친구들과 함께 영어 말하기 연습을 하세요. 연습은 완벽을 만듭니다!

4. 관심 있는 주제에 대한 영어 책이나 기사를 읽으세요. 이것은 어휘력을 확장하고 작문 실력을 향상시키는 데 도움이 될 것입니다.

5. 대화형 수업과 연습 문제를 제공하는 언어 학습 앱이나 웹사이트를 사용하여 읽기, 쓰기, 듣기, 말하기 능력을 연습하세요.

6. 언어 교환 이벤트에 참석하거나 온라인 언어 교환 커뮤니티에 가입하여 원어민과 함께 모국어를 가르치는 대가로 영어 말하기 연습을 할 수 있습니다.

영어를 배우는 데는 시간과 노력이 필요하지만, 규칙적인 연습과 헌신을 통해 언어 능력을 향상시키고 목표를 달성할 수 있다는 사실을 잊지 마세요.

Translated with DeepL

 

이런 롤플레이는 사람들의 상상력을 자극하기에 충분합니다. 예를 들어 '당신은 미국의 경찰관이다. 학교 폭력에 대해 어떻게 생각하는가?' 뭔가 실제적인 느낌이 듭니다. 자꾸 느낌느낌하는데 chatGPT가 그렇게 설계되어 있습니다. 인간의 감정에 건드리지요. 컴퓨터가 일반에 보급된지 오래 지났지만 아직까지 그런 기분을 느끼지는 못했습니다. 기계에게 의식이 있다고 착각하는 것 같은거지요.

 

 

GPT-3.5는 지금 응답지연이 많습니다. GPT-4도 아마 API가 속도 문제가 있을 듯 하네요. 안정화 시킬려면 시간이 걸릴 듯 합니다. 간단한 내용들은 GPT-3을 이용하는 것도(davinci-003) 쓸만하다고 봅니다. GPT-3조차 아직 그 진가를 다 보지 못했으니까요.

공유하기

facebook twitter kakaoTalk kakaostory naver band