Commit c964b8c3 authored by alex yao's avatar alex yao

fix:删除【变量】缓存

parent d7e36140
......@@ -5,8 +5,10 @@ import cn.com.poc.agent_application.constant.AgentApplicationConstants;
import cn.com.poc.agent_application.constant.AgentApplicationDialoguesRecordConstants;
import cn.com.poc.agent_application.constant.AgentApplicationGCConfigConstants;
import cn.com.poc.agent_application.entity.*;
import cn.com.poc.agent_application.query.DialogsIdsQueryByAgentIdQueryItem;
import cn.com.poc.agent_application.service.*;
import cn.com.poc.common.constant.CommonConstant;
import cn.com.poc.common.service.RedisService;
import cn.com.poc.common.utils.BlContext;
import cn.com.poc.common.utils.JsonUtils;
import cn.com.poc.knowledge.entity.BizKnowledgeDocumentEntity;
......@@ -27,6 +29,7 @@ import cn.com.poc.thirdparty.resource.demand.ai.function.LargeModelFunctionEnum;
import cn.com.poc.thirdparty.resource.demand.ai.function.long_memory.GetLongMemory;
import cn.com.poc.thirdparty.resource.demand.ai.function.long_memory.LongMemoryEntity;
import cn.com.poc.thirdparty.resource.demand.ai.function.value_memory.GetValueMemory;
import cn.com.poc.thirdparty.resource.demand.ai.function.value_memory.SetValueMemoryConstants;
import cn.com.poc.thirdparty.service.LLMService;
import cn.com.yict.framemax.core.exception.BusinessException;
import cn.com.yict.framemax.data.model.PagingInfo;
......@@ -86,6 +89,12 @@ public class AgentApplicationInfoServiceImpl implements AgentApplicationInfoServ
@Resource
private BizMemberAgentApplicationCollectService bizMemberAgentApplicationCollectService;
@Resource
private BizAgentApplicationDialoguesRecordService bizAgentApplicationDialoguesRecordService;
@Resource
private RedisService redisService;
@Override
public boolean updateAndPublish(BizAgentApplicationInfoEntity bizAgentApplicationInfoEntity) throws Exception {
UserBaseEntity userBaseEntity = BlContext.getCurrentUserNotException();
......@@ -103,6 +112,17 @@ public class AgentApplicationInfoServiceImpl implements AgentApplicationInfoServ
BizAgentApplicationPublishEntity publishEntity = new BizAgentApplicationPublishEntity();
BeanUtil.copyProperties(bizAgentApplicationInfoEntity, publishEntity);
bizAgentApplicationPublishService.save(publishEntity);
//【变量】结构改变,删除会话缓存
List<DialogsIdsQueryByAgentIdQueryItem> items = bizAgentApplicationDialoguesRecordService.queryDialogsIds(bizAgentApplicationInfoEntity.getAgentId());
if (CollectionUtils.isNotEmpty(items)) {
logger.info("variables structure cache remove,items:{}", items);
for (DialogsIdsQueryByAgentIdQueryItem item : items) {
String contentKey = SetValueMemoryConstants.REDIS_PREFIX + item.getDialogsId() + ":";
redisService.delByPre(contentKey);
}
}
return true;
}
......
select distinct
agent_id,
dialogs_id
from
biz_agent_application_dialogues_record
where is_deleted = 'N'
<<and agent_id = :agentId>>
group by dialogs_id
\ No newline at end of file
package cn.com.poc.agent_application.query;
import java.io.Serializable;
/**
* Query Condition class for DialogsIdsQueryByAgentIdQuery
*/
public class DialogsIdsQueryByAgentIdQueryCondition implements Serializable{
private static final long serialVersionUID = 1L;
private java.lang.String agentId;
public java.lang.String getAgentId(){
return this.agentId;
}
public void setAgentId(java.lang.String agentId){
this.agentId = agentId;
}
}
\ No newline at end of file
package cn.com.poc.agent_application.query;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import cn.com.yict.framemax.data.model.BaseItemClass;
/**
* Query Item class for DialogsIdsQueryByAgentIdQuery
*/
@Entity
public class DialogsIdsQueryByAgentIdQueryItem extends BaseItemClass implements Serializable{
private static final long serialVersionUID = 1L;
/** agent_id
*agent_id
*/
private java.lang.String agentId;
@Column(name = "agent_id")
public java.lang.String getAgentId(){
return this.agentId;
}
public void setAgentId(java.lang.String agentId){
this.agentId = agentId;
}
/** dialogs_id
*dialogs_id
*/
private java.lang.String dialogsId;
@Column(name = "dialogs_id")
public java.lang.String getDialogsId(){
return this.dialogsId;
}
public void setDialogsId(java.lang.String dialogsId){
this.dialogsId = dialogsId;
}
}
\ No newline at end of file
package cn.com.poc.agent_application.rest;
import cn.com.poc.agent_application.dto.*;
import cn.com.poc.agent_application.entity.Variable;
import cn.com.yict.framemax.core.rest.BaseRest;
import cn.com.yict.framemax.data.model.PagingInfo;
......@@ -16,6 +17,11 @@ import javax.servlet.http.HttpServletResponse;
@Permission(value = Access.Safety)
public interface AgentApplicationInfoRest extends BaseRest {
/**
* 保存应用变量结构
*/
AgentApplicationInfoDto saveVariableStructure(@RequestParam String agentId,@RequestBody List<Variable> variableStructure);
/**
* 获取应用详情
*/
......
......@@ -17,6 +17,7 @@ import cn.com.poc.thirdparty.resource.demand.ai.entity.dialogue.Tool;
import cn.com.poc.thirdparty.resource.demand.ai.function.LargeModelFunctionEnum;
import cn.com.poc.thirdparty.resource.demand.ai.function.long_memory.SetLongMemoryConstants;
import cn.com.poc.thirdparty.resource.demand.ai.function.value_memory.GetValueMemory;
import cn.com.poc.thirdparty.resource.demand.ai.function.value_memory.SetValueMemoryConstants;
import cn.com.yict.framemax.core.exception.BusinessException;
import cn.com.yict.framemax.data.model.PagingInfo;
import cn.hutool.core.collection.ListUtil;
......@@ -64,6 +65,16 @@ public class AgentApplicationInfoRestImpl implements AgentApplicationInfoRest {
@Resource
private BizAgentApplicationMallService bizAgentApplicationMallService;
@Override
public AgentApplicationInfoDto saveVariableStructure(String agentId, List<Variable> variableStructure) {
Assert.notNull(agentId, "agentId不能为空");
BizAgentApplicationInfoEntity bizAgentApplicationInfoEntity = bizAgentApplicationInfoService.saveVariableStructure(agentId, variableStructure);
if (bizAgentApplicationInfoEntity == null) {
throw new BusinessException("应用不存在");
}
return AgentApplicationInfoConvert.entityToDto(bizAgentApplicationInfoEntity);
}
public List<AgentApplicationInfoDto> getListByMember(AgentApplicationInfoSearchDto dto, PagingInfo pagingInfo) throws Exception {
UserBaseEntity userBaseEntity = BlContext.getCurrentUserNotException();
Long userId = userBaseEntity.getUserId();
......@@ -138,6 +149,16 @@ public class AgentApplicationInfoRestImpl implements AgentApplicationInfoRest {
Long userId = userBaseEntity.getUserId();
dto.getBaseInfo().setMemberId(userId.intValue());
BizAgentApplicationInfoEntity entity = AgentApplicationInfoConvert.dtoToEntity(dto);
// 如果存在agentId,则判断变量结构是否有变化,如果有变化,则删除redis中的数据
if (StringUtils.isNotBlank(entity.getAgentId())) {
BizAgentApplicationInfoEntity infoEntity = bizAgentApplicationInfoService.getByAgentId(entity.getAgentId());
if (infoEntity.getVariableStructure() != null || !infoEntity.getVariableStructure().equals(entity.getVariableStructure())) {
String contentKey = SetValueMemoryConstants.REDIS_PREFIX + dto.getBaseInfo().getAgentId() + ":" + BlContext.getCurrentUserNotException().getUserId().toString();
redisService.del(contentKey);
}
}
return AgentApplicationInfoConvert.entityToDto(StringUtils.isEmpty(entity.getAgentId()) ?
bizAgentApplicationInfoService.save(entity) : bizAgentApplicationInfoService.update(entity));
}
......@@ -217,8 +238,8 @@ public class AgentApplicationInfoRestImpl implements AgentApplicationInfoRest {
//初始化变量函数
Map<Object, Object> map = GetValueMemory.get(agentId);
List<Variable> variableStructure = infoEntity.getVariableStructure();
if (MapUtils.isEmpty(map)) {
List<Variable> variableStructure = infoEntity.getVariableStructure();
for (Variable variable : variableStructure) {
String key = variable.getKey();
String variableDefault = variable.getVariableDefault();
......@@ -228,6 +249,7 @@ public class AgentApplicationInfoRestImpl implements AgentApplicationInfoRest {
LargeModelFunctionEnum.valueOf(functionName).getFunction().doFunction(jsonObject.toJSONString(), agentId);
}
}
}
//开启长期记忆
if (CommonConstant.YOrN.Y.equals(infoEntity.getIsLongMemory())) {
......@@ -247,7 +269,8 @@ public class AgentApplicationInfoRestImpl implements AgentApplicationInfoRest {
agentApplicationInfoService.callAgentApplication(agentId, model, infoEntity.getUnitIds()
, agentSystem, kdIds.toArray(new Integer[0]), infoEntity.getCommunicationTurn(), topP, temperature
, dto.getMessages(), tools, httpServletResponse);
} catch (Exception e) {
} catch (
Exception e) {
httpServletResponse.setContentType("text/event-stream");
PrintWriter writer = httpServletResponse.getWriter();
writer.write("data: {\"code\":-1,\"message\":\"" + e.getLocalizedMessage() + "\"} \n\n");
......
package cn.com.poc.agent_application.service;
import cn.com.poc.agent_application.query.AgentApplicationDialoguesRecordQueryItem;
import cn.com.poc.agent_application.query.DialogsIdsQueryByAgentIdQueryItem;
import cn.com.poc.agent_application.query.MemberDialoguesQueryItem;
import cn.com.yict.framemax.core.service.BaseService;
import cn.com.poc.agent_application.entity.BizAgentApplicationDialoguesRecordEntity;
......@@ -20,9 +21,9 @@ public interface BizAgentApplicationDialoguesRecordService extends BaseService {
BizAgentApplicationDialoguesRecordEntity update(BizAgentApplicationDialoguesRecordEntity entity) throws Exception;
void deletedById(java.lang.Long id) ;
void deletedById(java.lang.Long id);
List<BizAgentApplicationDialoguesRecordEntity> getRecord(String agentId, Integer turn);
List<DialogsIdsQueryByAgentIdQueryItem> queryDialogsIds(String agentId);
/**
* 获取用户的对话【组】
......
package cn.com.poc.agent_application.service;
import cn.com.poc.agent_application.dto.AgentApplicationInfoDto;
import cn.com.poc.agent_application.entity.Variable;
import cn.com.poc.agent_application.query.AgentApplicationInfoQueryCondition;
import cn.com.yict.framemax.core.service.BaseService;
import cn.com.poc.agent_application.entity.BizAgentApplicationInfoEntity;
......@@ -26,4 +28,6 @@ public interface BizAgentApplicationInfoService extends BaseService {
boolean publish(String agentId) throws Exception;
boolean unPublish(String agentId);
BizAgentApplicationInfoEntity saveVariableStructure(String agentId, List<Variable> variableStructure);
}
\ No newline at end of file
package cn.com.poc.agent_application.service.impl;
import cn.com.poc.agent_application.query.AgentApplicationDialoguesRecordQueryCondition;
import cn.com.poc.agent_application.query.AgentApplicationDialoguesRecordQueryItem;
import cn.com.poc.agent_application.query.MemberDialoguesQueryCondition;
import cn.com.poc.agent_application.query.MemberDialoguesQueryItem;
import cn.com.poc.agent_application.query.*;
import cn.com.poc.common.constant.CommonConstant;
import cn.com.yict.framemax.core.service.impl.BaseServiceImpl;
import cn.com.poc.agent_application.service.BizAgentApplicationDialoguesRecordService;
......@@ -135,8 +132,10 @@ public class BizAgentApplicationDialoguesRecordServiceImpl extends BaseServiceIm
}
@Override
public List<BizAgentApplicationDialoguesRecordEntity> getRecord(String agentId, Integer turn) {
return null;
public List<DialogsIdsQueryByAgentIdQueryItem> queryDialogsIds(String agentId) {
DialogsIdsQueryByAgentIdQueryCondition condition = new DialogsIdsQueryByAgentIdQueryCondition();
condition.setAgentId(agentId);
return this.sqlDao.query(condition, DialogsIdsQueryByAgentIdQueryItem.class);
}
@Override
......
package cn.com.poc.agent_application.service.impl;
import cn.com.poc.agent_application.constant.AgentApplicationConstants;
import cn.com.poc.agent_application.entity.Variable;
import cn.com.poc.agent_application.query.AgentApplicationInfoQueryCondition;
import cn.com.poc.agent_application.query.AgentApplicationInfoQueryItem;
import cn.com.poc.common.constant.CommonConstant;
......@@ -160,6 +161,26 @@ public class BizAgentApplicationInfoServiceImpl extends BaseServiceImpl
return true;
}
@Override
public BizAgentApplicationInfoEntity saveVariableStructure(String agentId, List<Variable> variableStructure) {
Assert.notNull(agentId);
BizAgentApplicationInfoModel model = new BizAgentApplicationInfoModel();
model.setAgentId(agentId);
model.setIsDeleted(CommonConstant.IsDeleted.N);
List<BizAgentApplicationInfoModel> models = this.repository.findByExample(model);
if (CollectionUtils.isEmpty(models)) {
return null;
}
BizAgentApplicationInfoModel updateModel = models.get(0);
String variableStructureStr = null;
if (CollectionUtils.isNotEmpty(variableStructure)) {
variableStructureStr = JsonUtils.serialize(variableStructure);
}
updateModel.setVariableStructure(variableStructureStr);
BizAgentApplicationInfoModel saveModel = this.repository.save(updateModel);
return AgentApplicationInfoConvert.modelToEntity(saveModel);
}
/**
* 参数验证和转换 Entity To Model
*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment