|
|
|
|
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<String> pageList(@RequestBody Map<String,String> message) {
|
|
|
|
|
List<Message> 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);
|
|
|
|
|
}
|
|
|
|
|
}
|