Skip to content

Commit 4ef4b44

Browse files
committed
Add review suggestions
1 parent 4a3f363 commit 4ef4b44

File tree

6 files changed

+37
-21
lines changed

6 files changed

+37
-21
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
*/
2929
public class OpenAiSpringEmbeddingModel implements EmbeddingModel {
3030

31-
private final OpenAiClient client;
32-
private final MetadataMode metadataMode;
31+
@Nonnull private final OpenAiClient client;
32+
@Nonnull private final MetadataMode metadataMode;
3333

3434
/**
3535
* Constructs an {@code OpenAiSpringEmbeddingModel} with the specified {@link OpenAiClient} of

orchestration/src/main/java/com/sap/ai/sdk/orchestration/spring/OrchestrationSpringAiEmbeddingModel.java renamed to orchestration/src/main/java/com/sap/ai/sdk/orchestration/spring/OrchestrationSpringEmbeddingModel.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,30 +28,30 @@
2828
*/
2929
@Beta
3030
@RequiredArgsConstructor
31-
public class OrchestrationSpringAiEmbeddingModel implements EmbeddingModel {
31+
public class OrchestrationSpringEmbeddingModel implements EmbeddingModel {
3232

3333
/**
3434
* Default embedding options to provide model name and other parameters.
3535
*
3636
* <p>Can be overridden by options in the request.
3737
*
38-
* @see OrchestrationSpringAiEmbeddingModel#call(EmbeddingRequest)
38+
* @see OrchestrationSpringEmbeddingModel#call(EmbeddingRequest)
3939
*/
40-
private final EmbeddingOptions defaultOptions;
40+
@Nonnull private final EmbeddingOptions defaultOptions;
4141

4242
/** Client for interacting with the Orchestration SDK. */
43-
private final OrchestrationClient client;
43+
@Nonnull private final OrchestrationClient client;
4444

4545
/** Metadata mode to determine how document metadata is handled. */
46-
private final MetadataMode metadataMode;
46+
@Nonnull private final MetadataMode metadataMode;
4747

4848
/**
49-
* Constructs an instance with default options, a new {@link OrchestrationClient}, and {@link
50-
* MetadataMode#EMBED}.
49+
* Constructs an instance with default options, a new {@link OrchestrationClient}, and sets the
50+
* metadata mode to {@link MetadataMode#EMBED}.
5151
*
5252
* @param defaultOptions Default embedding options.
5353
*/
54-
public OrchestrationSpringAiEmbeddingModel(@Nonnull final EmbeddingOptions defaultOptions) {
54+
public OrchestrationSpringEmbeddingModel(@Nonnull final EmbeddingOptions defaultOptions) {
5555
this(defaultOptions, new OrchestrationClient(), MetadataMode.EMBED);
5656
}
5757

@@ -67,7 +67,8 @@ public OrchestrationSpringAiEmbeddingModel(@Nonnull final EmbeddingOptions defau
6767
@Nonnull
6868
public EmbeddingResponse call(@Nonnull final EmbeddingRequest request) {
6969
final var orchestrationRequest = createOrchestrationEmbeddingRequest(request);
70-
return createSpringAiEmbeddingResponse(client.embed(orchestrationRequest));
70+
final var orchestrationResponse = client.embed(orchestrationRequest);
71+
return createSpringAiEmbeddingResponse(orchestrationResponse);
7172
}
7273

7374
@Override
@@ -80,9 +81,8 @@ public float[] embed(@Nonnull final Document document) {
8081
@Nonnull
8182
public List<float[]> embed(@Nonnull final List<String> texts) {
8283
// Propagate defaultOptions instead of incomplete options in default method implementation
83-
return this.call(new EmbeddingRequest(texts, this.defaultOptions)).getResults().stream()
84-
.map(Embedding::getOutput)
85-
.toList();
84+
final var response = this.call(new EmbeddingRequest(texts, this.defaultOptions));
85+
return response.getResults().stream().map(Embedding::getOutput).toList();
8686
}
8787

8888
@Nonnull

orchestration/src/test/java/com/sap/ai/sdk/orchestration/spring/OrchestrationEmbeddingModelTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
class OrchestrationEmbeddingModelTest {
3232

3333
private static EmbeddingOptions options;
34-
private static OrchestrationSpringAiEmbeddingModel model;
34+
private static OrchestrationSpringEmbeddingModel model;
3535
private final Function<String, InputStream> fileLoader =
3636
filename -> Objects.requireNonNull(getClass().getClassLoader().getResourceAsStream(filename));
3737

@@ -41,7 +41,7 @@ void setup(WireMockRuntimeInfo server) {
4141

4242
final var destination = DefaultHttpDestination.builder(server.getHttpBaseUrl()).build();
4343
final var client = new OrchestrationClient(destination);
44-
model = new OrchestrationSpringAiEmbeddingModel(options, client, MetadataMode.EMBED);
44+
model = new OrchestrationSpringEmbeddingModel(options, client, MetadataMode.EMBED);
4545
}
4646

4747
@Test
@@ -55,7 +55,7 @@ void testEmbeddingRequest() throws IOException {
5555
assertThat(response.getResult().getOutput())
5656
.isEqualTo(
5757
new float[] {-0.003806071f, -0.01453408f, 0.037058588f, -0.012397106f, 0.0029582495f});
58-
assertThat(response.getMetadata().getModel()).isEqualTo("text-embedding-3-small");
58+
assertThat(response.getMetadata().getModel()).isEqualTo(options.getModel());
5959
assertThat(response.getMetadata().getUsage().getPromptTokens()).isEqualTo(6);
6060
assertThat(response.getMetadata().getUsage().getTotalTokens()).isEqualTo(6);
6161

sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/controllers/SpringAiOrchestrationController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ Object chatMemory(
158158
return response.getResult().getOutput().getText();
159159
}
160160

161-
@GetMapping("/embedding")
161+
@GetMapping("/embed/string")
162162
Object embedding(
163163
@Nullable @RequestParam(value = "format", required = false) final String format) {
164164
return service.embed("Hello, world!");

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99
import com.sap.ai.sdk.orchestration.AzureFilterThreshold;
1010
import com.sap.ai.sdk.orchestration.DpiMasking;
1111
import com.sap.ai.sdk.orchestration.OrchestrationClientException;
12+
import com.sap.ai.sdk.orchestration.OrchestrationEmbeddingModel;
1213
import com.sap.ai.sdk.orchestration.OrchestrationModuleConfig;
1314
import com.sap.ai.sdk.orchestration.model.DPIEntities;
1415
import com.sap.ai.sdk.orchestration.spring.OrchestrationChatModel;
1516
import com.sap.ai.sdk.orchestration.spring.OrchestrationChatOptions;
16-
import com.sap.ai.sdk.orchestration.spring.OrchestrationSpringAiEmbeddingModel;
17+
import com.sap.ai.sdk.orchestration.spring.OrchestrationSpringEmbeddingModel;
1718
import java.util.List;
1819
import java.util.Map;
1920
import java.util.Objects;
@@ -275,7 +276,9 @@ public Translation responseFormat() {
275276
@Nonnull
276277
public float[] embed(@Nonnull final String inputText) {
277278
val embedOptions =
278-
EmbeddingOptionsBuilder.builder().withModel("text-embedding-3-small").build();
279-
return new OrchestrationSpringAiEmbeddingModel(embedOptions).embed(inputText);
279+
EmbeddingOptionsBuilder.builder()
280+
.withModel(OrchestrationEmbeddingModel.TEXT_EMBEDDING_3_SMALL.name())
281+
.build();
282+
return new OrchestrationSpringEmbeddingModel(embedOptions).embed(inputText);
280283
}
281284
}

sample-code/spring-app/src/main/resources/static/index.html

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -714,6 +714,19 @@ <h2>Spring AI</h2>
714714
<h5 class="mb-1">Orchestration Integration</h5>
715715
</div>
716716
<ul class="list-group">
717+
<li class="list-group-item">
718+
<div class="info-tooltip">
719+
<button type="submit"
720+
formaction="/spring-ai-orchestration/embed/string"
721+
class="link-offset-2-hover link-underline link-underline-opacity-0 link-underline-opacity-75-hover endpoint">
722+
<code>/spring-ai-orchestration/embed/string</code>
723+
</button>
724+
<div class="tooltip-content">
725+
Embedding request to an embedding model through the Orchestration service
726+
with a simple prompt.
727+
</div>
728+
</div>
729+
</li>
717730
<li class="list-group-item">
718731
<div class="info-tooltip">
719732
<button type="submit"

0 commit comments

Comments
 (0)