Skip to content

Commit c186aea

Browse files
authored
chore: Reduce constructor visibility in OpenAI / SpringAI PR (#531)
* Reduce constructors * Update thresholds * Update javadoc and factory name
1 parent 35d89cb commit c186aea

File tree

5 files changed

+41
-15
lines changed

5 files changed

+41
-15
lines changed

foundation-models/openai/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@
3838
</scm>
3939
<properties>
4040
<project.rootdir>${project.basedir}/../../</project.rootdir>
41-
<coverage.complexity>71%</coverage.complexity>
41+
<coverage.complexity>70%</coverage.complexity>
4242
<coverage.line>80%</coverage.line>
4343
<coverage.instruction>76%</coverage.instruction>
4444
<coverage.branch>70%</coverage.branch>
45-
<coverage.method>76%</coverage.method>
45+
<coverage.method>75%</coverage.method>
4646
<coverage.class>84%</coverage.class>
4747
</properties>
4848
<dependencies>

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

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package com.sap.ai.sdk.foundationmodels.openai;
22

3-
import static lombok.AccessLevel.PUBLIC;
3+
import static lombok.AccessLevel.PACKAGE;
44

55
import com.google.common.annotations.Beta;
66
import com.sap.ai.sdk.foundationmodels.openai.generated.model.ChatCompletionMessageToolCall;
77
import com.sap.ai.sdk.foundationmodels.openai.generated.model.ChatCompletionMessageToolCallFunction;
88
import com.sap.ai.sdk.foundationmodels.openai.generated.model.ChatCompletionRequestAssistantMessage;
99
import com.sap.ai.sdk.foundationmodels.openai.generated.model.ChatCompletionRequestAssistantMessageContent;
1010
import com.sap.ai.sdk.foundationmodels.openai.generated.model.ToolCallType;
11+
import java.util.ArrayList;
1112
import java.util.Collections;
1213
import java.util.List;
1314
import javax.annotation.Nonnull;
@@ -28,7 +29,7 @@
2829
@Beta
2930
@Value
3031
@Accessors(fluent = true)
31-
@AllArgsConstructor(access = PUBLIC)
32+
@AllArgsConstructor(access = PACKAGE)
3233
public class OpenAiAssistantMessage implements OpenAiMessage {
3334

3435
/** The role associated with this message. */
@@ -52,12 +53,27 @@ public class OpenAiAssistantMessage implements OpenAiMessage {
5253
@Nonnull
5354
List<OpenAiToolCall> toolCalls;
5455

56+
/**
57+
* Creates a new assistant message with the given content and additional tool calls.
58+
*
59+
* @param toolCalls the additional tool calls to associate with the message.
60+
* @return a new assistant message with the given content and additional tool calls.
61+
* @since 1.10.0
62+
*/
63+
@Nonnull
64+
public OpenAiAssistantMessage withToolCalls(
65+
@Nonnull final List<? extends OpenAiToolCall> toolCalls) {
66+
final List<OpenAiToolCall> newToolCalls = new ArrayList<>(this.toolCalls);
67+
newToolCalls.addAll(toolCalls);
68+
return new OpenAiAssistantMessage(content, newToolCalls);
69+
}
70+
5571
/**
5672
* Creates a new assistant message with the given single message as text content.
5773
*
5874
* @param singleMessage the message.
5975
*/
60-
public OpenAiAssistantMessage(@Nonnull final String singleMessage) {
76+
OpenAiAssistantMessage(@Nonnull final String singleMessage) {
6177
this(
6278
new OpenAiMessageContent(List.of(new OpenAiTextItem(singleMessage))),
6379
Collections.emptyList());

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.google.common.annotations.Beta;
44
import javax.annotation.Nonnull;
5-
import lombok.AccessLevel;
65
import lombok.AllArgsConstructor;
76
import lombok.Value;
87

@@ -13,7 +12,7 @@
1312
*/
1413
@Beta
1514
@Value
16-
@AllArgsConstructor(access = AccessLevel.PUBLIC)
15+
@AllArgsConstructor(access = lombok.AccessLevel.PACKAGE)
1716
public class OpenAiFunctionCall implements OpenAiToolCall {
1817
/** The unique identifier for the function call. */
1918
@Nonnull String id;
Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,27 @@
11
package com.sap.ai.sdk.foundationmodels.openai;
22

33
import com.google.common.annotations.Beta;
4+
import javax.annotation.Nonnull;
45

56
/**
67
* Represents a tool called by an OpenAI model.
78
*
89
* @since 1.6.0
910
*/
1011
@Beta
11-
public sealed interface OpenAiToolCall permits OpenAiFunctionCall {}
12+
public sealed interface OpenAiToolCall permits OpenAiFunctionCall {
13+
/**
14+
* Creates a new instance of {@link OpenAiToolCall}.
15+
*
16+
* @param id The unique identifier for the tool call.
17+
* @param name The name of the tool to be called.
18+
* @param arguments The arguments for the tool call, encoded as a JSON string.
19+
* @return A new instance of {@link OpenAiToolCall}.
20+
* @since 1.10.0
21+
*/
22+
@Nonnull
23+
static OpenAiToolCall function(
24+
@Nonnull final String id, @Nonnull final String name, @Nonnull final String arguments) {
25+
return new OpenAiFunctionCall(id, name, arguments);
26+
}
27+
}

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,10 @@
22

33
import static org.springframework.ai.model.tool.ToolCallingChatOptions.isInternalToolExecutionEnabled;
44

5-
import com.sap.ai.sdk.foundationmodels.openai.OpenAiAssistantMessage;
65
import com.sap.ai.sdk.foundationmodels.openai.OpenAiChatCompletionRequest;
76
import com.sap.ai.sdk.foundationmodels.openai.OpenAiChatCompletionResponse;
87
import com.sap.ai.sdk.foundationmodels.openai.OpenAiClient;
9-
import com.sap.ai.sdk.foundationmodels.openai.OpenAiFunctionCall;
108
import com.sap.ai.sdk.foundationmodels.openai.OpenAiMessage;
11-
import com.sap.ai.sdk.foundationmodels.openai.OpenAiMessageContent;
12-
import com.sap.ai.sdk.foundationmodels.openai.OpenAiTextItem;
139
import com.sap.ai.sdk.foundationmodels.openai.OpenAiToolCall;
1410
import com.sap.ai.sdk.foundationmodels.openai.generated.model.ChatCompletionMessageToolCall;
1511
import com.sap.ai.sdk.foundationmodels.openai.generated.model.ChatCompletionResponseMessage;
@@ -86,10 +82,9 @@ private static void addAssistantMessage(
8682
return;
8783
}
8884
final Function<ToolCall, OpenAiToolCall> callTranslate =
89-
toolCall -> new OpenAiFunctionCall(toolCall.id(), toolCall.name(), toolCall.arguments());
90-
val content = new OpenAiMessageContent(List.of(new OpenAiTextItem(message.getText())));
85+
toolCall -> OpenAiToolCall.function(toolCall.id(), toolCall.name(), toolCall.arguments());
9186
val calls = message.getToolCalls().stream().map(callTranslate).toList();
92-
result.add(new OpenAiAssistantMessage(content, calls));
87+
result.add(OpenAiMessage.assistant(message.getText()).withToolCalls(calls));
9388
}
9489

9590
private static void addToolMessages(

0 commit comments

Comments
 (0)