Skip to content

Commit c744600

Browse files
committed
Initial version. No unit test
1 parent aa58636 commit c744600

File tree

4 files changed

+51
-3
lines changed

4 files changed

+51
-3
lines changed

core-services/prompt-registry/src/main/java/com/sap/ai/sdk/prompt/registry/PromptClient.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22

33
import static com.sap.ai.sdk.core.JacksonConfiguration.getDefaultObjectMapper;
44

5+
import com.fasterxml.jackson.annotation.JsonSubTypes;
56
import com.fasterxml.jackson.annotation.JsonTypeInfo;
67
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
78
import com.google.common.collect.Iterables;
89
import com.sap.ai.sdk.core.AiCoreService;
910
import com.sap.ai.sdk.prompt.registry.client.PromptTemplatesApi;
1011
import com.sap.ai.sdk.prompt.registry.model.PromptTemplate;
1112
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateSpecResponseFormat;
13+
import com.sap.ai.sdk.prompt.registry.model.ResponseFormatJsonObject;
14+
import com.sap.ai.sdk.prompt.registry.model.ResponseFormatJsonSchema;
1215
import com.sap.ai.sdk.prompt.registry.model.ResponseFormatText;
1316
import com.sap.ai.sdk.prompt.registry.model.SingleChatTemplate;
1417
import com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5Accessor;
@@ -75,8 +78,16 @@ private static class JacksonMixin {
7578
@JsonDeserialize(as = SingleChatTemplate.class)
7679
interface TemplateMixIn {}
7780

78-
@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
79-
@JsonDeserialize(as = ResponseFormatText.class)
81+
@JsonTypeInfo(
82+
use = JsonTypeInfo.Id.NAME,
83+
include = JsonTypeInfo.As.EXISTING_PROPERTY,
84+
property = "type",
85+
visible = true)
86+
@JsonSubTypes({
87+
@JsonSubTypes.Type(value = ResponseFormatJsonSchema.class, name = "json_schema"),
88+
@JsonSubTypes.Type(value = ResponseFormatJsonObject.class, name = "json_object"),
89+
@JsonSubTypes.Type(value = ResponseFormatText.class, name = "text")
90+
})
8091
interface ResponseFormat {}
8192
}
8293
}

core-services/prompt-registry/src/test/java/com/sap/ai/sdk/prompt/registry/PromptRegistryClientTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,6 @@ void testPipelines() {
3636
assertThat(template.isIsVersionHead()).isEqualTo(true);
3737
assertThat(template.getSpec()).isNull();
3838
}
39+
40+
3941
}

core-services/prompt-registry/src/test/java/com/sap/ai/sdk/prompt/registry/spring/SpringAiConverterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ void testPromptRegistryToSpringAi() {
5252

5353
@Test
5454
void testInvalidRoleThrowsException() {
55-
var client = new PromptClient(SERVICE);
55+
final var client = new PromptClient(SERVICE);
5656
val errorPrompt =
5757
client.parsePromptTemplateByNameVersion(
5858
"categorization",

sample-code/spring-app/src/test/java/com/sap/ai/sdk/app/controllers/PromptRegistryTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

5+
import com.sap.ai.sdk.prompt.registry.PromptClient;
56
import com.sap.ai.sdk.prompt.registry.model.PromptTemplate;
67
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateDeleteResponse;
8+
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateGetResponse;
79
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateListResponse;
10+
import com.sap.ai.sdk.prompt.registry.model.PromptTemplatePostRequest;
811
import com.sap.ai.sdk.prompt.registry.model.PromptTemplatePostResponse;
12+
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateSpec;
913
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateSubstitutionResponse;
14+
import com.sap.ai.sdk.prompt.registry.model.ResponseFormatJsonObject;
1015
import com.sap.ai.sdk.prompt.registry.model.SingleChatTemplate;
1116
import java.io.IOException;
1217
import java.util.List;
@@ -93,4 +98,34 @@ void promptRegistryToSpringAi() {
9398
assertThat(ChatResponse).isNotNull();
9499
assertThat(ChatResponse.getOutput().getText()).contains("Sports");
95100
}
101+
102+
@Test
103+
void testPromptCreateAndGet() {
104+
final PromptClient client = new PromptClient();
105+
// cleanup
106+
final var responseFormat =
107+
ResponseFormatJsonObject.create().type(ResponseFormatJsonObject.TypeEnum.JSON_OBJECT);
108+
final var template = SingleChatTemplate.create().role("system").content("Test content");
109+
final PromptTemplateSpec spec =
110+
PromptTemplateSpec.create().template(List.of(template)).responseFormat(responseFormat);
111+
final PromptTemplatePostRequest promptTemplateRequest =
112+
PromptTemplatePostRequest.create()
113+
.name("test")
114+
.version("0.0.1")
115+
.scenario("test-retrival")
116+
.spec(spec);
117+
118+
final PromptTemplatePostResponse postResponse =
119+
client.createUpdatePromptTemplate(promptTemplateRequest);
120+
assertThat(postResponse.getName()).isEqualTo("test");
121+
122+
final PromptTemplateGetResponse getResponse =
123+
client.getPromptTemplateByUuid(postResponse.getId());
124+
// This assertion fails
125+
assertThat(getResponse.getSpec().getResponseFormat())
126+
.isEqualTo(
127+
ResponseFormatJsonObject.create().type(ResponseFormatJsonObject.TypeEnum.JSON_OBJECT));
128+
129+
client.deletePromptTemplate(postResponse.getId());
130+
}
96131
}

0 commit comments

Comments
 (0)