Skip to content

Commit 66fe024

Browse files
committed
Switch to deployment
1 parent 1335c6f commit 66fe024

File tree

3 files changed

+21
-13
lines changed

3 files changed

+21
-13
lines changed

orchestration/src/main/java/com/sap/ai/sdk/orchestration/OrchestrationClient.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.fasterxml.jackson.core.JsonProcessingException;
99
import com.fasterxml.jackson.databind.ObjectMapper;
1010
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
11+
import com.sap.ai.sdk.core.AiCoreDeployment;
1112
import com.sap.ai.sdk.core.AiCoreService;
1213
import com.sap.ai.sdk.orchestration.client.model.CompletionPostRequest;
1314
import com.sap.ai.sdk.orchestration.client.model.CompletionPostResponse;
@@ -18,9 +19,9 @@
1819
import io.vavr.NotImplementedError;
1920
import java.io.IOException;
2021
import java.util.NoSuchElementException;
22+
import java.util.function.Supplier;
2123
import java.util.stream.Stream;
2224
import javax.annotation.Nonnull;
23-
import lombok.RequiredArgsConstructor;
2425
import lombok.experimental.Delegate;
2526
import lombok.extern.slf4j.Slf4j;
2627
import lombok.val;
@@ -36,7 +37,6 @@
3637
* OrchestrationPrompt} will take precedence upon execution.
3738
*/
3839
@Slf4j
39-
@RequiredArgsConstructor
4040
public class OrchestrationClient implements OrchestrationConfig<OrchestrationClient> {
4141
static final ObjectMapper JACKSON;
4242

@@ -55,13 +55,23 @@ public class OrchestrationClient implements OrchestrationConfig<OrchestrationCli
5555
private final DefaultOrchestrationConfig<OrchestrationClient> clientConfig =
5656
DefaultOrchestrationConfig.asDelegateFor(this);
5757

58-
@Nonnull private final AiCoreService service;
58+
@Nonnull private final Supplier<AiCoreDeployment> deployment;
5959

6060
private interface IDelegate extends OrchestrationConfig<OrchestrationClient> {}
6161

6262
/** Default constructor. */
6363
public OrchestrationClient() {
64-
service = new AiCoreService();
64+
deployment = () -> new AiCoreService().forDeploymentByScenario("orchestration");
65+
}
66+
67+
/**
68+
* Constructor with a custom deployment, allowing for a custom resource group or otherwise
69+
* specific deployment ID.
70+
*
71+
* @param deployment The specific {@link AiCoreDeployment} to use.
72+
*/
73+
public OrchestrationClient(@Nonnull final AiCoreDeployment deployment) {
74+
this.deployment = () -> deployment;
6575
}
6676

6777
/**
@@ -149,12 +159,14 @@ public Stream<String> streamChatCompletionDelta(@Nonnull final OrchestrationProm
149159
* }
150160
* }</pre>
151161
*
162+
* <p>Alternatively, you can call this method directly with a fully custom request object.
163+
*
152164
* @param request The request DTO to send to orchestration.
153165
* @return The response DTO from orchestration.
154166
* @throws OrchestrationClientException If the request fails.
155167
*/
156168
@Nonnull
157-
protected CompletionPostResponse executeRequest(@Nonnull final CompletionPostRequest request)
169+
public CompletionPostResponse executeRequest(@Nonnull final CompletionPostRequest request)
158170
throws OrchestrationClientException {
159171
final BasicClassicHttpRequest postRequest = new HttpPost("/completion");
160172
try {
@@ -172,7 +184,7 @@ protected CompletionPostResponse executeRequest(@Nonnull final CompletionPostReq
172184
@Nonnull
173185
CompletionPostResponse executeRequest(@Nonnull final BasicClassicHttpRequest request) {
174186
try {
175-
val destination = service.forDeploymentByScenario("orchestration").destination();
187+
val destination = deployment.get().destination();
176188
log.debug("Using destination {} to connect to orchestration service", destination);
177189
val client = ApacheHttpClient5Accessor.getHttpClient(destination);
178190
return client.execute(

orchestration/src/test/java/com/sap/ai/sdk/orchestration/OrchestrationClientTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import static org.mockito.Mockito.verify;
1010
import static org.mockito.Mockito.when;
1111

12-
import com.sap.ai.sdk.core.AiCoreService;
12+
import com.sap.ai.sdk.core.AiCoreDeployment;
1313
import com.sap.ai.sdk.orchestration.client.model.ChatMessage;
1414
import com.sap.ai.sdk.orchestration.client.model.CompletionPostResponse;
1515
import com.sap.ai.sdk.orchestration.client.model.LLMChoice;
@@ -28,7 +28,7 @@ class OrchestrationClientTest {
2828

2929
@BeforeEach
3030
void setup() {
31-
var mock = mock(AiCoreService.class);
31+
var mock = mock(AiCoreDeployment.class);
3232
client = spy(new OrchestrationClient(mock).withLlmConfig(LLM_CONFIG));
3333
}
3434

orchestration/src/test/java/com/sap/ai/sdk/orchestration/OrchestrationResponseHandlerTest.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@
88
import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
99
import static org.assertj.core.api.Assertions.assertThat;
1010
import static org.assertj.core.api.Assertions.assertThatThrownBy;
11-
import static org.mockito.ArgumentMatchers.any;
1211
import static org.mockito.Mockito.mock;
1312
import static org.mockito.Mockito.when;
1413

1514
import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo;
1615
import com.github.tomakehurst.wiremock.junit5.WireMockTest;
1716
import com.sap.ai.sdk.core.AiCoreDeployment;
18-
import com.sap.ai.sdk.core.AiCoreService;
1917
import com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5Accessor;
2018
import com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5Cache;
2119
import com.sap.cloud.sdk.cloudplatform.connectivity.DefaultHttpDestination;
@@ -37,11 +35,9 @@ class OrchestrationResponseHandlerTest {
3735
@BeforeEach
3836
void setup(WireMockRuntimeInfo server) {
3937
var destination = DefaultHttpDestination.builder(server.getHttpBaseUrl()).build();
40-
var mockService = mock(AiCoreService.class);
4138
var mockDeployment = mock(AiCoreDeployment.class);
42-
when(mockService.forDeploymentByScenario(any())).thenReturn(mockDeployment);
4339
when(mockDeployment.destination()).thenReturn(destination);
44-
client = new OrchestrationClient(mockService).withLlmConfig(LLM_CONFIG);
40+
client = new OrchestrationClient(mockDeployment).withLlmConfig(LLM_CONFIG);
4541
ApacheHttpClient5Accessor.setHttpClientCache(ApacheHttpClient5Cache.DISABLED);
4642
}
4743

0 commit comments

Comments
 (0)