mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-25 16:43:55 +08:00
Merge pull request #1911 from xinnan-tech/manager-api-agent-optimize
优化
This commit is contained in:
+24
@@ -41,6 +41,7 @@ import xiaozhi.modules.agent.service.AgentTemplateService;
|
|||||||
import xiaozhi.modules.agent.vo.AgentInfoVO;
|
import xiaozhi.modules.agent.vo.AgentInfoVO;
|
||||||
import xiaozhi.modules.device.service.DeviceService;
|
import xiaozhi.modules.device.service.DeviceService;
|
||||||
import xiaozhi.modules.model.dto.ModelProviderDTO;
|
import xiaozhi.modules.model.dto.ModelProviderDTO;
|
||||||
|
import xiaozhi.modules.model.entity.ModelConfigEntity;
|
||||||
import xiaozhi.modules.model.service.ModelConfigService;
|
import xiaozhi.modules.model.service.ModelConfigService;
|
||||||
import xiaozhi.modules.model.service.ModelProviderService;
|
import xiaozhi.modules.model.service.ModelProviderService;
|
||||||
import xiaozhi.modules.security.user.SecurityUser;
|
import xiaozhi.modules.security.user.SecurityUser;
|
||||||
@@ -324,9 +325,32 @@ public class AgentServiceImpl extends BaseServiceImpl<AgentDao, AgentEntity> imp
|
|||||||
// 删除音频数据
|
// 删除音频数据
|
||||||
agentChatHistoryService.deleteByAgentId(existingEntity.getId(), true, false);
|
agentChatHistoryService.deleteByAgentId(existingEntity.getId(), true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean b = validateLLMIntentParams(dto.getLlmModelId(), dto.getIntentModelId());
|
||||||
|
if (!b) {
|
||||||
|
throw new RenException("LLM大模型和Intent意图识别,选择参数不匹配");
|
||||||
|
}
|
||||||
this.updateById(existingEntity);
|
this.updateById(existingEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证大语言模型和意图识别的参数是否符合匹配
|
||||||
|
*
|
||||||
|
* @param llmModelId 大语言模型id
|
||||||
|
* @param intentModelId 意图识别id
|
||||||
|
* @return T 匹配 : F 不匹配
|
||||||
|
*/
|
||||||
|
private boolean validateLLMIntentParams(String llmModelId, String intentModelId) {
|
||||||
|
ModelConfigEntity llmModelData = modelConfigService.selectById(llmModelId);
|
||||||
|
String type = llmModelData.getConfigJson().get("type").toString();
|
||||||
|
// 如果查询大语言模型是openai或者ollama,意图识别选参数都可以
|
||||||
|
if ("openai".equals(type) || "ollama".equals(type)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// 除了openai和ollama的类型,不可以选择id为Intent_function_call(函数调用)的意图识别
|
||||||
|
return !"Intent_function_call".equals(intentModelId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public String createAgent(AgentCreateDTO dto) {
|
public String createAgent(AgentCreateDTO dto) {
|
||||||
|
|||||||
+9
-5
@@ -21,11 +21,7 @@ import xiaozhi.common.utils.ConvertUtils;
|
|||||||
import xiaozhi.common.utils.Result;
|
import xiaozhi.common.utils.Result;
|
||||||
import xiaozhi.modules.agent.service.AgentTemplateService;
|
import xiaozhi.modules.agent.service.AgentTemplateService;
|
||||||
import xiaozhi.modules.config.service.ConfigService;
|
import xiaozhi.modules.config.service.ConfigService;
|
||||||
import xiaozhi.modules.model.dto.ModelBasicInfoDTO;
|
import xiaozhi.modules.model.dto.*;
|
||||||
import xiaozhi.modules.model.dto.ModelConfigBodyDTO;
|
|
||||||
import xiaozhi.modules.model.dto.ModelConfigDTO;
|
|
||||||
import xiaozhi.modules.model.dto.ModelProviderDTO;
|
|
||||||
import xiaozhi.modules.model.dto.VoiceDTO;
|
|
||||||
import xiaozhi.modules.model.entity.ModelConfigEntity;
|
import xiaozhi.modules.model.entity.ModelConfigEntity;
|
||||||
import xiaozhi.modules.model.service.ModelConfigService;
|
import xiaozhi.modules.model.service.ModelConfigService;
|
||||||
import xiaozhi.modules.model.service.ModelProviderService;
|
import xiaozhi.modules.model.service.ModelProviderService;
|
||||||
@@ -52,6 +48,14 @@ public class ModelController {
|
|||||||
return new Result<List<ModelBasicInfoDTO>>().ok(modelList);
|
return new Result<List<ModelBasicInfoDTO>>().ok(modelList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/llm/names")
|
||||||
|
@Operation(summary = "获取LLM模型信息")
|
||||||
|
@RequiresPermissions("sys:role:normal")
|
||||||
|
public Result<List<LlmModelBasicInfoDTO>> getLlmModelCodeList(@RequestParam(required = false) String modelName) {
|
||||||
|
List<LlmModelBasicInfoDTO> llmModelCodeList = modelConfigService.getLlmModelCodeList(modelName);
|
||||||
|
return new Result<List<LlmModelBasicInfoDTO>>().ok(llmModelCodeList);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/{modelType}/provideTypes")
|
@GetMapping("/{modelType}/provideTypes")
|
||||||
@Operation(summary = "获取模型供应器列表")
|
@Operation(summary = "获取模型供应器列表")
|
||||||
@RequiresPermissions("sys:role:superAdmin")
|
@RequiresPermissions("sys:role:superAdmin")
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package xiaozhi.modules.model.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LLM的模型的基础展示数据
|
||||||
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Data
|
||||||
|
public class LlmModelBasicInfoDTO extends ModelBasicInfoDTO{
|
||||||
|
private String type;
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import xiaozhi.common.page.PageData;
|
import xiaozhi.common.page.PageData;
|
||||||
import xiaozhi.common.service.BaseService;
|
import xiaozhi.common.service.BaseService;
|
||||||
|
import xiaozhi.modules.model.dto.LlmModelBasicInfoDTO;
|
||||||
import xiaozhi.modules.model.dto.ModelBasicInfoDTO;
|
import xiaozhi.modules.model.dto.ModelBasicInfoDTO;
|
||||||
import xiaozhi.modules.model.dto.ModelConfigBodyDTO;
|
import xiaozhi.modules.model.dto.ModelConfigBodyDTO;
|
||||||
import xiaozhi.modules.model.dto.ModelConfigDTO;
|
import xiaozhi.modules.model.dto.ModelConfigDTO;
|
||||||
@@ -13,6 +14,8 @@ public interface ModelConfigService extends BaseService<ModelConfigEntity> {
|
|||||||
|
|
||||||
List<ModelBasicInfoDTO> getModelCodeList(String modelType, String modelName);
|
List<ModelBasicInfoDTO> getModelCodeList(String modelType, String modelName);
|
||||||
|
|
||||||
|
List<LlmModelBasicInfoDTO> getLlmModelCodeList(String modelName);
|
||||||
|
|
||||||
PageData<ModelConfigDTO> getPageList(String modelType, String modelName, String page, String limit);
|
PageData<ModelConfigDTO> getPageList(String modelType, String modelName, String page, String limit);
|
||||||
|
|
||||||
ModelConfigDTO add(String modelType, String provideCode, ModelConfigBodyDTO modelConfigBodyDTO);
|
ModelConfigDTO add(String modelType, String provideCode, ModelConfigBodyDTO modelConfigBodyDTO);
|
||||||
|
|||||||
+38
@@ -8,6 +8,7 @@ import java.util.stream.Collectors;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
|
||||||
@@ -23,6 +24,7 @@ import xiaozhi.common.utils.ConvertUtils;
|
|||||||
import xiaozhi.modules.agent.dao.AgentDao;
|
import xiaozhi.modules.agent.dao.AgentDao;
|
||||||
import xiaozhi.modules.agent.entity.AgentEntity;
|
import xiaozhi.modules.agent.entity.AgentEntity;
|
||||||
import xiaozhi.modules.model.dao.ModelConfigDao;
|
import xiaozhi.modules.model.dao.ModelConfigDao;
|
||||||
|
import xiaozhi.modules.model.dto.LlmModelBasicInfoDTO;
|
||||||
import xiaozhi.modules.model.dto.ModelBasicInfoDTO;
|
import xiaozhi.modules.model.dto.ModelBasicInfoDTO;
|
||||||
import xiaozhi.modules.model.dto.ModelConfigBodyDTO;
|
import xiaozhi.modules.model.dto.ModelConfigBodyDTO;
|
||||||
import xiaozhi.modules.model.dto.ModelConfigDTO;
|
import xiaozhi.modules.model.dto.ModelConfigDTO;
|
||||||
@@ -52,6 +54,25 @@ public class ModelConfigServiceImpl extends BaseServiceImpl<ModelConfigDao, Mode
|
|||||||
return ConvertUtils.sourceToTarget(entities, ModelBasicInfoDTO.class);
|
return ConvertUtils.sourceToTarget(entities, ModelBasicInfoDTO.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<LlmModelBasicInfoDTO> getLlmModelCodeList(String modelName) {
|
||||||
|
List<ModelConfigEntity> entities = modelConfigDao.selectList(
|
||||||
|
new QueryWrapper<ModelConfigEntity>()
|
||||||
|
.eq("model_type", "llm")
|
||||||
|
.eq("is_enabled", 1)
|
||||||
|
.like(StringUtils.isNotBlank(modelName), "model_name", "%" + modelName + "%")
|
||||||
|
.select("id", "model_name", "config_json"));
|
||||||
|
// 处理获取到的内容
|
||||||
|
return entities.stream().map(item -> {
|
||||||
|
LlmModelBasicInfoDTO dto = new LlmModelBasicInfoDTO();
|
||||||
|
dto.setId(item.getId());
|
||||||
|
dto.setModelName(item.getModelName());
|
||||||
|
String type = item.getConfigJson().get("type").toString();
|
||||||
|
dto.setType(type);
|
||||||
|
return dto;
|
||||||
|
}).toList();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageData<ModelConfigDTO> getPageList(String modelType, String modelName, String page, String limit) {
|
public PageData<ModelConfigDTO> getPageList(String modelType, String modelName, String page, String limit) {
|
||||||
Map<String, Object> params = new HashMap<String, Object>();
|
Map<String, Object> params = new HashMap<String, Object>();
|
||||||
@@ -94,6 +115,21 @@ public class ModelConfigServiceImpl extends BaseServiceImpl<ModelConfigDao, Mode
|
|||||||
if (CollectionUtil.isEmpty(providerList)) {
|
if (CollectionUtil.isEmpty(providerList)) {
|
||||||
throw new RenException("供应器不存在");
|
throw new RenException("供应器不存在");
|
||||||
}
|
}
|
||||||
|
if (modelConfigBodyDTO.getConfigJson().containsKey("llm")) {
|
||||||
|
String llm = modelConfigBodyDTO.getConfigJson().get("llm").toString();
|
||||||
|
ModelConfigEntity modelConfigEntity = modelConfigDao.selectOne(new LambdaQueryWrapper<ModelConfigEntity>()
|
||||||
|
.eq(ModelConfigEntity::getId, llm));
|
||||||
|
String selectModelType = (modelConfigEntity == null || modelConfigEntity.getModelType() == null) ? null
|
||||||
|
: modelConfigEntity.getModelType().toUpperCase();
|
||||||
|
if (modelConfigEntity == null || !"LLM".equals(selectModelType)) {
|
||||||
|
throw new RenException("设置的LLM不存在");
|
||||||
|
}
|
||||||
|
String type = modelConfigEntity.getConfigJson().get("type").toString();
|
||||||
|
// 如果查询大语言模型是openai或者ollama,意图识别选参数都可以
|
||||||
|
if (!"openai".equals(type) && !"ollama".equals(type)) {
|
||||||
|
throw new RenException("设置的LLM不是openai和ollama");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 再更新供应器提供的模型
|
// 再更新供应器提供的模型
|
||||||
ModelConfigEntity modelConfigEntity = ConvertUtils.sourceToTarget(modelConfigBodyDTO, ModelConfigEntity.class);
|
ModelConfigEntity modelConfigEntity = ConvertUtils.sourceToTarget(modelConfigBodyDTO, ModelConfigEntity.class);
|
||||||
@@ -137,6 +173,8 @@ public class ModelConfigServiceImpl extends BaseServiceImpl<ModelConfigDao, Mode
|
|||||||
.or()
|
.or()
|
||||||
.eq("mem_model_id", modelId)
|
.eq("mem_model_id", modelId)
|
||||||
.or()
|
.or()
|
||||||
|
.eq("vllm_model_id", modelId)
|
||||||
|
.or()
|
||||||
.eq("intent_model_id", modelId));
|
.eq("intent_model_id", modelId));
|
||||||
if (!agents.isEmpty()) {
|
if (!agents.isEmpty()) {
|
||||||
String agentNames = agents.stream()
|
String agentNames = agents.stream()
|
||||||
|
|||||||
@@ -106,6 +106,22 @@ export default {
|
|||||||
});
|
});
|
||||||
}).send();
|
}).send();
|
||||||
},
|
},
|
||||||
|
// 获取LLM模型名称列表
|
||||||
|
getLlmModelCodeList(modelName, callback) {
|
||||||
|
RequestService.sendRequest()
|
||||||
|
.url(`${getServiceUrl()}/models/llm/names`)
|
||||||
|
.method('GET')
|
||||||
|
.data({ modelName })
|
||||||
|
.success((res) => {
|
||||||
|
RequestService.clearRequestTime();
|
||||||
|
callback(res);
|
||||||
|
})
|
||||||
|
.networkFail(() => {
|
||||||
|
RequestService.reAjaxFun(() => {
|
||||||
|
this.getLlmModelCodeList(modelName, callback);
|
||||||
|
});
|
||||||
|
}).send();
|
||||||
|
},
|
||||||
// 获取模型音色列表
|
// 获取模型音色列表
|
||||||
getModelVoices(modelId, voiceName, callback) {
|
getModelVoices(modelId, voiceName, callback) {
|
||||||
const queryParams = new URLSearchParams({
|
const queryParams = new URLSearchParams({
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
<div class="model-select-wrapper">
|
<div class="model-select-wrapper">
|
||||||
<el-select v-model="form.model[model.key]" filterable placeholder="请选择" class="form-select"
|
<el-select v-model="form.model[model.key]" filterable placeholder="请选择" class="form-select"
|
||||||
@change="handleModelChange(model.type, $event)">
|
@change="handleModelChange(model.type, $event)">
|
||||||
<el-option v-for="(item, optionIndex) in modelOptions[model.type]"
|
<el-option v-for="(item, optionIndex) in modelOptions[model.type]" v-if="!item.isHidden"
|
||||||
:key="`option-${index}-${optionIndex}`" :label="item.label" :value="item.value" />
|
:key="`option-${index}-${optionIndex}`" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<div v-if="showFunctionIcons(model.type)" class="function-icons">
|
<div v-if="showFunctionIcons(model.type)" class="function-icons">
|
||||||
@@ -130,7 +130,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<function-dialog v-model="showFunctionDialog" :functions="currentFunctions" :all-functions="allFunctions"
|
<function-dialog v-model="showFunctionDialog" :functions="currentFunctions" :all-functions="allFunctions"
|
||||||
:agent-id="$route.query.agentId" @update-functions="handleUpdateFunctions" @dialog-closed="handleDialogClosed" />
|
:agent-id="$route.query.agentId" @update-functions="handleUpdateFunctions" @dialog-closed="handleDialogClosed" />
|
||||||
</div>
|
</div>
|
||||||
@@ -173,8 +172,9 @@ export default {
|
|||||||
{ label: '视觉大模型(VLLM)', key: 'vllmModelId', type: 'VLLM' },
|
{ label: '视觉大模型(VLLM)', key: 'vllmModelId', type: 'VLLM' },
|
||||||
{ label: '意图识别(Intent)', key: 'intentModelId', type: 'Intent' },
|
{ label: '意图识别(Intent)', key: 'intentModelId', type: 'Intent' },
|
||||||
{ label: '记忆(Memory)', key: 'memModelId', type: 'Memory' },
|
{ label: '记忆(Memory)', key: 'memModelId', type: 'Memory' },
|
||||||
{ label: '语音合成(TTS)', key: 'ttsModelId', type: 'TTS' },
|
{ label: '语音合成(TTS)', key: 'ttsModelId', type: 'TTS' }
|
||||||
],
|
],
|
||||||
|
llmModeTypeMap: new Map(),
|
||||||
modelOptions: {},
|
modelOptions: {},
|
||||||
templates: [],
|
templates: [],
|
||||||
loadingTemplate: false,
|
loadingTemplate: false,
|
||||||
@@ -356,6 +356,9 @@ export default {
|
|||||||
});
|
});
|
||||||
// 备份原始,以备取消时恢复
|
// 备份原始,以备取消时恢复
|
||||||
this.originalFunctions = JSON.parse(JSON.stringify(this.currentFunctions));
|
this.originalFunctions = JSON.parse(JSON.stringify(this.currentFunctions));
|
||||||
|
|
||||||
|
// 确保意图识别选项的可见性正确
|
||||||
|
this.updateIntentOptionsVisibility();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(data.msg || '获取配置失败');
|
this.$message.error(data.msg || '获取配置失败');
|
||||||
@@ -364,16 +367,41 @@ export default {
|
|||||||
},
|
},
|
||||||
fetchModelOptions() {
|
fetchModelOptions() {
|
||||||
this.models.forEach(model => {
|
this.models.forEach(model => {
|
||||||
Api.model.getModelNames(model.type, '', ({ data }) => {
|
if (model.type != "LLM") {
|
||||||
if (data.code === 0) {
|
Api.model.getModelNames(model.type, '', ({ data }) => {
|
||||||
this.$set(this.modelOptions, model.type, data.data.map(item => ({
|
if (data.code === 0) {
|
||||||
value: item.id,
|
this.$set(this.modelOptions, model.type, data.data.map(item => ({
|
||||||
label: item.modelName
|
value: item.id,
|
||||||
})));
|
label: item.modelName,
|
||||||
} else {
|
isHidden: false
|
||||||
this.$message.error(data.msg || '获取模型列表失败');
|
})));
|
||||||
}
|
|
||||||
});
|
// 如果是意图识别选项,需要根据当前LLM类型更新可见性
|
||||||
|
if (model.type === 'Intent') {
|
||||||
|
this.updateIntentOptionsVisibility();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.$message.error(data.msg || '获取模型列表失败');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
Api.model.getLlmModelCodeList('', ({ data }) => {
|
||||||
|
if (data.code === 0) {
|
||||||
|
let LLMdata = []
|
||||||
|
data.data.forEach(item => {
|
||||||
|
LLMdata.push({
|
||||||
|
value: item.id,
|
||||||
|
label: item.modelName,
|
||||||
|
isHidden: false
|
||||||
|
})
|
||||||
|
this.llmModeTypeMap.set(item.id, item.type)
|
||||||
|
})
|
||||||
|
this.$set(this.modelOptions, model.type, LLMdata);
|
||||||
|
} else {
|
||||||
|
this.$message.error(data.msg || '获取LLM模型列表失败');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
fetchVoiceOptions(modelId) {
|
fetchVoiceOptions(modelId) {
|
||||||
@@ -410,6 +438,10 @@ export default {
|
|||||||
if (type === 'Memory' && value !== 'Memory_nomem' && (this.form.chatHistoryConf === 0 || this.form.chatHistoryConf === null)) {
|
if (type === 'Memory' && value !== 'Memory_nomem' && (this.form.chatHistoryConf === 0 || this.form.chatHistoryConf === null)) {
|
||||||
this.form.chatHistoryConf = 2;
|
this.form.chatHistoryConf = 2;
|
||||||
}
|
}
|
||||||
|
if (type === 'LLM') {
|
||||||
|
// 当LLM类型改变时,更新意图识别选项的可见性
|
||||||
|
this.updateIntentOptionsVisibility();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
fetchAllFunctions() {
|
fetchAllFunctions() {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@@ -450,6 +482,42 @@ export default {
|
|||||||
}
|
}
|
||||||
this.showFunctionDialog = false;
|
this.showFunctionDialog = false;
|
||||||
},
|
},
|
||||||
|
updateIntentOptionsVisibility() {
|
||||||
|
// 根据当前选择的LLM类型更新意图识别选项的可见性
|
||||||
|
const currentLlmId = this.form.model.llmModelId;
|
||||||
|
if (!currentLlmId || !this.modelOptions['Intent']) return;
|
||||||
|
|
||||||
|
const llmType = this.llmModeTypeMap.get(currentLlmId);
|
||||||
|
if (!llmType) return;
|
||||||
|
|
||||||
|
this.modelOptions['Intent'].forEach(item => {
|
||||||
|
if (item.value === "Intent_function_call") {
|
||||||
|
// 如果llmType是openai或ollama,允许选择function_call
|
||||||
|
// 否则隐藏function_call选项
|
||||||
|
if (llmType === "openai" || llmType === "ollama") {
|
||||||
|
item.isHidden = false;
|
||||||
|
} else {
|
||||||
|
item.isHidden = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 其他意图识别选项始终可见
|
||||||
|
item.isHidden = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 如果当前选择的意图识别是function_call,但LLM类型不支持,则设置为可选的第一项
|
||||||
|
if (this.form.model.intentModelId === "Intent_function_call" &&
|
||||||
|
llmType !== "openai" && llmType !== "ollama") {
|
||||||
|
// 找到第一个可见的选项
|
||||||
|
const firstVisibleOption = this.modelOptions['Intent'].find(item => !item.isHidden);
|
||||||
|
if (firstVisibleOption) {
|
||||||
|
this.form.model.intentModelId = firstVisibleOption.value;
|
||||||
|
} else {
|
||||||
|
// 如果没有可见选项,设置为Intent_nointent
|
||||||
|
this.form.model.intentModelId = 'Intent_nointent';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
updateChatHistoryConf() {
|
updateChatHistoryConf() {
|
||||||
if (this.form.model.memModelId === 'Memory_nomem') {
|
if (this.form.model.memModelId === 'Memory_nomem') {
|
||||||
this.form.chatHistoryConf = 0;
|
this.form.chatHistoryConf = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user