Skip to content

Commit 63b91f1

Browse files
committed
Fixing Method ...changing approach slightly.
1 parent b823dfe commit 63b91f1

File tree

3 files changed

+70
-14
lines changed

3 files changed

+70
-14
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.sap.ai.sdk.prompt.registry.spring;
2+
3+
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateSubstitutionResponse;
4+
import com.sap.ai.sdk.prompt.registry.model.SingleChatTemplate;
5+
import com.sap.ai.sdk.prompt.registry.model.Template;
6+
import java.util.List;
7+
import javax.annotation.Nonnull;
8+
import lombok.val;
9+
import org.springframework.ai.chat.messages.AssistantMessage;
10+
import org.springframework.ai.chat.messages.Message;
11+
import org.springframework.ai.chat.messages.SystemMessage;
12+
import org.springframework.ai.chat.messages.UserMessage;
13+
14+
/** Utility class for orchestration-related operations in a Spring context. */
15+
public class SpringUtil {
16+
17+
private SpringUtil() {
18+
// Utility class, no instantiation allowed
19+
}
20+
21+
/**
22+
* Get a SpringAI list of messages from a Prompt Registry Response.
23+
*
24+
* @param promptResponse the response from Prompt Registry.
25+
* @return list of SpringAI messages.
26+
*/
27+
@Nonnull
28+
public static List<Message> promptRegistryToSpringAi(
29+
@Nonnull final PromptTemplateSubstitutionResponse promptResponse) {
30+
31+
val res = promptResponse.getParsedPrompt();
32+
33+
// TRANSFORM TEMPLATE TO SPRING AI MESSAGES
34+
return res.stream()
35+
.map(
36+
(Template t) -> {
37+
final SingleChatTemplate message = (SingleChatTemplate) t;
38+
return (Message)
39+
switch (message.getRole()) {
40+
case "system" -> new SystemMessage(message.getContent());
41+
case "user" -> new UserMessage(message.getContent());
42+
case "assistant" -> new AssistantMessage(message.getContent());
43+
default ->
44+
throw new IllegalArgumentException("Unknown role: " + message.getRole());
45+
};
46+
})
47+
.toList();
48+
}
49+
}

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

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,15 @@
1515
import com.sap.ai.sdk.orchestration.model.DPIEntities;
1616
import com.sap.ai.sdk.orchestration.spring.OrchestrationChatModel;
1717
import com.sap.ai.sdk.orchestration.spring.OrchestrationChatOptions;
18-
import com.sap.ai.sdk.orchestration.spring.OrchestrationSpringUtil;
18+
import com.sap.ai.sdk.prompt.registry.spring.SpringUtil;
1919
import java.util.List;
2020
import java.util.Map;
2121
import java.util.Objects;
2222
import javax.annotation.Nonnull;
2323
import javax.annotation.Nullable;
24+
25+
import com.sap.ai.sdk.prompt.registry.PromptClient;
26+
import com.sap.ai.sdk.prompt.registry.model.PromptTemplateSubstitutionRequest;
2427
import lombok.val;
2528
import org.springframework.ai.chat.client.ChatClient;
2629
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
@@ -279,20 +282,25 @@ public Translation responseFormat() {
279282
* @return the chat response containing the prompt template
280283
*/
281284
@Nullable
282-
public ChatResponse getPromptTemplate() {
285+
public ChatResponse promptRegistryToSpringAi() {
283286
val repository = new InMemoryChatMemoryRepository();
284287
val memory = MessageWindowChatMemory.builder().chatMemoryRepository(repository).build();
285288
val advisor = MessageChatMemoryAdvisor.builder(memory).build();
286289
val cl = ChatClient.builder(client).defaultAdvisors(advisor).build();
287290

288-
List<Message> m =
289-
OrchestrationSpringUtil.getPromptTemplate(
290-
"prompt_template_name",
291-
"MyScenario",
292-
"1.0.0",
293-
Map.of(
294-
"current_timestamp", String.valueOf(System.currentTimeMillis()), "topic", "Time"));
295-
val prompt = new Prompt(m, defaultOptions);
291+
val promptResponse =
292+
new PromptClient()
293+
.parsePromptTemplateByNameVersion(
294+
"categorization",
295+
"0.0.1",
296+
"java-e2e-test",
297+
"default",
298+
false,
299+
PromptTemplateSubstitutionRequest.create()
300+
.inputParams(Map.of("inputExample", "I love football")));
301+
302+
List<Message> messages = SpringUtil.promptRegistryToSpringAi(promptResponse);
303+
val prompt = new Prompt(messages, defaultOptions);
296304
return cl.prompt(prompt).call().chatResponse();
297305
}
298306
}

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,9 @@ void testResponseFormat() {
168168
}
169169

170170
@Test
171-
void getPromptTemplate() {
172-
var ChatResponse = service.getPromptTemplate();
171+
void promptRegistryToSpringAi() {
172+
var ChatResponse = service.promptRegistryToSpringAi();
173173
assertThat(ChatResponse).isNotNull();
174-
assertThat(ChatResponse.getResult().getOutput().getText()).isNotEmpty();
175-
assertThat(ChatResponse.getResult().getOutput().getText()).contains("blabla");
174+
assertThat(ChatResponse.getResult().getOutput().getText()).contains("Sports");
176175
}
177176
}

0 commit comments

Comments
 (0)