Skip to content

Commit edc30e1

Browse files
authored
Merge branch 'spring-projects:main' into main
2 parents a369e8a + ffad572 commit edc30e1

File tree

9 files changed

+155
-103
lines changed

9 files changed

+155
-103
lines changed

models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/OpenAiApiIT.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,7 @@ void inputAudio() throws IOException {
122122

123123
@Test
124124
void outputAudio() {
125-
ChatCompletionMessage chatCompletionMessage = new ChatCompletionMessage(
126-
"What is the magic spell to make objects fly?", Role.USER);
125+
ChatCompletionMessage chatCompletionMessage = new ChatCompletionMessage("Say 'I am a robot'", Role.USER);
127126
ChatCompletionRequest.AudioParameters audioParameters = new ChatCompletionRequest.AudioParameters(
128127
ChatCompletionRequest.AudioParameters.Voice.NOVA,
129128
ChatCompletionRequest.AudioParameters.AudioResponseFormat.MP3);
@@ -139,7 +138,7 @@ void outputAudio() {
139138

140139
assertThat(response.getBody().choices().get(0).message().audioOutput().data()).isNotNull();
141140
assertThat(response.getBody().choices().get(0).message().audioOutput().transcript())
142-
.containsIgnoringCase("leviosa");
141+
.containsIgnoringCase("robot");
143142
}
144143

145144
@Test

models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelIT.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,19 @@ void multiModalityInputAudio(String modelName) {
589589
.call(new Prompt(List.of(userMessage), ChatOptions.builder().model(modelName).build()));
590590

591591
logger.info(response.getResult().getOutput().getText());
592-
assertThat(response.getResult().getOutput().getText()).containsIgnoringCase("hobbits");
592+
String responseText = response.getResult().getOutput().getText();
593+
assertThat(responseText).satisfiesAnyOf(text -> assertThat(text).containsIgnoringCase("hobbit"),
594+
text -> assertThat(text).containsIgnoringCase("lord of the rings"),
595+
text -> assertThat(text).containsIgnoringCase("lotr"),
596+
text -> assertThat(text).containsIgnoringCase("tolkien"),
597+
text -> assertThat(text).containsIgnoringCase("fantasy"),
598+
text -> assertThat(text).containsIgnoringCase("ring"),
599+
text -> assertThat(text).containsIgnoringCase("shire"),
600+
text -> assertThat(text).containsIgnoringCase("baggins"),
601+
text -> assertThat(text).containsIgnoringCase("gandalf"),
602+
text -> assertThat(text).containsIgnoringCase("frodo"),
603+
text -> assertThat(text).containsIgnoringCase("meme"),
604+
text -> assertThat(text).containsIgnoringCase("remix"));
593605
assertThat(response.getMetadata().getModel()).containsIgnoringCase(modelName);
594606
}
595607

-363 KB
Loading
7.54 KB
Loading
-23.2 KB
Loading

spring-ai-docs/src/main/antora/modules/ROOT/pages/api/advisors.adoc

Lines changed: 121 additions & 97 deletions
Large diffs are not rendered by default.

spring-ai-docs/src/main/antora/modules/ROOT/pages/api/chatclient.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ Flux<String> flux = this.chatClient.prompt()
314314
315315
String content = this.flux.collectList().block().stream().collect(Collectors.joining());
316316
317-
List<ActorFilms> actorFilms = this.converter.convert(this.content);
317+
List<ActorsFilms> actorFilms = this.converter.convert(this.content);
318318
----
319319

320320
== Prompt Templates

spring-ai-docs/src/main/antora/modules/ROOT/pages/api/mcp/mcp-helpers.adoc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,24 @@ For multiple clients:
6565
List<McpSyncClient> clients = // obtain list of clients
6666
List<ToolCallback> callbacks = SyncMcpToolCallbackProvider.syncToolCallbacks(clients);
6767
----
68+
+
69+
For dynamic selection of a subset of clients
70+
+
71+
[source,java]
72+
----
73+
@Autowired
74+
private List<McpSyncClient> mcpSyncClients;
6875
76+
public ToolCallbackProvider buildProvider(Set<String> allowedServerNames) {
77+
// Filter by server.name().
78+
List<McpSyncClient> selected = mcpSyncClients.stream()
79+
.filter(c -> allowedServerNames.contains(c.getServerInfo().name()))
80+
.toList();
81+
82+
return new SyncMcpToolCallbackProvider(selected);
83+
}
84+
85+
----
6986
Async::
7087
+
7188
[source,java]

spring-ai-docs/src/main/antora/modules/ROOT/pages/api/mcp/mcp-server-boot-starter-docs.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,5 +383,5 @@ You can have multiple beans producing ToolCallbacks. The auto-configuration will
383383
== Additional Resources
384384

385385
* link:https://docs.spring.io/spring-ai/reference/[Spring AI Documentation]
386-
* link:https://modelcontextprotocol.github.io/specification/[Model Context Protocol Specification]
386+
* link:https://modelcontextprotocol.io/specification[Model Context Protocol Specification]
387387
* link:https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.developing-auto-configuration[Spring Boot Auto-configuration]

0 commit comments

Comments
 (0)