Skip to content

Commit b946c5c

Browse files
committed
Move from static factory to constructor based initialization in OpenAiPrompt
1 parent 9b7ad42 commit b946c5c

File tree

5 files changed

+19
-38
lines changed

5 files changed

+19
-38
lines changed

foundation-models/openai/src/main/java/com/sap/ai/sdk/foundationmodels/openai/OpenAiChatCompletionPrompt.java

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,15 @@ public class OpenAiChatCompletionPrompt {
1515

1616
@Nonnull private final List<String> stop = new ArrayList<>();
1717

18-
private OpenAiChatCompletionPrompt(@Nonnull final List<OpenAiMessage> messages) {
19-
this.messages.addAll(messages);
20-
}
21-
2218
/**
2319
* Creates an OpenAiChatCompletionPrompt with a single message.
2420
*
2521
* @param message the message to be added to the prompt
2622
* @return a new OpenAiChatCompletionPrompt instance
2723
*/
2824
@Nonnull
29-
public static OpenAiChatCompletionPrompt create(@Nonnull final String message) {
30-
return create(OpenAiMessage.user(message));
25+
public OpenAiChatCompletionPrompt(@Nonnull final String message) {
26+
messages.add(OpenAiMessage.user(message));
3127
}
3228

3329
/**
@@ -38,25 +34,10 @@ public static OpenAiChatCompletionPrompt create(@Nonnull final String message) {
3834
* @return a new OpenAiChatCompletionPrompt instance
3935
*/
4036
@Nonnull
41-
public static OpenAiChatCompletionPrompt create(
37+
public OpenAiChatCompletionPrompt(
4238
@Nonnull final OpenAiMessage message, @Nonnull final OpenAiMessage... messages) {
43-
final var messagesList = new ArrayList<OpenAiMessage>();
44-
45-
messagesList.add(message);
46-
messagesList.addAll(Arrays.asList(messages));
47-
48-
return create(messagesList);
49-
}
50-
51-
/**
52-
* Creates an OpenAiChatCompletionPrompt with a list of messages.
53-
*
54-
* @param messages the list of messages to be added to the prompt
55-
* @return a new OpenAiChatCompletionPrompt instance
56-
*/
57-
@Nonnull
58-
public static OpenAiChatCompletionPrompt create(@Nonnull final List<OpenAiMessage> messages) {
59-
return new OpenAiChatCompletionPrompt(messages);
39+
this.messages.add(message);
40+
this.messages.addAll(Arrays.asList(messages));
6041
}
6142

6243
/**

foundation-models/openai/src/main/java/com/sap/ai/sdk/foundationmodels/openai/OpenAiClient.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,8 @@ public OpenAiChatCompletionOutput chatCompletion(@Nonnull final String prompt)
178178

179179
final var openAiPrompt =
180180
(systemPrompt != null)
181-
? OpenAiChatCompletionPrompt.create(systemPrompt, userPrompt)
182-
: OpenAiChatCompletionPrompt.create(userPrompt);
181+
? new OpenAiChatCompletionPrompt(systemPrompt, userPrompt)
182+
: new OpenAiChatCompletionPrompt(userPrompt);
183183

184184
return chatCompletion(
185185
toCreateChatCompletionRequest(openAiPrompt, new OpenAiChatCompletionConfig()));
@@ -261,8 +261,8 @@ public Stream<String> streamChatCompletion(@Nonnull final String prompt)
261261

262262
final var openAiPrompt =
263263
systemPrompt != null
264-
? OpenAiChatCompletionPrompt.create(systemPrompt, userPrompt)
265-
: OpenAiChatCompletionPrompt.create(userPrompt);
264+
? new OpenAiChatCompletionPrompt(systemPrompt, userPrompt)
265+
: new OpenAiChatCompletionPrompt(userPrompt);
266266

267267
return streamChatCompletionDeltas(
268268
toCreateChatCompletionRequest(openAiPrompt, new OpenAiChatCompletionConfig()))

foundation-models/openai/src/test/java/com/sap/ai/sdk/foundationmodels/openai/OpenAiClientTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@ void reset() {
8080

8181
private static Runnable[] errorHandlingCalls() {
8282
return new Runnable[] {
83-
() -> client.chatCompletion(OpenAiChatCompletionPrompt.create("")),
83+
() -> client.chatCompletion(new OpenAiChatCompletionPrompt("")),
8484
() ->
8585
client
86-
.streamChatCompletionDeltas(OpenAiChatCompletionPrompt.create(""))
86+
.streamChatCompletionDeltas(new OpenAiChatCompletionPrompt(""))
8787
// the stream needs to be consumed to parse the response
8888
.forEach(System.out::println)
8989
};
@@ -94,7 +94,7 @@ private static Callable<?>[] chatCompletionCalls() {
9494
() -> {
9595
final var systemMessage = OpenAiMessage.system("You are a helpful AI");
9696
final var userMessage = OpenAiMessage.user("Hello World! Why is this phrase so famous?");
97-
final var prompt = OpenAiChatCompletionPrompt.create(systemMessage, userMessage);
97+
final var prompt = new OpenAiChatCompletionPrompt(systemMessage, userMessage);
9898
return client.chatCompletion(prompt);
9999
},
100100
() ->
@@ -181,22 +181,22 @@ void chatCompletionErrorHandling(@Nonnull final Runnable request) {
181181
@Test
182182
void apiVersion() {
183183
stubFor(post(anyUrl()).willReturn(okJson("{}")));
184-
Try.of(() -> client.chatCompletion(OpenAiChatCompletionPrompt.create("")));
184+
Try.of(() -> client.chatCompletion(new OpenAiChatCompletionPrompt("")));
185185

186186
verify(
187187
exactly(1),
188188
postRequestedFor(anyUrl()).withQueryParam("api-version", equalTo("2024-02-01")));
189189

190190
Try.of(
191191
() ->
192-
client.withApiVersion("fooBar").chatCompletion(OpenAiChatCompletionPrompt.create("")));
192+
client.withApiVersion("fooBar").chatCompletion(new OpenAiChatCompletionPrompt("")));
193193
verify(exactly(1), postRequestedFor(anyUrl()).withQueryParam("api-version", equalTo("fooBar")));
194194

195195
assertThat(client)
196196
.describedAs(
197197
"withApiVersion should return a new object, the sut object should remain unchanged")
198198
.isNotSameAs(client.withApiVersion("fooBar"));
199-
Try.of(() -> client.chatCompletion(OpenAiChatCompletionPrompt.create("")));
199+
Try.of(() -> client.chatCompletion(new OpenAiChatCompletionPrompt("")));
200200
verify(
201201
exactly(2),
202202
postRequestedFor(anyUrl()).withQueryParam("api-version", equalTo("2024-02-01")));
@@ -453,7 +453,7 @@ void streamChatCompletionDeltasErrorHandling() throws IOException {
453453
doReturn(mockResponse).when(httpClient).executeOpen(any(), any(), any());
454454

455455
final var prompt =
456-
OpenAiChatCompletionPrompt.create(
456+
new OpenAiChatCompletionPrompt(
457457
"Can you give me the first 100 numbers of the Fibonacci sequence?");
458458

459459
try (Stream<OpenAiChatCompletionDelta> stream = client.streamChatCompletionDeltas(prompt)) {
@@ -483,7 +483,7 @@ void streamChatCompletionDeltas() throws IOException {
483483
doReturn(mockResponse).when(httpClient).executeOpen(any(), any(), any());
484484

485485
final var prompt =
486-
OpenAiChatCompletionPrompt.create(
486+
new OpenAiChatCompletionPrompt(
487487
"Can you give me the first 100 numbers of the Fibonacci sequence?");
488488

489489
try (Stream<OpenAiChatCompletionDelta> stream = client.streamChatCompletionDeltas(prompt)) {

sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/services/OpenAiService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ public OpenAiChatCompletionOutput chatCompletionTools(@Nonnull final String desc
149149
var config = new OpenAiChatCompletionConfig().tools(List.of(tool)).toolChoice(toolChoice);
150150

151151
var prompt =
152-
OpenAiChatCompletionPrompt.create(
152+
new OpenAiChatCompletionPrompt(
153153
"A pair of rabbits is placed in a field. Each month, every pair produces one new pair, starting from the second month. How many rabbits will there be after 12 months?");
154154

155155
return OpenAiClient.forModel(GPT_35_TURBO).chatCompletion(prompt, config);

sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/OpenAiTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ void chatCompletionImage() {
4747
@Test
4848
void streamChatCompletion() {
4949
final var userMessage = OpenAiMessage.user("Who is the prettiest?");
50-
final var prompt = OpenAiChatCompletionPrompt.create(userMessage);
50+
final var prompt = new OpenAiChatCompletionPrompt(userMessage);
5151

5252
final var totalOutput = new AtomicReference<CompletionUsage>();
5353
final var filledDeltaCount = new AtomicInteger(0);

0 commit comments

Comments
 (0)