Skip to content

Commit 2cdd9b5

Browse files
committed
Add (Streaming)ChatClient convinience defaults
Facilitates the creation of multimodal message queries.
1 parent df92dff commit 2cdd9b5

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

spring-ai-core/src/main/java/org/springframework/ai/chat/ChatClient.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
package org.springframework.ai.chat;
1717

1818
import org.springframework.ai.chat.prompt.Prompt;
19+
20+
import java.util.Arrays;
21+
22+
import org.springframework.ai.chat.messages.Message;
1923
import org.springframework.ai.chat.messages.UserMessage;
2024
import org.springframework.ai.model.ModelClient;
2125

@@ -28,6 +32,12 @@ default String call(String message) {
2832
return (generation != null) ? generation.getOutput().getContent() : "";
2933
}
3034

35+
default String call(Message... messages) {
36+
Prompt prompt = new Prompt(Arrays.asList(messages));
37+
Generation generation = call(prompt).getResult();
38+
return (generation != null) ? generation.getOutput().getContent() : "";
39+
}
40+
3141
@Override
3242
ChatResponse call(Prompt prompt);
3343

spring-ai-core/src/main/java/org/springframework/ai/chat/StreamingChatClient.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,11 @@
1515
*/
1616
package org.springframework.ai.chat;
1717

18+
import java.util.Arrays;
19+
1820
import reactor.core.publisher.Flux;
1921

22+
import org.springframework.ai.chat.messages.Message;
2023
import org.springframework.ai.chat.prompt.Prompt;
2124
import org.springframework.ai.model.StreamingModelClient;
2225

@@ -30,6 +33,13 @@ default Flux<String> stream(String message) {
3033
: response.getResult().getOutput().getContent());
3134
}
3235

36+
default Flux<String> call(Message... messages) {
37+
Prompt prompt = new Prompt(Arrays.asList(messages));
38+
return stream(prompt).map(response -> (response.getResult() == null || response.getResult().getOutput() == null
39+
|| response.getResult().getOutput().getContent() == null) ? ""
40+
: response.getResult().getOutput().getContent());
41+
}
42+
3343
@Override
3444
Flux<ChatResponse> stream(Prompt prompt);
3545

spring-ai-core/src/main/java/org/springframework/ai/chat/messages/UserMessage.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.springframework.ai.chat.messages;
1717

18+
import java.util.Arrays;
1819
import java.util.List;
1920

2021
import org.springframework.core.io.Resource;
@@ -38,6 +39,10 @@ public UserMessage(String textContent, List<Media> mediaList) {
3839
super(MessageType.USER, textContent, mediaList);
3940
}
4041

42+
public UserMessage(String textContent, Media... media) {
43+
this(textContent, Arrays.asList(media));
44+
}
45+
4146
@Override
4247
public String toString() {
4348
return "UserMessage{" + "content='" + getContent() + '\'' + ", properties=" + properties + ", messageType="

0 commit comments

Comments
 (0)