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.
42 lines
1.5 KiB
Java
42 lines
1.5 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;
|
||
|
|
||
|
@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);
|
||
|
}
|
||
|
}
|