package com.ard.agent.controller;
|
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import jakarta.annotation.Resource;
|
import org.springframework.ai.chat.client.ChatClient;
|
import org.springframework.web.bind.annotation.*;
|
import reactor.core.publisher.Flux;
|
|
@Tag(name = "ChatClient使用案例")
|
@RestController
|
@RequestMapping("/chatclient")
|
public class ChatClientController {
|
|
@Resource(name = "ollamaChatClient")
|
private ChatClient chatClient;
|
|
@Operation(summary = "同步聊天 - ChatClient基础用法")
|
@GetMapping("/chat")
|
public String chat(@RequestParam String message) {
|
return chatClient.prompt()
|
.user(message)
|
.call()
|
.content();
|
}
|
|
@Operation(summary = "流式聊天 - ChatClient流式输出")
|
@GetMapping(value = "/chat/stream", produces = "text/html;charset=UTF-8")
|
public Flux<String> streamChat(@RequestParam String message) {
|
return chatClient.prompt()
|
.user(message)
|
.stream()
|
.content();
|
}
|
|
@Operation(summary = "带系统提示词的聊天")
|
@GetMapping("/chat/withSystem")
|
public String chatWithSystem(@RequestParam String message) {
|
return chatClient.prompt()
|
.system(s -> s.text("你是一个智能助手,请用简洁的中文回答问题,回答不超过100字。"))
|
.user(message)
|
.call()
|
.content();
|
}
|
}
|