You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.6 KiB
Java

2 months ago
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;
2 months ago
/**
* 使
* @param message
* @return
*/
2 months ago
@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);
}
}