Skip to content

Commit d7ea81c

Browse files
committed
Remove enum and remove redundant test
1 parent 8f3b16e commit d7ea81c

File tree

3 files changed

+19
-197
lines changed

3 files changed

+19
-197
lines changed

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

Lines changed: 8 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.sap.ai.sdk.orchestration;
22

3-
import static com.sap.ai.sdk.orchestration.OrchestrationEmbeddingRequest.TokenType.DOCUMENT;
4-
import static com.sap.ai.sdk.orchestration.OrchestrationEmbeddingRequest.TokenType.QUERY;
5-
import static com.sap.ai.sdk.orchestration.OrchestrationEmbeddingRequest.TokenType.TEXT;
3+
import static lombok.AccessLevel.NONE;
64
import static lombok.AccessLevel.PRIVATE;
75

86
import com.google.common.annotations.Beta;
@@ -19,7 +17,6 @@
1917
import javax.annotation.Nullable;
2018
import lombok.AllArgsConstructor;
2119
import lombok.Getter;
22-
import lombok.RequiredArgsConstructor;
2320
import lombok.Value;
2421
import lombok.With;
2522
import lombok.experimental.Tolerate;
@@ -47,8 +44,9 @@ public class OrchestrationEmbeddingRequest {
4744

4845
/** Optional token type classification to optimize embedding generation. */
4946
@With(value = PRIVATE)
47+
@Getter(NONE)
5048
@Nullable
51-
TokenType tokenType;
49+
EmbeddingsInput.TypeEnum tokenType;
5250

5351
/**
5452
* Create an embedding request using fluent API starting with model selection.
@@ -113,7 +111,7 @@ public OrchestrationEmbeddingRequest withMasking(
113111
*/
114112
@Nonnull
115113
public OrchestrationEmbeddingRequest asDocument() {
116-
return withTokenType(DOCUMENT);
114+
return withTokenType(EmbeddingsInput.TypeEnum.DOCUMENT);
117115
}
118116

119117
/**
@@ -123,7 +121,7 @@ public OrchestrationEmbeddingRequest asDocument() {
123121
*/
124122
@Nonnull
125123
public OrchestrationEmbeddingRequest asText() {
126-
return withTokenType(TEXT);
124+
return withTokenType(EmbeddingsInput.TypeEnum.TEXT);
127125
}
128126

129127
/**
@@ -133,44 +131,24 @@ public OrchestrationEmbeddingRequest asText() {
133131
*/
134132
@Nonnull
135133
public OrchestrationEmbeddingRequest asQuery() {
136-
return withTokenType(QUERY);
134+
return withTokenType(EmbeddingsInput.TypeEnum.QUERY);
137135
}
138136

139137
@Nonnull
140138
EmbeddingsPostRequest createEmbeddingsPostRequest() {
141139

142-
final var input = EmbeddingsInput.create().text(EmbeddingsInputText.create(tokens));
140+
final var input =
141+
EmbeddingsInput.create().text(EmbeddingsInputText.create(tokens)).type(tokenType);
143142
final var embeddingsModelConfig =
144143
EmbeddingsModelConfig.create().model(model.createEmbeddingsModelDetails());
145144
final var modules =
146145
EmbeddingsOrchestrationConfig.create()
147146
.modules(EmbeddingsModuleConfigs.create().embeddings(embeddingsModelConfig));
148147

149-
if (tokenType != null) {
150-
input.setType(EmbeddingsInput.TypeEnum.fromValue(tokenType.getValue()));
151-
}
152148
if (masking != null) {
153149
final var dpiConfigs = masking.stream().map(MaskingProvider::createConfig).toList();
154150
modules.getModules().setMasking(MaskingModuleConfigProviders.create().providers(dpiConfigs));
155151
}
156152
return EmbeddingsPostRequest.create().config(modules).input(input);
157153
}
158-
159-
/**
160-
* Token type classification for optimizing embedding generation.
161-
*
162-
* <p>Token types may influence how the embedding model processes and represents the input text.
163-
*/
164-
@Getter
165-
@RequiredArgsConstructor
166-
public enum TokenType {
167-
/** For document content. */
168-
DOCUMENT("document"),
169-
/** For general text (default). */
170-
TEXT("text"),
171-
/** For search queries. */
172-
QUERY("query");
173-
174-
private final String value;
175-
}
176154
}

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ void testEmbeddingRequest() {
123123
assertThat(response.getOriginalResponse().getIntermediateResults().getInputMasking().getData())
124124
.isEqualTo(
125125
Map.of("masked_input", List.of("Hi SAP Orchestration Service", "I am MASKED_PERSON")));
126+
126127
final var finalResult = response.getOriginalResponse().getFinalResult();
127128
assertThat(finalResult.getModel()).isEqualTo("text-embedding-3-small");
128-
129129
assertThat(finalResult.getUsage().getPromptTokens()).isEqualTo(11);
130130
assertThat(finalResult.getUsage().getTotalTokens()).isEqualTo(11);
131131
assertThat(finalResult.getObject()).isEqualTo(LIST);
@@ -138,6 +138,16 @@ void testEmbeddingRequest() {
138138
assertThat(embeddingData.getIndex()).isIn(0, 1);
139139
});
140140

141+
final var moduleResults = response.getOriginalResponse().getIntermediateResults();
142+
assertThat(moduleResults).isNotNull();
143+
assertThat(moduleResults.getInputMasking()).isNotNull();
144+
assertThat(moduleResults.getInputMasking().getMessage())
145+
.isEqualTo("Embedding input is masked successfully.");
146+
assertThat(moduleResults.getInputMasking().getData()).isNotNull();
147+
assertThat(moduleResults.getInputMasking().getData())
148+
.isEqualTo(
149+
Map.of("masked_input", List.of("Hi SAP Orchestration Service", "I am MASKED_PERSON")));
150+
141151
try (var inputStream = fileLoader.apply("embeddingRequest.json")) {
142152
var requestJson = new String(inputStream.readAllBytes());
143153
verify(

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

Lines changed: 0 additions & 166 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
1313
import static com.github.tomakehurst.wiremock.client.WireMock.serverError;
1414
import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
15-
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
1615
import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
1716
import static com.github.tomakehurst.wiremock.client.WireMock.verify;
1817
import static com.sap.ai.sdk.orchestration.AzureFilterThreshold.ALLOW_SAFE;
@@ -42,22 +41,9 @@
4241
import com.github.tomakehurst.wiremock.junit5.WireMockTest;
4342
import com.github.tomakehurst.wiremock.stubbing.Scenario;
4443
import com.sap.ai.sdk.orchestration.model.ChatDelta;
45-
import com.sap.ai.sdk.orchestration.model.DPIConfig;
4644
import com.sap.ai.sdk.orchestration.model.DPIEntities;
47-
import com.sap.ai.sdk.orchestration.model.DPIStandardEntity;
4845
import com.sap.ai.sdk.orchestration.model.DataRepositoryType;
4946
import com.sap.ai.sdk.orchestration.model.DocumentGroundingFilter;
50-
import com.sap.ai.sdk.orchestration.model.Embedding;
51-
import com.sap.ai.sdk.orchestration.model.EmbeddingsInput;
52-
import com.sap.ai.sdk.orchestration.model.EmbeddingsInputText;
53-
import com.sap.ai.sdk.orchestration.model.EmbeddingsModelConfig;
54-
import com.sap.ai.sdk.orchestration.model.EmbeddingsModelDetails;
55-
import com.sap.ai.sdk.orchestration.model.EmbeddingsModelParams;
56-
import com.sap.ai.sdk.orchestration.model.EmbeddingsModuleConfigs;
57-
import com.sap.ai.sdk.orchestration.model.EmbeddingsOrchestrationConfig;
58-
import com.sap.ai.sdk.orchestration.model.EmbeddingsPostRequest;
59-
import com.sap.ai.sdk.orchestration.model.EmbeddingsPostResponse;
60-
import com.sap.ai.sdk.orchestration.model.EmbeddingsResponse;
6147
import com.sap.ai.sdk.orchestration.model.ErrorResponse;
6248
import com.sap.ai.sdk.orchestration.model.GenericModuleResult;
6349
import com.sap.ai.sdk.orchestration.model.GroundingFilterSearchConfiguration;
@@ -66,7 +52,6 @@
6652
import com.sap.ai.sdk.orchestration.model.GroundingModuleConfigConfigPlaceholders;
6753
import com.sap.ai.sdk.orchestration.model.KeyValueListPair;
6854
import com.sap.ai.sdk.orchestration.model.LlamaGuard38b;
69-
import com.sap.ai.sdk.orchestration.model.MaskingModuleConfigProviders;
7055
import com.sap.ai.sdk.orchestration.model.ModuleResultsStreaming;
7156
import com.sap.ai.sdk.orchestration.model.ResponseFormatText;
7257
import com.sap.ai.sdk.orchestration.model.SearchDocumentKeyValueListPair;
@@ -79,7 +64,6 @@
7964
import com.sap.cloud.sdk.cloudplatform.connectivity.DefaultHttpDestination;
8065
import java.io.IOException;
8166
import java.io.InputStream;
82-
import java.math.BigDecimal;
8367
import java.nio.file.Files;
8468
import java.nio.file.Path;
8569
import java.util.List;
@@ -1279,154 +1263,4 @@ void testGetAllMessages() {
12791263
assertThat(messageListTools.get(1)).isInstanceOf(AssistantMessage.class);
12801264
assertThat(messageListTools.get(2)).isInstanceOf(ToolMessage.class);
12811265
}
1282-
1283-
@Test
1284-
void testEmbeddingCallWithMasking() {
1285-
1286-
stubFor(
1287-
post(urlEqualTo("/v2/embeddings"))
1288-
.willReturn(
1289-
aResponse()
1290-
.withStatus(200)
1291-
.withBody(
1292-
"""
1293-
{
1294-
"request_id": "2ee98443-e1ee-9503-b800-e38b5b80fe45",
1295-
"intermediate_results": {
1296-
"input_masking": {
1297-
"message": "Embedding input is masked successfully.",
1298-
"data": {
1299-
"masked_input": "['Hello', 'MASKED_PERSON', '!']"
1300-
}
1301-
}
1302-
},
1303-
"final_result": {
1304-
"object": "list",
1305-
"data": [
1306-
{
1307-
"object": "embedding",
1308-
"embedding": [
1309-
0.43988228,
1310-
-0.82985526,
1311-
-0.15936942,
1312-
0.041005015,
1313-
0.30127057
1314-
],
1315-
"index": 0
1316-
}
1317-
],
1318-
"model": "text-embedding-3-large",
1319-
"usage": {
1320-
"prompt_tokens": 10,
1321-
"total_tokens": 10
1322-
}
1323-
}
1324-
}
1325-
""")));
1326-
1327-
val dpiConfig =
1328-
DPIConfig.create()
1329-
.type(DPIConfig.TypeEnum.SAP_DATA_PRIVACY_INTEGRATION)
1330-
.method(DPIConfig.MethodEnum.ANONYMIZATION)
1331-
.entities(List.of(DPIStandardEntity.create().type(DPIEntities.PERSON)));
1332-
val maskingConfig = MaskingModuleConfigProviders.create().providers(List.of(dpiConfig));
1333-
1334-
val modelParams =
1335-
EmbeddingsModelParams.create()
1336-
.encodingFormat(EmbeddingsModelParams.EncodingFormatEnum.FLOAT)
1337-
.dimensions(5)
1338-
.normalize(false);
1339-
val modelConfig =
1340-
EmbeddingsModelConfig.create()
1341-
.model(
1342-
EmbeddingsModelDetails.create().name("text-embedding-3-large").params(modelParams));
1343-
1344-
val orchestrationConfig =
1345-
EmbeddingsOrchestrationConfig.create()
1346-
.modules(
1347-
EmbeddingsModuleConfigs.create().embeddings(modelConfig).masking(maskingConfig));
1348-
1349-
val inputText =
1350-
EmbeddingsInput.create().text(EmbeddingsInputText.create("['Hello', 'Müller', '!']"));
1351-
1352-
val request = EmbeddingsPostRequest.create().config(orchestrationConfig).input(inputText);
1353-
1354-
EmbeddingsPostResponse response = client.embed(request);
1355-
1356-
assertThat(response).isNotNull();
1357-
assertThat(response.getRequestId()).isEqualTo("2ee98443-e1ee-9503-b800-e38b5b80fe45");
1358-
1359-
val orchestrationResult = response.getFinalResult();
1360-
assertThat(orchestrationResult).isNotNull();
1361-
assertThat(orchestrationResult.getObject()).isEqualTo(EmbeddingsResponse.ObjectEnum.LIST);
1362-
assertThat(orchestrationResult.getModel()).isEqualTo("text-embedding-3-large");
1363-
1364-
val data = orchestrationResult.getData();
1365-
assertThat(data).isNotEmpty();
1366-
assertThat(data.get(0).getEmbedding())
1367-
.isEqualTo(
1368-
Embedding.create(
1369-
List.of(
1370-
BigDecimal.valueOf(0.43988228),
1371-
BigDecimal.valueOf(-0.82985526),
1372-
BigDecimal.valueOf(-0.15936942),
1373-
BigDecimal.valueOf(0.041005015),
1374-
BigDecimal.valueOf(0.30127057))));
1375-
assertThat(data.get(0).getIndex()).isZero();
1376-
1377-
val usage = orchestrationResult.getUsage();
1378-
assertThat(usage).isNotNull();
1379-
assertThat(usage.getPromptTokens()).isEqualTo(10);
1380-
assertThat(usage.getTotalTokens()).isEqualTo(10);
1381-
1382-
val moduleResults = response.getIntermediateResults();
1383-
assertThat(moduleResults).isNotNull();
1384-
assertThat(moduleResults.getInputMasking()).isNotNull();
1385-
assertThat(moduleResults.getInputMasking().getMessage())
1386-
.isEqualTo("Embedding input is masked successfully.");
1387-
assertThat(moduleResults.getInputMasking().getData()).isNotNull();
1388-
assertThat(moduleResults.getInputMasking().getData())
1389-
.isEqualTo(Map.of("masked_input", "['Hello', 'MASKED_PERSON', '!']"));
1390-
1391-
verify(
1392-
postRequestedFor(urlEqualTo("/v2/embeddings"))
1393-
.withRequestBody(
1394-
equalToJson(
1395-
"""
1396-
{
1397-
"config": {
1398-
"modules": {
1399-
"embeddings": {
1400-
"model": {
1401-
"name": "text-embedding-3-large",
1402-
"version": "latest",
1403-
"params": {
1404-
"encoding_format": "float",
1405-
"dimensions": 5,
1406-
"normalize": false
1407-
}
1408-
}
1409-
},
1410-
"masking": {
1411-
"providers": [
1412-
{
1413-
"type": "sap_data_privacy_integration",
1414-
"method": "anonymization",
1415-
"entities": [
1416-
{
1417-
"type": "profile-person"
1418-
}
1419-
],
1420-
"allowlist" : [ ]
1421-
}
1422-
]
1423-
}
1424-
}
1425-
},
1426-
"input": {
1427-
"text": "['Hello', 'Müller', '!']"
1428-
}
1429-
}
1430-
""")));
1431-
}
14321266
}

0 commit comments

Comments
 (0)