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);
    }
}