Skip to content

Commit 0241c93

Browse files
committed
Refactor Amazon Bedrock builder methods
- Rename builder methods by removing `with` prefix - Deprecate the existing methods and mark them for removal post M6
1 parent 2f14597 commit 0241c93

File tree

8 files changed

+67
-18
lines changed

8 files changed

+67
-18
lines changed

models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public class BedrockTitanChatModel implements ChatModel, StreamingChatModel {
5454
private final BedrockTitanChatOptions defaultOptions;
5555

5656
public BedrockTitanChatModel(TitanChatBedrockApi chatApi) {
57-
this(chatApi, BedrockTitanChatOptions.builder().withTemperature(0.8).build());
57+
this(chatApi, BedrockTitanChatOptions.builder().temperature(0.8).build());
5858
}
5959

6060
public BedrockTitanChatModel(TitanChatBedrockApi chatApi, BedrockTitanChatOptions defaultOptions) {

models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanChatOptions.java

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ public static Builder builder() {
6262
}
6363

6464
public static BedrockTitanChatOptions fromOptions(BedrockTitanChatOptions fromOptions) {
65-
return builder().withTemperature(fromOptions.getTemperature())
66-
.withTopP(fromOptions.getTopP())
67-
.withMaxTokenCount(fromOptions.getMaxTokenCount())
68-
.withStopSequences(fromOptions.getStopSequences())
65+
return builder().temperature(fromOptions.getTemperature())
66+
.topP(fromOptions.getTopP())
67+
.maxTokenCount(fromOptions.getMaxTokenCount())
68+
.stopSequences(fromOptions.getStopSequences())
6969
.build();
7070
}
7171

@@ -148,21 +148,57 @@ public static class Builder {
148148

149149
private BedrockTitanChatOptions options = new BedrockTitanChatOptions();
150150

151+
public Builder temperature(Double temperature) {
152+
this.options.temperature = temperature;
153+
return this;
154+
}
155+
156+
public Builder topP(Double topP) {
157+
this.options.topP = topP;
158+
return this;
159+
}
160+
161+
public Builder maxTokenCount(Integer maxTokenCount) {
162+
this.options.maxTokenCount = maxTokenCount;
163+
return this;
164+
}
165+
166+
public Builder stopSequences(List<String> stopSequences) {
167+
this.options.stopSequences = stopSequences;
168+
return this;
169+
}
170+
171+
/**
172+
* @deprecated see {@link #temperature(Double)} instead.
173+
*/
174+
@Deprecated(forRemoval = true, since = "1.0.0-M6")
151175
public Builder withTemperature(Double temperature) {
152176
this.options.temperature = temperature;
153177
return this;
154178
}
155179

180+
/**
181+
* @deprecated see {@link #topP(Double)} instead.
182+
*/
183+
@Deprecated(forRemoval = true, since = "1.0.0-M6")
156184
public Builder withTopP(Double topP) {
157185
this.options.topP = topP;
158186
return this;
159187
}
160188

189+
/**
190+
* @deprecated see {@link #maxTokenCount(Integer)} instead.
191+
*/
192+
@Deprecated(forRemoval = true, since = "1.0.0-M6")
161193
public Builder withMaxTokenCount(Integer maxTokenCount) {
162194
this.options.maxTokenCount = maxTokenCount;
163195
return this;
164196
}
165197

198+
/**
199+
* @deprecated see {@link #stopSequences(List)} instead.
200+
*/
201+
@Deprecated(forRemoval = true, since = "1.0.0-M6")
166202
public Builder withStopSequences(List<String> stopSequences) {
167203
this.options.stopSequences = stopSequences;
168204
return this;

models/spring-ai-bedrock/src/main/java/org/springframework/ai/bedrock/titan/BedrockTitanEmbeddingOptions.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.springframework.ai.bedrock.titan;
1818

19+
import java.util.List;
20+
1921
import com.fasterxml.jackson.annotation.JsonIgnore;
2022
import com.fasterxml.jackson.annotation.JsonInclude;
2123
import com.fasterxml.jackson.annotation.JsonInclude.Include;
@@ -66,6 +68,17 @@ public static class Builder {
6668

6769
private BedrockTitanEmbeddingOptions options = new BedrockTitanEmbeddingOptions();
6870

71+
public Builder inputType(InputType inputType) {
72+
Assert.notNull(inputType, "input type can not be null.");
73+
74+
this.options.setInputType(inputType);
75+
return this;
76+
}
77+
78+
/**
79+
* @deprecated see {@link #inputType(InputType)} (List)} instead.
80+
*/
81+
@Deprecated(forRemoval = true, since = "1.0.0-M6")
6982
public Builder withInputType(InputType inputType) {
7083
Assert.notNull(inputType, "input type can not be null.");
7184

models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/jurassic2/BedrockAi21Jurassic2ChatModelIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ public BedrockAi21Jurassic2ChatModel bedrockAi21Jurassic2ChatModel(
171171
BedrockAi21Jurassic2ChatOptions.builder()
172172
.temperature(0.5)
173173
.maxTokens(500)
174-
// .withTopP(0.9)
174+
// .topP(0.9)
175175
.build());
176176
}
177177

models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanChatModelCreateRequestTests.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ public void createRequestWithChatOptions() {
4444

4545
var model = new BedrockTitanChatModel(this.api,
4646
BedrockTitanChatOptions.builder()
47-
.withTemperature(66.6)
48-
.withTopP(0.66)
49-
.withMaxTokenCount(666)
50-
.withStopSequences(List.of("stop1", "stop2"))
47+
.temperature(66.6)
48+
.topP(0.66)
49+
.maxTokenCount(666)
50+
.stopSequences(List.of("stop1", "stop2"))
5151
.build());
5252

5353
var request = model.createRequest(new Prompt("Test message content"));
@@ -60,10 +60,10 @@ public void createRequestWithChatOptions() {
6060

6161
request = model.createRequest(new Prompt("Test message content",
6262
BedrockTitanChatOptions.builder()
63-
.withTemperature(99.9)
64-
.withTopP(0.99)
65-
.withMaxTokenCount(999)
66-
.withStopSequences(List.of("stop3", "stop4"))
63+
.temperature(99.9)
64+
.topP(0.99)
65+
.maxTokenCount(999)
66+
.stopSequences(List.of("stop3", "stop4"))
6767
.build()
6868

6969
));

models/spring-ai-bedrock/src/test/java/org/springframework/ai/bedrock/titan/BedrockTitanEmbeddingModelIT.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class BedrockTitanEmbeddingModelIT {
5151
void singleEmbedding() {
5252
assertThat(this.embeddingModel).isNotNull();
5353
EmbeddingResponse embeddingResponse = this.embeddingModel.call(new EmbeddingRequest(List.of("Hello World"),
54-
BedrockTitanEmbeddingOptions.builder().withInputType(InputType.TEXT).build()));
54+
BedrockTitanEmbeddingOptions.builder().inputType(InputType.TEXT).build()));
5555
assertThat(embeddingResponse.getResults()).hasSize(1);
5656
assertThat(embeddingResponse.getResults().get(0).getOutput()).isNotEmpty();
5757
assertThat(this.embeddingModel.dimensions()).isEqualTo(1024);
@@ -65,7 +65,7 @@ void imageEmbedding() throws IOException {
6565

6666
EmbeddingResponse embeddingResponse = this.embeddingModel
6767
.call(new EmbeddingRequest(List.of(Base64.getEncoder().encodeToString(image)),
68-
BedrockTitanEmbeddingOptions.builder().withInputType(InputType.IMAGE).build()));
68+
BedrockTitanEmbeddingOptions.builder().inputType(InputType.IMAGE).build()));
6969
assertThat(embeddingResponse.getResults()).hasSize(1);
7070
assertThat(embeddingResponse.getResults().get(0).getOutput()).isNotEmpty();
7171
assertThat(this.embeddingModel.dimensions()).isEqualTo(1024);

spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/anthropic3/BedrockAnthropic3ChatProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public class BedrockAnthropic3ChatProperties {
5151
.maxTokens(300)
5252
.topK(10)
5353
.anthropicVersion(Anthropic3ChatBedrockApi.DEFAULT_ANTHROPIC_VERSION)
54-
// .withStopSequences(List.of("\n\nHuman:"))
54+
// .stopSequences(List.of("\n\nHuman:"))
5555
.build();
5656

5757
public boolean isEnabled() {

spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/bedrock/titan/BedrockTitanChatProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class BedrockTitanChatProperties {
4343
private String model = TitanChatModel.TITAN_TEXT_EXPRESS_V1.id();
4444

4545
@NestedConfigurationProperty
46-
private BedrockTitanChatOptions options = BedrockTitanChatOptions.builder().withTemperature(0.7).build();
46+
private BedrockTitanChatOptions options = BedrockTitanChatOptions.builder().temperature(0.7).build();
4747

4848
public boolean isEnabled() {
4949
return this.enabled;

0 commit comments

Comments
 (0)