Skip to content

Commit 171e4d6

Browse files
committed
fix for "createInstance(Class<T> clazz, Object data)"
1 parent 3569e48 commit 171e4d6

File tree

4 files changed

+22
-17
lines changed

4 files changed

+22
-17
lines changed

src/main/java/examples/ExampleChatGPT.java

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
import io.github.jetkai.openai.net.OpenAIEndpoints;
77
import io.github.jetkai.openai.openai.OpenAI;
88

9-
import java.net.InetSocketAddress;
10-
import java.net.ProxySelector;
11-
import java.net.http.HttpClient;
129
import java.time.Duration;
1310
import java.util.ArrayList;
1411
import java.util.List;
@@ -126,15 +123,6 @@ private String exampleInstanceOrEnum(String message) {
126123
}
127124

128125
private String exampleHttpClientProxy(String message) {
129-
ProxySelector proxySelector = ProxySelector.of(new InetSocketAddress("1.0.205.87", 8080));
130-
131-
HttpClient httpClient = HttpClient.newBuilder()
132-
.version(HttpClient.Version.HTTP_2)
133-
.followRedirects(HttpClient.Redirect.ALWAYS)
134-
.proxy(proxySelector)
135-
.connectTimeout(Duration.ofSeconds(10)) //10 seconds timeout
136-
.build();
137-
138126
//Create the Message Data object with the message we wish to send
139127
ChatCompletionMessageData messageData = ChatCompletionMessageData.create(message);
140128

@@ -149,7 +137,8 @@ private String exampleHttpClientProxy(String message) {
149137
//openAI.createChatCompletion().initialize();
150138
OpenAI openAI = OpenAI.builder()
151139
.setApiKey(System.getenv("OPEN_AI_API_KEY"))
152-
.setHttpClient(httpClient)
140+
.setProxy("1.0.205.87", 8080)
141+
.setTimeout(Duration.ofSeconds(10))
153142
.build();
154143

155144
//Create instance which will return as the API class that we specified in the enum or .class

src/main/java/examples/ExampleListModel.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,18 @@ private String communicate() {
5757
return getModels.map(ListModel::asJson).orElse(null);
5858
}
5959

60+
private String example2() {
61+
String modelName = "davinci";
62+
63+
OpenAI openAI = OpenAI.builder()
64+
.setApiKey(System.getenv("OPEN_AI_API_KEY"))
65+
.build();
66+
67+
//Call the ListModels API from OpenAI & create instance
68+
ListModel listModel = openAI.createInstance(ListModel.class, modelName);
69+
70+
//Return model as a JSON string
71+
return listModel.asJson();
72+
}
73+
6074
}

src/main/java/io/github/jetkai/openai/openai/OpenAIImpl.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,11 @@ private OpenAIImpl(OpenAIBuilderImpl builder) {
6666
this.translation = builder.translation;
6767
this.apiKey = builder.apiKey;
6868
this.organization = Objects.requireNonNullElse(builder.organization, "");
69+
6970
Duration httpClientTimeout = builder.httpClientTimeout;
7071
String proxyIp = builder.proxyIp;
7172
int proxyPort = builder.proxyPort;
73+
7274
this.httpClient = builder.httpClientTimeout != null
7375
? HttpClientInstance.customHttpClient(proxyIp, proxyPort, httpClientTimeout)
7476
: Objects.requireNonNullElse(builder.httpClient, HttpClientInstance.defaultHttpClient());
@@ -102,17 +104,18 @@ public <T> T createInstance(Class<T> clazz, Object data) {
102104
if (clazz == null) {
103105
return (T) this;
104106
}
105-
T instance;
106107
try {
107-
instance = clazz.getConstructor(data.getClass()).newInstance(data);
108+
Class<?> superClazz = data.getClass().getSuperclass();
109+
Class<?> dataClazz = superClazz == Object.class ? data.getClass() : superClazz;
110+
T instance = clazz.getConstructor(dataClazz).newInstance(data);
108111
if (instance instanceof OAPI) {
109112
((OAPI) instance).setOpenAI(this).initialize();
110113
}
114+
return instance;
111115
} catch (InstantiationException | IllegalAccessException
112116
| InvocationTargetException | NoSuchMethodException e) {
113117
throw new RuntimeException(e);
114118
}
115-
return instance;
116119
}
117120

118121
@SuppressWarnings("unchecked")

src/test/java/CreateChatCompletionTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import io.github.jetkai.openai.openai.OpenAI;
66
import org.junit.jupiter.api.Test;
77

8-
import java.io.IOException;
98
import java.time.Duration;
109
import java.util.ArrayList;
1110
import java.util.List;

0 commit comments

Comments
 (0)