Skip to content

Commit 7074d00

Browse files
committed
update streaming response
1 parent 3995ef6 commit 7074d00

File tree

4 files changed

+21
-15
lines changed

4 files changed

+21
-15
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<properties>
1818
<java.version>21</java.version>
1919
<spring-ai.version>1.0.0-M5</spring-ai.version>
20-
<chat-agent-ui.version>0.9.0</chat-agent-ui.version>
20+
<chat-agent-ui.version>0.10.0</chat-agent-ui.version>
2121
</properties>
2222
<dependencies>
2323
<dependency>

src/main/java/com/javaaidev/agent/AbstractChatAgentController.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ public abstract class AbstractChatAgentController {
1111
You are a chef who is proficient in various cuisines. Please answer users' questions about cooking.
1212
For other unrelated inputs, simply tell the user that you don't know.
1313
""";
14-
15-
14+
1615
protected List<Message> chatRequestToMessages(ChatAgentRequest request) {
1716
return ModelAdapter.fromRequest(request);
1817
}

src/main/java/com/javaaidev/agent/ChatAgentController.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.javaaidev.agent;
22

33
import com.javaaidev.chatagent.model.ChatAgentRequest;
4+
import com.javaaidev.chatagent.model.ChatAgentResponse;
5+
import com.javaaidev.chatagent.springai.ModelAdapter;
46
import org.springframework.ai.chat.client.ChatClient;
57
import org.springframework.ai.chat.messages.Message;
68
import org.springframework.http.codec.ServerSentEvent;
@@ -21,17 +23,18 @@ public ChatAgentController(ChatClient.Builder builder) {
2123
}
2224

2325
@PostMapping
24-
public Flux<ServerSentEvent<String>> chat(@RequestBody ChatAgentRequest request) {
26+
public Flux<ServerSentEvent<ChatAgentResponse>> chat(@RequestBody ChatAgentRequest request) {
2527
if (request == null) {
2628
return Flux.empty();
2729
}
2830
var messages = chatRequestToMessages(request);
29-
var output = chatClient.prompt().system(SYSTEM_TEXT)
31+
var chatResponse = chatClient.prompt().system(SYSTEM_TEXT)
3032
.messages(messages.toArray(new Message[0]))
3133
.call()
32-
.content();
33-
return Flux.just(ServerSentEvent.<String>builder()
34-
.data("#" + output + "#")
35-
.build());
34+
.chatResponse();
35+
if (chatResponse == null) {
36+
return Flux.empty();
37+
}
38+
return ModelAdapter.toStreamingResponse(Flux.just(chatResponse));
3639
}
3740
}

src/main/java/com/javaaidev/agent/ChatAgentStreamingController.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.javaaidev.agent;
22

33
import com.javaaidev.chatagent.model.ChatAgentRequest;
4+
import com.javaaidev.chatagent.model.ChatAgentResponse;
5+
import com.javaaidev.chatagent.springai.ModelAdapter;
46
import org.springframework.ai.chat.client.ChatClient;
57
import org.springframework.ai.chat.messages.Message;
68
import org.springframework.http.MediaType;
@@ -22,12 +24,14 @@ public ChatAgentStreamingController(ChatClient.Builder builder) {
2224
}
2325

2426
@PostMapping(produces = MediaType.TEXT_EVENT_STREAM_VALUE)
25-
public Flux<ServerSentEvent<String>> chatStreaming(@RequestBody ChatAgentRequest request) {
27+
public Flux<ServerSentEvent<ChatAgentResponse>> chatStreaming(
28+
@RequestBody ChatAgentRequest request) {
2629
var messages = chatRequestToMessages(request);
27-
return chatClient.prompt().system(SYSTEM_TEXT).messages(messages.toArray(new Message[0]))
28-
.stream().content()
29-
.map(output -> ServerSentEvent.<String>builder()
30-
.data("#" + output + "#")
31-
.build());
30+
return ModelAdapter.toStreamingResponse(
31+
chatClient.prompt()
32+
.system(SYSTEM_TEXT)
33+
.messages(messages.toArray(new Message[0]))
34+
.stream()
35+
.chatResponse());
3236
}
3337
}

0 commit comments

Comments
 (0)