Skip to content

Commit 561a201

Browse files
committed
Using original orchestration spec. Test contain descriminator
1 parent 1bd9088 commit 561a201

File tree

66 files changed

+4797
-8588
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+4797
-8588
lines changed

orchestration/pom.xml

Lines changed: 3 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -119,59 +119,22 @@
119119
<scope>test</scope>
120120
</dependency>
121121

122-
<!-- Additional dependencies for OSS code generator -->
122+
<!-- Additional dependencies for OSS code generator resttemplate -->
123123
<dependency>
124124
<groupId>org.openapitools</groupId>
125125
<artifactId>jackson-databind-nullable</artifactId>
126-
<version>0.2.6</version>
127126
</dependency>
128127
<dependency>
129128
<groupId>javax.annotation</groupId>
130129
<artifactId>javax.annotation-api</artifactId>
131-
<version>1.2</version>
132130
</dependency>
133131
</dependencies>
134132

135133
<build>
136134
<plugins>
137-
<!-- <plugin>
138-
<groupId>com.sap.cloud.sdk.datamodel</groupId>
139-
<artifactId>openapi-generator-maven-plugin</artifactId>
140-
<configuration>
141-
<skip>true</skip>
142-
&lt;!&ndash; skip automatic generation until we can omit API classes from code generation &ndash;&gt;
143-
<outputDirectory>${project.basedir}/src/main/java</outputDirectory>
144-
<apiMaturity>beta</apiMaturity>
145-
<enableOneOfAnyOfGeneration>true</enableOneOfAnyOfGeneration>
146-
<compileScope>COMPILE</compileScope>
147-
<deleteOutputDirectory>true</deleteOutputDirectory>
148-
</configuration>
149-
<executions>
150-
<execution>
151-
<id>orchestration</id>
152-
<goals>
153-
<goal>generate</goal>
154-
</goals>
155-
<phase>generate-sources</phase>
156-
<configuration>
157-
<inputSpec>${project.basedir}/src/main/resources/spec/orchestration.yaml</inputSpec>
158-
<apiPackage>com.sap.ai.sdk.orchestration.client</apiPackage>
159-
<modelPackage>com.sap.ai.sdk.orchestration.client.model</modelPackage>
160-
<additionalProperties>
161-
<pojoBuilderMethodName>create</pojoBuilderMethodName>
162-
<pojoBuildMethodName/>
163-
<pojoConstructorVisibility>protected</pojoConstructorVisibility>
164-
<enumUnknownDefaultCase>true</enumUnknownDefaultCase>
165-
</additionalProperties>
166-
</configuration>
167-
</execution>
168-
</executions>
169-
</plugin>-->
170-
171135
<plugin>
172136
<groupId>org.openapitools</groupId>
173137
<artifactId>openapi-generator-maven-plugin</artifactId>
174-
<version>7.9.0</version>
175138
<executions>
176139
<execution>
177140
<goals>
@@ -206,7 +169,8 @@
206169
<disallowAdditionalPropertiesIfNotPresent>false</disallowAdditionalPropertiesIfNotPresent>
207170
<enumUnknownDefaultCase>true</enumUnknownDefaultCase>
208171
<useBeanValidation>false</useBeanValidation>
209-
<modelAnnotations/>
172+
<useOneOfInterfaces>true</useOneOfInterfaces>
173+
<!--<legacyDiscriminatorBehavior>false</legacyDiscriminatorBehavior>-->
210174
</configOptions>
211175
<generateModels>true</generateModels>
212176
<generateSupportingFiles>false</generateSupportingFiles>

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public enum Sensitivity {
4747

4848
@Nonnull
4949
com.sap.ai.sdk.orchestration.client.model.FilterConfig toFilterConfigDto() {
50-
val dto = AzureContentSafety.create();
50+
val dto = new AzureContentSafety();
5151
if (hate == null && selfHarm == null && sexual == null && violence == null) {
5252
throw new IllegalStateException(
5353
"When configuring an azure content filter, at least one filter category must be set");
@@ -66,8 +66,10 @@ com.sap.ai.sdk.orchestration.client.model.FilterConfig toFilterConfigDto() {
6666
dto.violence(fromValue(violence.value));
6767
}
6868

69-
return com.sap.ai.sdk.orchestration.client.model.FilterConfig.create()
70-
.type(com.sap.ai.sdk.orchestration.client.model.FilterConfig.TypeEnum.AZURE_CONTENT_SAFETY)
69+
return new com.sap.ai.sdk.orchestration.client.model.AzureContentSafetyFilterConfig()
70+
.type(
71+
com.sap.ai.sdk.orchestration.client.model.AzureContentSafetyFilterConfig.TypeEnum
72+
.AZURE_CONTENT_SAFETY)
7173
.config(dto);
7274
}
7375
}

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

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

3-
import static com.sap.ai.sdk.orchestration.client.model.MaskingProviderConfig.MethodEnum.ANONYMIZATION;
4-
import static com.sap.ai.sdk.orchestration.client.model.MaskingProviderConfig.MethodEnum.PSEUDONYMIZATION;
5-
import static com.sap.ai.sdk.orchestration.client.model.MaskingProviderConfig.TypeEnum.SAP_DATA_PRIVACY_INTEGRATION;
3+
import static com.sap.ai.sdk.orchestration.client.model.DPIConfig.MethodEnum.ANONYMIZATION;
4+
import static com.sap.ai.sdk.orchestration.client.model.DPIConfig.MethodEnum.PSEUDONYMIZATION;
5+
import static com.sap.ai.sdk.orchestration.client.model.DPIConfig.TypeEnum.SAP_DATA_PRIVACY_INTEGRATION;
66

7+
import com.sap.ai.sdk.orchestration.client.model.DPIConfig;
78
import com.sap.ai.sdk.orchestration.client.model.DPIEntities;
89
import com.sap.ai.sdk.orchestration.client.model.DPIEntityConfig;
910
import com.sap.ai.sdk.orchestration.client.model.MaskingProviderConfig;
@@ -25,7 +26,7 @@
2526
@Getter(AccessLevel.PACKAGE)
2627
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
2728
public class DpiMaskingConfig implements MaskingConfig {
28-
@Nonnull MaskingProviderConfig.MethodEnum maskingMethod;
29+
@Nonnull DPIConfig.MethodEnum maskingMethod;
2930
@Nonnull List<DPIEntities> entities;
3031

3132
/**
@@ -50,8 +51,8 @@ public static Builder pseudonymization() {
5051

5152
@Nonnull
5253
MaskingProviderConfig toMaskingProviderDto() {
53-
val entitiesDTO = entities.stream().map(it -> DPIEntityConfig.create().type(it)).toList();
54-
return MaskingProviderConfig.create()
54+
val entitiesDTO = entities.stream().map(it -> new DPIEntityConfig().type(it)).toList();
55+
return new DPIConfig()
5556
.type(SAP_DATA_PRIVACY_INTEGRATION)
5657
.method(maskingMethod)
5758
.entities(entitiesDTO);
@@ -63,7 +64,7 @@ MaskingProviderConfig toMaskingProviderDto() {
6364
*/
6465
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
6566
public static class Builder {
66-
private final MaskingProviderConfig.MethodEnum maskingMethod;
67+
private final DPIConfig.MethodEnum maskingMethod;
6768

6869
/**
6970
* Specifies which entities should be masked in the input text.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ LLMModuleConfig toLLMModuleConfigDto() {
5959
if (parameters != null) {
6060
params.putAll(parameters);
6161
}
62-
val result = LLMModuleConfig.create().modelName(name).modelParams(params);
62+
val result = new LLMModuleConfig().modelName(name).modelParams(params);
6363
if (version != null) {
6464
result.modelVersion(version);
6565
}

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

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,33 +35,32 @@ static ModuleConfigs toModuleConfigDto(
3535
val template = config.getTemplate().getOrElse(() -> TemplateConfig.fromMessages(List.of()));
3636
val templateDto = toTemplateModuleConfigDto(template, messages);
3737

38-
var resultDto =
39-
ModuleConfigs.create().llmModuleConfig(llmDto).templatingModuleConfig(templateDto);
38+
var resultDto = new ModuleConfigs().llmModuleConfig(llmDto).templatingModuleConfig(templateDto);
4039

4140
config
4241
.getMaskingConfig()
4342
.filter(DpiMaskingConfig.class::isInstance)
4443
.map(DpiMaskingConfig.class::cast)
4544
.map(DpiMaskingConfig::toMaskingProviderDto)
46-
.map(it -> MaskingModuleConfig.create().maskingProviders(it))
45+
.map(it -> new MaskingModuleConfig().maskingProviders(List.of(it)))
4746
.forEach(resultDto::maskingModuleConfig);
4847

4948
val maybeInputFilter = config.getInputContentFilter();
5049
val maybeOutputFilter = config.getOutputContentFilter();
5150

5251
if (maybeInputFilter.isDefined() || maybeOutputFilter.isDefined()) {
53-
val filter = FilteringModuleConfig.create();
52+
val filter = new FilteringModuleConfig();
5453
maybeInputFilter
5554
.filter(AzureContentFilter.class::isInstance)
5655
.map(AzureContentFilter.class::cast)
5756
.map(AzureContentFilter::toFilterConfigDto)
58-
.map(it -> InputFilteringConfig.create().filters(it))
57+
.map(it -> new InputFilteringConfig().filters(List.of(it)))
5958
.forEach(filter::input);
6059
maybeOutputFilter
6160
.filter(AzureContentFilter.class::isInstance)
6261
.map(AzureContentFilter.class::cast)
6362
.map(AzureContentFilter::toFilterConfigDto)
64-
.map(it -> OutputFilteringConfig.create().filters(it))
63+
.map(it -> new OutputFilteringConfig().filters(List.of(it)))
6564
.forEach(filter::output);
6665
resultDto = resultDto.filteringModuleConfig(filter);
6766
}
@@ -74,7 +73,7 @@ static LLMModuleConfig toLlmModuleConfigDto(@Nonnull final AiModel model) {
7473
if (model instanceof LlmConfig llmConfig) {
7574
return llmConfig.toLLMModuleConfigDto();
7675
}
77-
val dto = LLMModuleConfig.create().modelName(model.name()).modelParams(Map.of());
76+
val dto = new LLMModuleConfig().modelName(model.name()).modelParams(Map.of());
7877
if (model.version() != null) {
7978
dto.modelVersion(model.version());
8079
}
@@ -100,19 +99,19 @@ static TemplatingModuleConfig toTemplateModuleConfigDto(
10099
}
101100
val messagesDto =
102101
messagesWithPrompt.stream()
103-
.map(msg -> ChatMessage.create().role(msg.type()).content(msg.content()))
102+
.map(msg -> new ChatMessage().role(msg.type()).content(msg.content()))
104103
.toList();
105-
return TemplatingModuleConfig.create().template(messagesDto);
104+
return new com.sap.ai.sdk.orchestration.client.model.Template().template(messagesDto);
106105
}
107106
if (templateConfig instanceof Template.IdReference idReference) {
108-
val templateRef = TemplateRefByID.create().id(idReference.templateId());
107+
val templateRef = new TemplateRefByID().id(idReference.templateId());
109108
throw new NotImplementedError(
110109
"Template reference by ID is not yet implemented. Can't create DTO for object: "
111110
+ templateRef);
112111
}
113112
if (templateConfig instanceof Template.NameReference nameReference) {
114113
val templateRef =
115-
TemplateRefByScenarioNameVersion.create()
114+
new TemplateRefByScenarioNameVersion()
116115
.scenario(nameReference.scenario())
117116
.name(nameReference.name())
118117
.version(nameReference.version());

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ public class OrchestrationClient implements OrchestrationConfig<OrchestrationCli
4747
.visibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE)
4848
.visibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.NONE)
4949
.serializationInclusion(JsonInclude.Include.NON_NULL)
50-
.build();
50+
.build()
51+
.disableDefaultTyping();
5152
}
5253

5354
@Delegate(types = IDelegate.class)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,9 @@ CompletionPostRequest toCompletionPostRequestDto(@Nonnull final OrchestrationCon
9090
// that way this prompt remains unchanged and can be reused
9191
val config = DefaultOrchestrationConfig.standalone().copyFrom(this).copyFrom(defaults);
9292
val moduleConfigDTO = ModuleConfigFactory.toModuleConfigDto(config, messages);
93-
return CompletionPostRequest.create()
93+
return new CompletionPostRequest()
9494
.orchestrationConfig(
95-
com.sap.ai.sdk.orchestration.client.model.OrchestrationConfig.create()
95+
new com.sap.ai.sdk.orchestration.client.model.OrchestrationConfig()
9696
.moduleConfigurations(moduleConfigDTO))
9797
.inputParams(templateParameters);
9898
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.sap.ai.sdk.orchestration.client.model.ChatMessage;
44
import com.sap.ai.sdk.orchestration.client.model.CompletionPostResponse;
5+
import com.sap.ai.sdk.orchestration.client.model.LLMModuleResultSynchronous;
56
import com.sap.ai.sdk.orchestration.client.model.TokenUsage;
67
import java.util.ArrayList;
78
import java.util.Arrays;
@@ -55,10 +56,11 @@ static FinishReason fromValue(@Nonnull final String value) {
5556
@Nonnull
5657
static OrchestrationResponse fromCompletionPostResponseDto(
5758
@Nonnull final CompletionPostResponse response) {
58-
val choice = response.getOrchestrationResult().getChoices().get(0);
59+
val choice =
60+
((LLMModuleResultSynchronous) response.getOrchestrationResult()).getChoices().get(0);
5961
val message = new AssistantMessage(choice.getMessage().getContent());
6062
val finishReason = FinishReason.fromValue(choice.getFinishReason());
61-
val tokenUsage = response.getOrchestrationResult().getUsage();
63+
val tokenUsage = ((LLMModuleResultSynchronous) response.getOrchestrationResult()).getUsage();
6264
val allMessages = new ArrayList<Message>();
6365
response.getModuleResults().getTemplating().stream()
6466
.map(OrchestrationResponse::fromChatMessage)

0 commit comments

Comments
 (0)