Skip to content

Commit c06d592

Browse files
author
David Grieve
authored
Merge pull request #159 from dsgrieve/generic-client-type
Generic client type for OpenAiService
2 parents 4c62940 + 95ba956 commit c06d592

File tree

10 files changed

+26
-20
lines changed

10 files changed

+26
-20
lines changed

aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/OpenAiService.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
// Copyright (c) Microsoft. All rights reserved.
22
package com.microsoft.semantickernel.aiservices.openai;
33

4-
import com.azure.ai.openai.OpenAIAsyncClient;
54
import com.microsoft.semantickernel.services.AIService;
65
import javax.annotation.Nullable;
76

87
/**
98
* Provides OpenAI service.
109
*/
11-
public abstract class OpenAiService implements AIService {
10+
public abstract class OpenAiService<Client> implements AIService {
1211

13-
private final OpenAIAsyncClient client;
12+
private final Client client;
1413
@Nullable
1514
private final String serviceId;
1615
private final String modelId;
1716
private final String deploymentName;
1817

1918
protected OpenAiService(
20-
OpenAIAsyncClient client,
19+
Client client,
2120
@Nullable String serviceId,
2221
String modelId,
2322
String deploymentName) {
@@ -39,7 +38,7 @@ public String getServiceId() {
3938
return serviceId;
4039
}
4140

42-
protected OpenAIAsyncClient getClient() {
41+
protected Client getClient() {
4342
return client;
4443
}
4544

aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/audio/OpenAiAudioToTextService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
/**
1919
* Provides OpenAi implementation of audio to text service.
2020
*/
21-
public class OpenAiAudioToTextService extends OpenAiService implements AudioToTextService {
21+
public class OpenAiAudioToTextService extends OpenAiService<OpenAIAsyncClient> implements AudioToTextService {
2222

2323
private static final Logger LOGGER = LoggerFactory.getLogger(OpenAiAudioToTextService.class);
2424

aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/audio/OpenAiTextToAudioService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
/**
1818
* Provides OpenAi implementation of text to audio service.
1919
*/
20-
public class OpenAiTextToAudioService extends OpenAiService implements TextToAudioService {
20+
public class OpenAiTextToAudioService extends OpenAiService<OpenAIAsyncClient> implements TextToAudioService {
2121

2222
private static final Logger LOGGER = LoggerFactory.getLogger(OpenAiTextToAudioService.class);
2323

aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/chatcompletion/OpenAIChatCompletion.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
/**
8080
* OpenAI chat completion service.
8181
*/
82-
public class OpenAIChatCompletion extends OpenAiService implements ChatCompletionService {
82+
public class OpenAIChatCompletion extends OpenAiService<OpenAIAsyncClient> implements ChatCompletionService {
8383

8484
private static final Logger LOGGER = LoggerFactory.getLogger(OpenAIChatCompletion.class);
8585

@@ -1055,7 +1055,7 @@ static ChatRequestMessage getChatRequestMessage(
10551055
/**
10561056
* Builder for creating a new instance of {@link OpenAIChatCompletion}.
10571057
*/
1058-
public static class Builder extends OpenAiServiceBuilder<OpenAIChatCompletion, Builder> {
1058+
public static class Builder extends OpenAiServiceBuilder<OpenAIAsyncClient, OpenAIChatCompletion, Builder> {
10591059

10601060
@Override
10611061
public OpenAIChatCompletion build() {

aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/textcompletion/OpenAITextGenerationService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
/**
3131
* An OpenAI implementation of a {@link TextGenerationService}.
3232
*/
33-
public class OpenAITextGenerationService extends OpenAiService implements TextGenerationService {
33+
public class OpenAITextGenerationService extends OpenAiService<OpenAIAsyncClient> implements TextGenerationService {
3434

3535
private static final Logger LOGGER = LoggerFactory.getLogger(OpenAITextGenerationService.class);
3636

aiservices/openai/src/main/java/com/microsoft/semantickernel/aiservices/openai/textembedding/OpenAITextEmbeddingGenerationService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* An OpenAI implementation of a {@link TextEmbeddingGenerationService}.
2424
*
2525
*/
26-
public class OpenAITextEmbeddingGenerationService extends OpenAiService
26+
public class OpenAITextEmbeddingGenerationService extends OpenAiService<OpenAIAsyncClient>
2727
implements TextEmbeddingGenerationService {
2828
private static final Logger LOGGER = LoggerFactory
2929
.getLogger(OpenAITextEmbeddingGenerationService.class);
@@ -87,7 +87,7 @@ protected Mono<List<Embedding>> internalGenerateTextEmbeddingsAsync(List<String>
8787
* A builder for creating a {@link OpenAITextEmbeddingGenerationService}.
8888
*/
8989
public static class Builder extends
90-
OpenAiServiceBuilder<OpenAITextEmbeddingGenerationService, OpenAITextEmbeddingGenerationService.Builder> {
90+
OpenAiServiceBuilder<OpenAIAsyncClient, OpenAITextEmbeddingGenerationService, OpenAITextEmbeddingGenerationService.Builder> {
9191
private int dimensions = DEFAULT_DIMENSIONS;
9292

9393
/**

semantickernel-api/src/main/java/com/microsoft/semantickernel/services/audio/AudioToTextService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft. All rights reserved.
22
package com.microsoft.semantickernel.services.audio;
33

4+
import com.azure.ai.openai.OpenAIAsyncClient;
45
import com.microsoft.semantickernel.implementation.ServiceLoadUtil;
56
import com.microsoft.semantickernel.services.AIService;
67
import com.microsoft.semantickernel.services.openai.OpenAiServiceBuilder;
@@ -32,7 +33,7 @@ static Builder builder() {
3233
/**
3334
* Builder for the AudioToTextService.
3435
*/
35-
abstract class Builder extends OpenAiServiceBuilder<AudioToTextService, Builder> {
36+
abstract class Builder extends OpenAiServiceBuilder<OpenAIAsyncClient, AudioToTextService, Builder> {
3637

3738
}
3839
}

semantickernel-api/src/main/java/com/microsoft/semantickernel/services/audio/TextToAudioService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft. All rights reserved.
22
package com.microsoft.semantickernel.services.audio;
33

4+
import com.azure.ai.openai.OpenAIAsyncClient;
45
import com.microsoft.semantickernel.implementation.ServiceLoadUtil;
56
import com.microsoft.semantickernel.services.AIService;
67
import com.microsoft.semantickernel.services.openai.OpenAiServiceBuilder;
@@ -36,7 +37,7 @@ static Builder builder() {
3637
* Builder for the TextToAudioService.
3738
*/
3839
abstract class Builder extends
39-
OpenAiServiceBuilder<TextToAudioService, Builder> {
40+
OpenAiServiceBuilder<OpenAIAsyncClient, TextToAudioService, Builder> {
4041

4142
}
4243
}

semantickernel-api/src/main/java/com/microsoft/semantickernel/services/openai/OpenAiServiceBuilder.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
11
// Copyright (c) Microsoft. All rights reserved.
22
package com.microsoft.semantickernel.services.openai;
33

4-
import com.azure.ai.openai.OpenAIAsyncClient;
4+
import com.microsoft.semantickernel.services.AIService;
55
import com.microsoft.semantickernel.builders.SemanticKernelBuilder;
66
import javax.annotation.Nullable;
77

88
/**
99
* Builder for an OpenAI service.
10-
*/
11-
public abstract class OpenAiServiceBuilder<T, U extends OpenAiServiceBuilder<T, U>> implements
10+
* @param <C> The client type
11+
* @param <T> The service type
12+
* @param <U> The builder type
13+
*/
14+
public abstract class OpenAiServiceBuilder<C, T extends AIService, U extends OpenAiServiceBuilder<C, T, U>> implements
15+
1216
SemanticKernelBuilder<T> {
1317

1418
@Nullable
1519
protected String modelId;
1620
@Nullable
17-
protected OpenAIAsyncClient client;
21+
protected C client;
1822
@Nullable
1923
protected String serviceId;
2024
@Nullable
@@ -51,7 +55,7 @@ public U withDeploymentName(String deploymentName) {
5155
* @param client The OpenAI client
5256
* @return The builder
5357
*/
54-
public U withOpenAIAsyncClient(OpenAIAsyncClient client) {
58+
public U withOpenAIAsyncClient(C client) {
5559
this.client = client;
5660
return (U) this;
5761
}

semantickernel-api/src/main/java/com/microsoft/semantickernel/services/textcompletion/TextGenerationService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft. All rights reserved.
22
package com.microsoft.semantickernel.services.textcompletion;
33

4+
import com.azure.ai.openai.OpenAIAsyncClient;
45
import com.microsoft.semantickernel.Kernel;
56
import com.microsoft.semantickernel.implementation.ServiceLoadUtil;
67
import com.microsoft.semantickernel.orchestration.PromptExecutionSettings;
@@ -60,6 +61,6 @@ Flux<StreamingTextContent> getStreamingTextContentsAsync(
6061
/**
6162
* Builder for a TextGenerationService
6263
*/
63-
abstract class Builder extends OpenAiServiceBuilder<TextGenerationService, Builder> {
64+
abstract class Builder extends OpenAiServiceBuilder<OpenAIAsyncClient, TextGenerationService, Builder> {
6465
}
6566
}

0 commit comments

Comments
 (0)