新增用户问题记录功能。

This commit is contained in:
chenxudong 2025-04-03 17:06:37 +08:00
parent 218a2af06e
commit 97f68690b2
5 changed files with 42 additions and 8 deletions

View File

@ -2,6 +2,8 @@ package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.manage.pojo.models.AiFileUploadRecord; import com.electromagnetic.industry.software.manage.pojo.models.AiFileUploadRecord;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AiFileUploadRecordMapper extends BaseMapper<AiFileUploadRecord> { public interface AiFileUploadRecordMapper extends BaseMapper<AiFileUploadRecord> {
} }

View File

@ -0,0 +1,9 @@
package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.manage.pojo.models.AiQuestionRecord;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AiQuestionRecordMapper extends BaseMapper<AiQuestionRecord> {
}

View File

@ -3,8 +3,10 @@ package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = true)
@TableName(value = "ai_file_upload_record") @TableName(value = "ai_file_upload_record")
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)

View File

@ -0,0 +1,22 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = true)
@TableName(value = "ai_question_record")
@Data
@Accessors(chain = true)
public class AiQuestionRecord extends BaseModel{
private String id;
@TableField(value = "question")
private String question;
@TableField(value = "effect_flag")
private Integer effectFlag;
}

View File

@ -10,9 +10,10 @@ import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.IdWorker; import com.electromagnetic.industry.software.common.util.IdWorker;
import com.electromagnetic.industry.software.manage.config.ElePropertyConfig;
import com.electromagnetic.industry.software.manage.mapper.AiFileUploadRecordMapper; import com.electromagnetic.industry.software.manage.mapper.AiFileUploadRecordMapper;
import com.electromagnetic.industry.software.manage.mapper.AiQuestionRecordMapper;
import com.electromagnetic.industry.software.manage.pojo.models.AiFileUploadRecord; import com.electromagnetic.industry.software.manage.pojo.models.AiFileUploadRecord;
import com.electromagnetic.industry.software.manage.pojo.models.AiQuestionRecord;
import com.electromagnetic.industry.software.manage.pojo.req.QueryDTO; import com.electromagnetic.industry.software.manage.pojo.req.QueryDTO;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -38,7 +39,6 @@ import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
@Slf4j @Slf4j
@Service @Service
@ -60,12 +60,7 @@ public class ChatService {
private AiFileUploadRecordMapper aiFileUploadRecordMapper; private AiFileUploadRecordMapper aiFileUploadRecordMapper;
@Resource @Resource
private ElePropertyConfig elePropertyConfig; private AiQuestionRecordMapper aiQuestionRecordMapper;
public void add(String content) {
List<Document> documents = Stream.of(content).map(Document::new).collect(Collectors.toList());
vectorStore.write(documents);
}
public ElectromagneticResult<?> deleteDocument(List<String> ids) { public ElectromagneticResult<?> deleteDocument(List<String> ids) {
List<String> vectorIds = aiFileUploadRecordMapper.selectList(Wrappers.lambdaQuery(AiFileUploadRecord.class) List<String> vectorIds = aiFileUploadRecordMapper.selectList(Wrappers.lambdaQuery(AiFileUploadRecord.class)
@ -128,10 +123,14 @@ public class ChatService {
} }
public Flux<String> chatStreamStr(QueryDTO queryDTO) { public Flux<String> chatStreamStr(QueryDTO queryDTO) {
AiQuestionRecord record = new AiQuestionRecord().setQuestion(queryDTO.getMsg()).setId(IdWorker.getSnowFlakeIdString());
aiQuestionRecordMapper.insert(record);
return ChatClient.builder(model).defaultAdvisors(messageChatMemoryAdvisor, questionAnswerAdvisor).build().prompt(queryDTO.getMsg()).stream().content(); return ChatClient.builder(model).defaultAdvisors(messageChatMemoryAdvisor, questionAnswerAdvisor).build().prompt(queryDTO.getMsg()).stream().content();
} }
public Flux<ChatResponse> chatStreamResponse(QueryDTO queryDTO) { public Flux<ChatResponse> chatStreamResponse(QueryDTO queryDTO) {
AiQuestionRecord record = new AiQuestionRecord().setQuestion(queryDTO.getMsg()).setId(IdWorker.getSnowFlakeIdString());
aiQuestionRecordMapper.insert(record);
return ChatClient.builder(model).defaultAdvisors(messageChatMemoryAdvisor, questionAnswerAdvisor).build() return ChatClient.builder(model).defaultAdvisors(messageChatMemoryAdvisor, questionAnswerAdvisor).build()
.prompt(new Prompt(new UserMessage(queryDTO.getMsg()))) .prompt(new Prompt(new UserMessage(queryDTO.getMsg())))
.stream().chatResponse(); .stream().chatResponse();