본문 바로가기

좋아하는 것_매직IT/26.Java

ChatGPT 연동 JAVA로 구현해보기 (ft.python, nodejs)

반응형

openai 에서는 python과 nodejs 만 구현 예제가 있길래...
자바로 한번 공부차 구현해봤네요...

728x90



참고로 아래는 python 소스

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Completion.create(
  model="text-davinci-003",
  prompt="Say this is a test",
  max_tokens=7,
  temperature=0
)

그리고 아래는 nodejs 소스

const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.createCompletion({
  model: "text-davinci-003",
  prompt: "Say this is a test",
  max_tokens: 7,
  temperature: 0,
});

아래는 그냥 생짜로 JAVA로 HTTP로 짠소스....!!

package com.open.magic.ai;

import org.json.simple.JSONArray;
import org.json.simple.parser.JSONParser;
import org.json.simple.JSONObject;


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

public class Main {

    private static String callChatGPT(String prompt) {
        try {
            URL url = new URL("https://api.openai.com/v1/completions");
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setRequestProperty("Content-Type", "application/json; utf-8");
            httpURLConnection.setRequestProperty("Authorization", "Bearer " + System.getenv("OPENAI_API_KEY"));
            httpURLConnection.setDoOutput(true);

            String input = "{\"model\": \"text-davinci-003\", \"prompt\": \"" + prompt + "\",\"max_tokens\" : 1024}";

            try (OutputStream os = httpURLConnection.getOutputStream()) {
                byte[] inputBytes = input.getBytes("utf-8");
                os.write(inputBytes, 0, inputBytes.length);
            }

            int resCode = httpURLConnection.getResponseCode();
            System.out.println("resCode:" + resCode);

            try (BufferedReader br = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(), "utf-8"))) {
                StringBuilder res = new StringBuilder();
                String resLine = null;

                while ((resLine = br.readLine()) != null) {
                    res.append(resLine.trim());
                }

                return (res.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return "";
    }

    public static void main(String[] args) {
        String prompt = "What is Seoul?";

        String res = callChatGGPT(prompt);

        JSONParser jsonParser = new JSONParser();

        try {
            Object obj = jsonParser.parse(res);
            JSONObject jsonObject = (JSONObject) obj;
            System.out.println(res);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

결과는 아래와 같이 잘나오네요...(그런데 응답시간은 무료를 사용해서 역시나 엄청 느리군요... OTL)

728x90

아래는 JSONHERO 를 사용해서 보기좋게...ㅎㅎ

오늘의 블로그는 여기까지고요
항상 믿고 봐주셔서 감사합니다. 

728x90
300x250