package cc.mrbird.febs.ai.controller.agent;
|
|
import cc.mrbird.febs.ai.req.agent.*;
|
import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryAllDto;
|
import cc.mrbird.febs.ai.res.agent.AiAgentInitVo;
|
import cc.mrbird.febs.ai.res.agent.ApiAgentCategoryVo;
|
import cc.mrbird.febs.ai.res.agent.ApiAgentVo;
|
import cc.mrbird.febs.ai.res.productCategory.ApiProductCategoryVo;
|
import cc.mrbird.febs.ai.service.AiAgentService;
|
import cc.mrbird.febs.common.entity.FebsResponse;
|
import cn.hutool.core.util.StrUtil;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiResponse;
|
import io.swagger.annotations.ApiResponses;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
import reactor.core.publisher.Flux;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
/**
|
* @author Administrator
|
*/
|
@Slf4j
|
@Validated
|
@RestController
|
@RequiredArgsConstructor
|
@RequestMapping(value = "/api/ai/agent")
|
@Api(value = "ApiAgentController", tags = "AI-智能体")
|
public class ApiAgentController {
|
|
private final AiAgentService service;
|
|
@ApiOperation(value = "全部分类(带公司ID)", notes = "全部分类(带公司ID)")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "success", response = ApiAgentCategoryVo.class)
|
})
|
@PostMapping(value = "/allCategoryList")
|
public FebsResponse allCategoryList(@RequestBody ApiAgentCategoryAllDto dto) {
|
|
return service.allCategoryList(dto);
|
}
|
|
|
@ApiOperation(value = "列表", notes = "列表")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "success", response = ApiAgentVo.class)
|
})
|
@PostMapping(value = "/list")
|
public FebsResponse list(@RequestBody @Validated ApiAgentPageDto dto) {
|
|
return service.agentList(dto);
|
}
|
|
@ApiOperation(value = "详情", notes = "详情")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "success", response = AiAgentInitVo.class)
|
})
|
@PostMapping(value = "/initAgent", produces = "application/json")
|
public FebsResponse initAgent(@RequestBody @Validated AiAgentInitDto dto) {
|
|
return service.initAgent(dto);
|
}
|
|
@ApiOperation(value = "初始化对话", notes = "初始化对话")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "success", response = AgentSendInitVo.class)
|
})
|
@PostMapping(value = "/initSend", produces = "application/json")
|
public FebsResponse initSend(@RequestBody @Validated AgentInitDto dto) {
|
|
return service.initSend(dto);
|
}
|
|
@ApiOperation(value = "保存对话消息", notes = "保存对话消息")
|
@PostMapping(value = "/saveContext")
|
public FebsResponse saveContext(@RequestBody @Validated AgentSaveContextDto dto) {
|
|
return service.saveContext(dto);
|
}
|
|
@ApiOperation("AI回答(流式)")
|
@ApiResponses({
|
@ApiResponse(code = 200, message = "流式响应", response = AitalkItemStreamVo.class),
|
})
|
@PostMapping("/aiAnswer")
|
public Flux<FebsResponse> aiAnswer(@RequestBody @Validated AitalkItemStreamDto dto) {
|
if (StrUtil.isEmpty(dto.getTalkId()) || StrUtil.isEmpty(dto.getReqContext())|| StrUtil.isEmpty(dto.getReqContext())){
|
return Flux.just(new FebsResponse().fail().message("参数异常"));
|
}
|
return service.aiAnswer(dto);
|
}
|
|
|
|
}
|