|
|
@@ -2,10 +2,16 @@ package space.anyi.springAiAlibabaLearn.controller;
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.ai.chat.messages.SystemMessage;
|
|
|
+import org.springframework.ai.chat.messages.UserMessage;
|
|
|
import org.springframework.ai.chat.model.ChatModel;
|
|
|
+import org.springframework.ai.chat.model.ChatResponse;
|
|
|
+import org.springframework.ai.chat.prompt.ChatOptions;
|
|
|
+import org.springframework.ai.chat.prompt.Prompt;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
+import reactor.core.publisher.Flux;
|
|
|
|
|
|
@RestController
|
|
|
public class HelloController {
|
|
|
@@ -23,6 +29,41 @@ public class HelloController {
|
|
|
@GetMapping("/chat")
|
|
|
public String chat(@RequestParam("message") String message){
|
|
|
log.debug("message:{}",message);
|
|
|
+ //同步调用
|
|
|
return chatModel.call(message);
|
|
|
}
|
|
|
+ @GetMapping("/message")
|
|
|
+ public String message(@RequestParam("message") String message){
|
|
|
+ log.debug("message:{}",message);
|
|
|
+ SystemMessage systemMessage = SystemMessage.builder().text("你是一个机器人!无论用户问什么内容,你只会回答'Java是世界上最好的语言!'.").build();
|
|
|
+ log.debug("systemMessage:{}",systemMessage);
|
|
|
+ UserMessage userMessage = new UserMessage(message);
|
|
|
+ log.debug("userMessage:{}",userMessage);
|
|
|
+ //携带历史消息(系统消息)同步调用
|
|
|
+ return chatModel.call(systemMessage,userMessage);
|
|
|
+ }
|
|
|
+ @GetMapping("/prompt")
|
|
|
+ public String prompt(@RequestParam("message") String message){
|
|
|
+ log.debug("message:{}",message);
|
|
|
+ Prompt prompt = Prompt.builder()
|
|
|
+ .messages(UserMessage.builder()
|
|
|
+ .text(message)
|
|
|
+ .build())
|
|
|
+ .chatOptions(
|
|
|
+ ChatOptions.builder()
|
|
|
+ .maxTokens(4096)
|
|
|
+ .temperature(0.2)
|
|
|
+ .build()
|
|
|
+ ).build();
|
|
|
+ log.debug("prompt:{}",prompt);
|
|
|
+ //更加细粒度的配置进行同步调用
|
|
|
+ ChatResponse chatResponse = chatModel.call(prompt);
|
|
|
+ log.debug("chatResponse:{}",chatResponse);
|
|
|
+ return chatResponse.getResults().getFirst().getOutput().getText();
|
|
|
+ }
|
|
|
+ @GetMapping("/stream")
|
|
|
+ public Flux<String> stream(@RequestParam("message") String message){
|
|
|
+ //异步流式响应
|
|
|
+ return chatModel.stream(message).doOnNext(msg->log.debug("msg:{}",msg));
|
|
|
+ }
|
|
|
}
|