반응형
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
'좋아하는 것_매직IT > 26.Java' 카테고리의 다른 글
Java 스트림(Stream) 깔끔하게 정리하기 (0) | 2023.12.27 |
---|---|
openjdk 최신버전 다운로드 받기 (0) | 2023.04.05 |
HttpServer를 활용한 간단한 Mock 서버 구축하기 (0) | 2022.09.13 |
면접때 꼭 물어보는 JAVA(JVM) 주요 메모리 영역 깔끔하게 정리하기 (0) | 2022.06.05 |
제네릭 클래스(generic class) 깔끔하게 정리하기 (0) | 2022.04.18 |