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