티스토리 뷰


ChatGPT 그냥 사용해도 강력하지만 ChatGPT API를 이용해서 자동화된 시스템을 구축하면 더욱 강력할 것 같습니다. Python, Node.js, Java 예제를 만들어보도록 하겠습니다. 

 

개발자가 아니더라도 따라만 하면 기본은 사용할 수 있으니 다른 활용방안이 필요하다면 따라해보시기 바랍니다. 개발자분이시라면 ChatGPT API 사이트를 보고 쉽게 따라하실테니 개발자 아닌분이 따라할 수 있는 수준으로 설명하겠습니다. 일단 만들어보는 것도 초보 개발 학습에 좋은 방법입니다. 


1. ChatGPT API Key 발급

 

https://platform.openai.com/account/api-keys

 

OpenAI API

An API for accessing new AI models developed by OpenAI

platform.openai.com

 

1.1 Create new secret key 

 

비밀번호 발급과 같습니다. 절대 노출하시면 안됩니다. 소스를 공개된 깃허브에 올리거나 타인과 공유가 된다면 소스에도 직접 입력하지 않게 프로그램을 작성해야 합니다. 

 

중요 - 접속한 페이지를 보면 가운데에 Create new secret key 가 있는데 새로 발급한 비밀키가 팝업으로 나오는데 최초 발급 시에만 확인이 가능하니 비밀스러운 혼자만의 공간에 잘 백업해둡니다. ( 저는 개인 클라우드에 보관. pc나 모바일에 텍스트 파일로 보관하는 사람도 있어요. ) 

 

ChatGPT - API Keys - Create new secret key
create new scret key를 선택하고 백업을 진행한다.

 

이 팝업에서 1회만 비밀키 확인이 가능하니

여기서 복사한 값을 바로 잘 백업해두세요.

API Key Generated 

copy
생성된 API 키를 복사한 뒤 닫는다.

 

 

만일 백업을 잘못해두거나 잃어버렸다면 기존 생성된 값을 삭제하고 다시 만들면 됩니다. 아래 휴지통 버튼 보이시죠? 

 

잘못만든 api key는 삭제하는 이미지


원하는 언어별로 진행을 선택해보세요. 

 

 


2. Python으로 ChatGPT API 호출하기

 

본인 환경에 python3은 설치가 되어있어야 합니다. 그래야 python3으로 호출할거니까요. 이미 되어있거나 python3을 다운받아 설치해주세요. 

 

2.1 ChatGPT API 패키지 다운로드

 

본인 환경에 github가 설치되어있다면 "2.1.2 github 에서 다운로드하기"를 진행하세요. 없다면 2.1.1 파일 다운로드를 이용하세요. 

 

2.1.1 파일 다운로드 방식

https://github.com/openai/openai-quickstart-python/archive/refs/heads/master.zip

 

"openai-quickstart-python-master.zip"을 다운로드 받고 원하는 적당한 위치에 풀어주세요. 

 

저는 "C:\workspace\python" 에 zip 파일을 넣고 압축을 해제했어요. 

파일 다운로드 위치와 압축 해제하는 이미지

 

 

2.1.2 github 에서 다운로드하기

$ git clone https://github.com/openai/openai-quickstart-python.git

위에서 zip 파일을 푸신 분은 이 github 다운로드를 안하셔도 됩니다. ( 같은 작업이에요. ) 


2.2 아까 발급 받은 API Key 적용하기

아까 백업해두신 secret key 라는 녀석, 적용해야할 차례입니다. 잘 백업해두셨죠? 혹시 없어지거나 잃어버렸다면 다시 1번 안내사항으로 가셔서 다시 발급 받고 오세요. 

 

윈도우라면 커맨드창(명령 프롬프트)을 열고 맥북이라면 터미널 창을 열어주세요. 

 

윈도우라면 "WIN + R" ▶ cmd 입력 후 엔터

 

혹은 시작버튼 누른 뒤 "cmd" 입력 이렇게 생긴 앱을 실행해줍니다. 

 

윈도우 명령 프롬프트를 실행하는 이미지

 

그런 다음 아까 zip 파일을 푸신 윈도우 탐색기 창에서 주소 표시줄에서 경로를 복사해주세요. 

윈도우 탐색기 zip 파일 위치에서 복사하는 이미지

 

저의 경우에는 아래 경로입니다. 저와 같은 경로를 생성해서 작업하셨다면 똑같이 따라하시면 됩니다. 

 

입력 부분 밑줄 있는 부분

C:\Users\NHJ> cd C:\workspace\python\openai-quickstart-python-master
C:\workspace\python\openai-quickstart-python-master>copy .env.example .env
        1개 파일이 복사되었습니다.

C:\workspace\python\openai-quickstart-python-master>notepad .env

 

이렇게 하면 .env 파일이 메모장으로 열리실거에요. 

.env 파일에 api key를 입력하는 이미지

 

OPENAI_API_KEY 부분에 아까 백업해둔 비밀키를 입력하고 저장한 뒤 닫아주세요. 다시 커맨드창으로 이동해서 명령어를 추가로 입력해줍니다. 

 

계속 밑줄 강조된 명령어들을 동일하게 입력해주세요. 

C:\workspace\python\openai-quickstart-python-master>python -m venv venv
C:\workspace\python\openai-quickstart-python-master>venv\Scripts\activate.bat

(venv) C:\workspace\python\openai-quickstart-python-master>pip install -r requirements.txt
......
......
......

 

 

ERROR: Ignored the following versions that require a different python version: 1.21.2 Requires-Python >=3.7,<3.11; 1.21.3 Requires-Python >=3.7,<3.11; 1.21.4 Requires-Python >=3.7,<3.11; 1.21.5 Requires-Python >=3.7,<3.11; 1.21.6 Requires-Python >=3.7,<3.11 ERROR: Could not find a version that satisfies the requirement numpy==1.21.3 (from versions: 1.3.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.6.1, 1.6.2, 1.7.0, 1.7.1, 1.7.2, 1.8.0, 1.8.1, 1.8.2, 1.9.0, 1.9.1, 1.9.2, 1.9.3, 1.10.0.post2, 1.10.1, 1.10.2, 1.10.4, 1.11.0, 1.11.1, 1.11.2, 1.11.3, 1.12.0, 1.12.1, 1.13.0, 1.13.1, 1.13.3, 1.14.0, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.14.5, 1.14.6, 1.15.0, 1.15.1, 1.15.2, 1.15.3, 1.15.4, 1.16.0, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.16.6, 1.17.0, 1.17.1, 1.17.2, 1.17.3, 1.17.4, 1.17.5, 1.18.0, 1.18.1, 1.18.2, 1.18.3, 1.18.4, 1.18.5, 1.19.0, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.19.5, 1.20.0, 1.20.1, 1.20.2, 1.20.3, 1.21.0, 1.21.1, 1.22.0, 1.22.1, 1.22.2, 1.22.3, 1.22.4, 1.23.0rc1, 1.23.0rc2, 1.23.0rc3, 1.23.0, 1.23.1, 1.23.2, 1.23.3, 1.23.4, 1.23.5, 1.24.0rc1, 1.24.0rc2, 1.24.0, 1.24.1, 1.24.2) ERROR: No matching distribution found for numpy==1.21.3

 

이렇게 numpy 1.21.3 설치 에러가 발생하게 되는데 아래처럼 개별적으로 설치해줍니다. 아래 추가적인 명령어들도 동일하게 입력해줍니다. ChatGPT 사이트 예시가 완벽하지 않아서 경험한 문제들을 아래 명령어(커맨드)로 조치한 것입니다. 

 

(venv) C:\workspace\python\openai-quickstart-python-master>pip install numpy

(venv) C:\workspace\python\openai-quickstart-python-master>flask run

'flask'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.

(venv) C:\workspace\python\openai-quickstart-python-master>pip install Flask==2.0.2

(venv) C:\workspace\python\openai-quickstart-python-master>flask run
* Tip: There are .env or .flaskenv files present. Do "pip install python-dotenv" to use them.
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
* Debug mode: off
Usage: flask run [OPTIONS]
Try 'flask run --help' for help.
Error: While importing 'app', an ImportError was raised.

(venv) C:\workspace\python\openai-quickstart-python-master>pip install python-dotenv

(venv) C:\workspace\python\openai-quickstart-python-master>pip install openai

(venv) C:\workspace\python\openai-quickstart-python-master>flask run
* Serving Flask app 'app' (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
* Restarting with stat
* Debugger is active!
* Debugger PIN: 577-131-413

최종적으로 'flask run'을 입력하여 * Running on http://127.0.0.1:5000 메세지를 확인하게 되면 내 브라우저에서 

 

이 주소를 접속할 수 있습니다. http://localhost:5000/

 

접속 한 뒤에 Enter an animal에 동물 이름을 넣으면 pet 이름을 영웅스럽게 지어줍니다. 

python에서 dog를 입력하여 추천 펫 이름 결과를 받은 이미지

파이썬은 굉장히 예제가 잘 구성되어있군요? 지금까지 한 작업을 서버에 동일하게 올리고 도메인을 연결하면 애완동물 이름 지어주는 서비스가 완성되는 것입니다. 


3. Node.js로 ChatGPT API 호출하기

 

Node.js에 환경에 설치가 되어있어야 합니다. 없다면 인터넷에서 다운받아서 설치해주세요. 이 부분까지 안내하기에는 본 포스팅 취지가 맞지 않고 인터넷에 쉽게 안내가 되어있습니다. 

 

3.1 ChatGPT API 퀵스타터 패키지를 다운로드

 

Github가 없고 설치하지 않는다면 3.1.1 zip 파일을 다운로드하시고 github를 설치한다면 3.1.2 github로 다운로드를 이용하세요. 

 

 

3.1.1 zip 파일 다운로드

 

https://github.com/openai/openai-quickstart-node/archive/refs/heads/master.zip

 

node.js 스타터 패키지 위치 및 압축 해제하는 이미지

 

저 같은 경우는 아래 경로를 만들어서 파일을 만들었는데 저와 같은 경로를 써도 되고 다른 경로를 만들어서 넣으셔도 됩니다. 

C:\workspace\node.js\openai-quickstart-node-master

 

3.1.2 github에서 다운로드

 

$ cd C:\workspace\node.js\
$ git clone https://github.com/openai/openai-quickstart-node.git
$ cd openai-quickstart-node

3.2 비밀키 적용하기

아까 백업받은 비밀키를 해당 스타터 패키지에 적용해야합니다. 좀 있어보인다는 커맨드창으로 이동하겠습니다. 단축키 "WIN+R" ▶ 실행창에서 "cmd" 입력 후 엔터를 빨리 쳐서 컴퓨터 고수라는 인상을 줘봅시다. 

 

아래와 같은 창이 나옵니다. 

비밀키를 적용하기 위한 프롬프트 창 이미지

 

아까 스타터를 다운로드 받은 경로로 이동해줍니다. 이제부터 밑줄 강조가 직접 입력한 부분입니다. 그 부분을 복사해서 따라하시면 됩니다. 

 

C:\Users\NHJ>cd C:\workspace\node.js\openai-quickstart-node-master

C:\workspace\node.js\openai-quickstart-node-master>_

C:\workspace\node.js\openai-quickstart-node-master>copy .env.example .env
    1개 파일이 복사되었습니다.

C:\workspace\node.js\openai-quickstart-node-master>notepad .env

 

여기까지 입력하면 메모장이 하나 열립니다. 여기에 아까 비밀키를 넣고 저장한 뒤 닫아줍니다. 

 

Node.js .env 파일 수정하는 이미지

 

그 다음 다시 커맨드창에서 명령어를 입력해주세요. 

 

C:\workspace\node.js\openai-quickstart-node-master>npm install

C:\workspace\node.js\openai-quickstart-node-master>npm run dev

> openai-quickstart-node@0.1.0 dev
> next dev

ready - started server on 0.0.0.0:3000, url: http://localhost:3000
info  - Loaded env from C:\workspace\node.js\openai-quickstart-node-master\.env
event - compiled client and server successfully in 3.5s (150 modules)
Attention: Next.js now collects completely anonymous telemetry regarding usage.
This information is used to shape Next.js' roadmap and prioritize features.
You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:

wait  - compiling / (client and server)...
event - compiled client and server successfully in 5.7s (170 modules)

 

Node.js 스타터 패키지는 http://localhost:3000  주소를 통해 접속 할수 있네요. 

 

Enter an animal 에 악어라고 넣으니까 뭔가 어울리는 이름을 지어주네요. 

Node.js 추천 펫 명 결과를 보여주는 이미지

 

Node.js는 문제 없이 한번에 깔끔하게 가이드대로 실행되는 모습입니다. 


4. Java로 ChatGPT API 호출하기

 

자바가 설치되어있어야 합니다. 

 

자바(JDK, JRE) 모든 버전 다운로드( 6,7,8,9,10,11,12,13,14,15, 16, 17,18,19)


4.1 Java 코드 작성 및 실행

 

ChatGPT에서 자바로는 가이드를 제공하지는 않아서 직접 작성해봤습니다. 웹 서버 코드까지 작성하기는 시간이 허락하지 않아 콘솔에서 텍스트로 확인할 수 있는 수준으로 작성했습니다. 

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;

public class ChatGPTAPI {
	
	private static String callAPI(String key, String prompt ) {
		try {        	
            URL url = new URL("https://api.openai.com/v1/completions");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("POST");
            con.setRequestProperty("Content-Type", "application/json; utf-8");
            //System.out.println(key);
            con.setRequestProperty("Authorization", "Bearer " + key );
            con.setDoOutput(true);
            String input = "{\"model\": \"text-davinci-003\", \"prompt\": \""+prompt+"\",\"max_tokens\":1024}";
            try(OutputStream os = con.getOutputStream()) {
                byte[] inputBytes = input.getBytes("utf-8");
                os.write(inputBytes, 0, inputBytes.length);
            }

            int responseCode = con.getResponseCode();
            System.out.println("Response Code : " + responseCode);

            try(BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"))) {
                StringBuilder response = new StringBuilder();
                String responseLine = null;
                while ((responseLine = br.readLine()) != null) {
                    response.append(responseLine.trim());
                }
                return (response.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
	}
	
    public static void main(String[] args) throws Throwable {
    	if( args == null || args.length == 0 ) {
    		throw new Exception("Execute like this. ex) \"java ChatGPTAPI <API Key>\"");
    	}    	
    	Scanner scanner = new Scanner(System.in);    	
    	while(true) {
    		System.out.print("Enter an animal : ");        	
    		String animal = scanner.nextLine();        	
        	String prompt = "Suggest three names for an animal that is a superhero. "
        			+ ""
        			+ " Animal: Cat"
        			+ " Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline"
        			+ " Animal: Dog"
        			+ " Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot"
        			+ " Animal: " + animal
        			+ " Names:";
        	String result_api = callAPI(args[0], prompt);    	
        	System.out.println(result_api);
    	}
    	  
    }
}

 

이걸 메모장으로 ChatGPTAPI.java 라는 파일로 저장한 뒤에 특정 폴더로 위치시킵니다. 

 

그 다음 커맨드 창을 통해 java.exe가 알아먹을 수 있는 class 파일로 변환해야 합니다. 

 

C:\workspace\java\chatgpt>javac -cp . ChatGPTAPI.java
C:\workspace\java\chatgpt>java ChatGPTAPI API KEY

백업한 api key를 저기에 넣고 실행해주면 됩니다. 이후 활용하려고 하는 곳에 적당히 수정해서 넣으면 동작이 될 것입니다. 


해당 포스팅을 따라하다가 환경적인 문제로 여러가지 다른 문제들이 발생할 수 있습니다.(원래 그렇습니다.)  댓글로 달아주시면 시간이 허락될 때 답변 드릴수 있도록 하겠습니다. 본업이 따로 있어서 빨리 드릴수는 없는 점 양해 부탁드립니다. 

 

이렇게 ChatGPT API Python, Node.js, Java example(예제)에 대한 내용들을 정리했습니다. 감사합니다. 

 

 

 


댓글
최근에 올라온 글
최근에 달린 댓글