Skip to content

Commit 0ba940a

Browse files
authored
Merge pull request #122 from IBM/project-space-override-order
Fix projectId and spaceId override order in service parameters
2 parents 5366f10 + 2513fb5 commit 0ba940a

File tree

8 files changed

+26
-28
lines changed

8 files changed

+26
-28
lines changed

modules/watsonx-ai/src/main/java/com/ibm/watsonx/ai/WatsonxService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,9 @@ protected ProjectService(Builder<?> builder) {
195195
}
196196

197197
protected ProjectSpace resolveProjectSpace(WatsonxParameters parameters) {
198+
if (isNull(parameters))
199+
return new ProjectSpace(projectId, spaceId);
200+
198201
return nonNull(parameters.getProjectId()) || nonNull(parameters.getSpaceId())
199202
? new ProjectSpace(parameters.getProjectId(), parameters.getSpaceId())
200203
: new ProjectSpace(projectId, spaceId);

modules/watsonx-ai/src/main/java/com/ibm/watsonx/ai/chat/ChatService.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import static java.util.Objects.nonNull;
99
import static java.util.Objects.requireNonNull;
1010
import static java.util.Objects.requireNonNullElse;
11-
import static java.util.Optional.ofNullable;
1211
import java.util.Arrays;
1312
import java.util.List;
1413
import java.util.Map;
@@ -82,9 +81,10 @@ public ChatResponse chat(ChatRequest chatRequest) {
8281
&& (isNull(chatRequest.getThinking()) || isNull(chatRequest.getThinking().getExtractionTags())))
8382
throw new IllegalArgumentException("Extraction tags are required when using control messages");
8483

84+
var projectSpace = resolveProjectSpace(parameters);
85+
var projectId = projectSpace.projectId();
86+
var spaceId = projectSpace.spaceId();
8587
var modelId = requireNonNullElse(parameters.getModelId(), this.modelId);
86-
var projectId = ofNullable(parameters.getProjectId()).orElse(this.projectId);
87-
var spaceId = ofNullable(parameters.getSpaceId()).orElse(this.spaceId);
8888
var timeout = requireNonNullElse(parameters.getTimeLimit(), this.timeout.toMillis());
8989

9090
Boolean includeReasoning = null;
@@ -143,9 +143,10 @@ public CompletableFuture<Void> chatStreaming(ChatRequest chatRequest, ChatHandle
143143
&& (isNull(chatRequest.getThinking()) || isNull(chatRequest.getThinking().getExtractionTags())))
144144
throw new IllegalArgumentException("Extraction tags are required when using control messages");
145145

146+
var projectSpace = resolveProjectSpace(parameters);
147+
var projectId = projectSpace.projectId();
148+
var spaceId = projectSpace.spaceId();
146149
var modelId = requireNonNullElse(parameters.getModelId(), this.modelId);
147-
var projectId = ofNullable(parameters.getProjectId()).orElse(this.projectId);
148-
var spaceId = ofNullable(parameters.getSpaceId()).orElse(this.spaceId);
149150
var timeout = requireNonNullElse(parameters.getTimeLimit(), this.timeout.toMillis());
150151

151152
Boolean includeReasoning = null;

modules/watsonx-ai/src/main/java/com/ibm/watsonx/ai/embedding/EmbeddingService.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import static java.util.Objects.nonNull;
88
import static java.util.Objects.requireNonNull;
99
import static java.util.Objects.requireNonNullElse;
10-
import static java.util.Optional.ofNullable;
1110
import java.util.ArrayList;
1211
import java.util.Arrays;
1312
import java.util.List;
@@ -87,16 +86,15 @@ public EmbeddingResponse embedding(List<String> inputs, EmbeddingParameters para
8786

8887
requireNonNull(inputs, "Inputs cannot be null");
8988

89+
ProjectSpace projectSpace = resolveProjectSpace(parameters);
90+
String projectId = projectSpace.projectId();
91+
String spaceId = projectSpace.spaceId();
9092
String modelId = this.modelId;
91-
String projectId = this.projectId;
92-
String spaceId = this.spaceId;
9393
String transactionId = null;
9494
Parameters requestParameters = null;
9595

9696
if (nonNull(parameters)) {
9797
modelId = requireNonNullElse(parameters.getModelId(), this.modelId);
98-
projectId = ofNullable(parameters.getProjectId()).orElse(this.projectId);
99-
spaceId = ofNullable(parameters.getSpaceId()).orElse(this.spaceId);
10098
transactionId = parameters.getTransactionId();
10199
requestParameters = parameters.toEmbeddingRequestParameters();
102100
}

modules/watsonx-ai/src/main/java/com/ibm/watsonx/ai/rerank/RerankService.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import static java.util.Objects.nonNull;
88
import static java.util.Objects.requireNonNull;
99
import static java.util.Objects.requireNonNullElse;
10-
import static java.util.Optional.ofNullable;
1110
import java.util.List;
1211
import com.ibm.watsonx.ai.WatsonxService.ModelService;
1312
import com.ibm.watsonx.ai.core.auth.AuthenticationProvider;
@@ -82,16 +81,15 @@ public RerankResponse rerank(String query, List<String> inputs, RerankParameters
8281
requireNonNull(query, "Query cannot be null");
8382
requireNonNull(inputs, "Inputs cannot be null");
8483

84+
ProjectSpace projectSpace = resolveProjectSpace(parameters);
85+
String projectId = projectSpace.projectId();
86+
String spaceId = projectSpace.spaceId();
8587
String modelId = this.modelId;
86-
String projectId = this.projectId;
87-
String spaceId = this.spaceId;
8888
String transactionId = null;
8989
Parameters requestParameters = null;
9090

9191
if (nonNull(parameters)) {
9292
modelId = requireNonNullElse(parameters.getModelId(), this.modelId);
93-
projectId = ofNullable(parameters.getProjectId()).orElse(this.projectId);
94-
spaceId = ofNullable(parameters.getSpaceId()).orElse(this.spaceId);
9593
transactionId = parameters.getTransactionId();
9694
requestParameters = parameters.toRerankRequestParameters();
9795
}

modules/watsonx-ai/src/main/java/com/ibm/watsonx/ai/textgeneration/TextGenerationService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,10 @@ public TextGenerationResponse generate(TextGenerationRequest textGenerationReque
6969
logger.warn("Prompt variables are not supported in Text Generation service");
7070
}
7171

72+
var projectSpace = resolveProjectSpace(parameters);
73+
var projectId = projectSpace.projectId();
74+
var spaceId = projectSpace.spaceId();
7275
var modelId = requireNonNullElse(parameters.getModelId(), this.modelId);
73-
var projectId = ofNullable(parameters.getProjectId()).orElse(this.projectId);
74-
var spaceId = ofNullable(parameters.getSpaceId()).orElse(this.spaceId);
7576
var timeout = requireNonNullElse(parameters.getTimeLimit(), this.timeout.toMillis());
7677
parameters.setTimeLimit(timeout);
7778

modules/watsonx-ai/src/main/java/com/ibm/watsonx/ai/timeseries/TimeSeriesService.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import static java.util.Objects.nonNull;
88
import static java.util.Objects.requireNonNull;
99
import static java.util.Objects.requireNonNullElse;
10-
import static java.util.Optional.ofNullable;
1110
import org.slf4j.Logger;
1211
import org.slf4j.LoggerFactory;
1312
import com.ibm.watsonx.ai.WatsonxService.ModelService;
@@ -79,16 +78,15 @@ public ForecastResponse forecast(TimeSeriesRequest request) {
7978
var data = request.getData();
8079
var parameters = request.getParameters();
8180

81+
ProjectSpace projectSpace = resolveProjectSpace(parameters);
82+
String projectId = projectSpace.projectId();
83+
String spaceId = projectSpace.spaceId();
8284
String modelId = this.modelId;
83-
String projectId = this.projectId;
84-
String spaceId = this.spaceId;
8585
String transactionId = null;
8686
Parameters requestParameters = null;
8787

8888
if (nonNull(parameters)) {
8989
modelId = requireNonNullElse(parameters.getModelId(), this.modelId);
90-
projectId = ofNullable(parameters.getProjectId()).orElse(this.projectId);
91-
spaceId = ofNullable(parameters.getSpaceId()).orElse(this.spaceId);
9290
transactionId = parameters.getTransactionId();
9391
requestParameters = parameters.toParameters();
9492
}

modules/watsonx-ai/src/main/java/com/ibm/watsonx/ai/tokenization/TokenizationService.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import static java.util.Objects.nonNull;
88
import static java.util.Objects.requireNonNull;
99
import static java.util.Objects.requireNonNullElse;
10-
import static java.util.Optional.ofNullable;
1110
import java.util.concurrent.CompletableFuture;
1211
import com.ibm.watsonx.ai.WatsonxService.ModelService;
1312
import com.ibm.watsonx.ai.core.auth.AuthenticationProvider;
@@ -106,15 +105,14 @@ public CompletableFuture<TokenizationResponse> asyncTokenize(String input, Token
106105
private TokenizationRequest buildTokenizationRequest(String input, TokenizationParameters parameters) {
107106
requireNonNull(input, "Input cannot be null");
108107

108+
ProjectSpace projectSpace = resolveProjectSpace(parameters);
109+
String projectId = projectSpace.projectId();
110+
String spaceId = projectSpace.spaceId();
109111
String modelId = this.modelId;
110-
String projectId = this.projectId;
111-
String spaceId = this.spaceId;
112112
Parameters requestParameters = null;
113113

114114
if (nonNull(parameters)) {
115115
modelId = requireNonNullElse(parameters.getModelId(), this.modelId);
116-
projectId = ofNullable(parameters.getProjectId()).orElse(this.projectId);
117-
spaceId = ofNullable(parameters.getSpaceId()).orElse(this.spaceId);
118116
requestParameters = parameters.toTokenizationRequestParameters();
119117
}
120118

modules/watsonx-ai/src/test/java/com/ibm/watsonx/ai/chat/ChatServiceTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ void text_chat() throws Exception {
285285
final String REQUEST = """
286286
{
287287
"model_id": "meta-llama/llama-3-8b-instruct",
288-
"project_id": "63dc4cf1-252f-424b-b52d-5cdd9814987f",
288+
"space_id": "space_id",
289289
"messages": [
290290
{
291291
"role": "system",
@@ -363,6 +363,7 @@ void text_chat() throws Exception {
363363
.timeLimit(Duration.ofMillis(1000))
364364
.maxCompletionTokens(100)
365365
.temperature(0.0)
366+
.spaceId("space_id")
366367
.build();
367368

368369
var chatResponse = chatService.chat(messages, parameters);

0 commit comments

Comments
 (0)