package com.supervision.pdfqaserver.controller; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.supervision.pdfqaserver.dto.R; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.ai.chat.messages.Message; import org.springframework.ai.chat.messages.SystemMessage; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.ollama.OllamaChatModel; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; import java.util.Map; @Slf4j @RestController @RequestMapping("/ollama") @RequiredArgsConstructor @CrossOrigin(origins = "*", maxAge = 3600) public class ChatController { private final OllamaChatModel ollamaChatModel; /** * 仅供调试使用,后期移除该接口 * @param message * @return */ @PostMapping("/chat") public R pageList(@RequestBody Map message) { List messages = new ArrayList<>(); if (StrUtil.isNotEmpty(message.get("system"))){ messages.add(new SystemMessage(message.get("system"))); } if (StrUtil.isNotEmpty(message.get("user"))){ messages.add(new UserMessage(message.get("user"))); } log.info("system: {} , user: {}",message.get("system"),message.get("user")); Assert.notEmpty(messages, "消息不能为空"); String response = ollamaChatModel.call(messages.toArray(new Message[0])); log.info("response:{}",response); return R.ok(response); } }