|
@@ -1,7 +1,8 @@
|
|
|
<template>
|
|
<template>
|
|
|
|
|
+ <!-- 智能体配置 -->
|
|
|
<a-modal
|
|
<a-modal
|
|
|
v-model:visible="visible"
|
|
v-model:visible="visible"
|
|
|
- title="智能体配置"
|
|
|
|
|
|
|
+ :title="$t('management.rg_config.title')"
|
|
|
@before-open="handleOpened"
|
|
@before-open="handleOpened"
|
|
|
@cancel="handleCancel"
|
|
@cancel="handleCancel"
|
|
|
:ok-loading="loading"
|
|
:ok-loading="loading"
|
|
@@ -13,7 +14,8 @@
|
|
|
<a-row class="">
|
|
<a-row class="">
|
|
|
<a-col :span="24">
|
|
<a-col :span="24">
|
|
|
<a-tabs type="capsule" size="large" :active-key="activeKey" @change="handleTabChange">
|
|
<a-tabs type="capsule" size="large" :active-key="activeKey" @change="handleTabChange">
|
|
|
- <a-tab-pane key="1" title="助理设置">
|
|
|
|
|
|
|
+ <!-- 助理设置 -->
|
|
|
|
|
+ <a-tab-pane key="1" :title="$t('management.rg_config.tab_1')">
|
|
|
<a-divider style="margin-bottom: 20px; margin-top: 0" />
|
|
<a-divider style="margin-bottom: 20px; margin-top: 0" />
|
|
|
<div style="width: 100%" :style="{ height: height }">
|
|
<div style="width: 100%" :style="{ height: height }">
|
|
|
<a-form
|
|
<a-form
|
|
@@ -23,10 +25,12 @@
|
|
|
@submit="handleSubmit"
|
|
@submit="handleSubmit"
|
|
|
:style="{ width: '90%', margin: '0 auto' }"
|
|
:style="{ width: '90%', margin: '0 auto' }"
|
|
|
>
|
|
>
|
|
|
- <a-form-item field="name" label="智能体名称">
|
|
|
|
|
- <a-input v-model="form.name" placeholder="请输入名称" />
|
|
|
|
|
|
|
+ <!-- 智能体名称 -->
|
|
|
|
|
+ <a-form-item field="name" :label="$t('management.rg_config.label_name')">
|
|
|
|
|
+ <a-input v-model="form.name" :placeholder="$t('management.rg_config.input_placeholder')" />
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
- <a-form-item v-if="typeAngint === 'add'" label="智能体图标" required>
|
|
|
|
|
|
|
+ <!-- 智能体图标 -->
|
|
|
|
|
+ <a-form-item v-if="typeAngint === 'add'" :label="$t('management.rg_config.label_icon')" required>
|
|
|
<a-space direction="vertical" :style="{ width: '100%' }">
|
|
<a-space direction="vertical" :style="{ width: '100%' }">
|
|
|
<div class="upload-empty" v-if="!props.target_icon.length" @click="handleUploadIcon">
|
|
<div class="upload-empty" v-if="!props.target_icon.length" @click="handleUploadIcon">
|
|
|
<icon-plus class="icon"></icon-plus>
|
|
<icon-plus class="icon"></icon-plus>
|
|
@@ -39,13 +43,16 @@
|
|
|
/>
|
|
/>
|
|
|
</a-space>
|
|
</a-space>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
- <a-form-item label="空回复">
|
|
|
|
|
|
|
+ <!-- 空回复 -->
|
|
|
|
|
+ <a-form-item :label="$t('management.rg_config.label_empty')">
|
|
|
<a-input v-model="form.prompt_config.empty_response" placeholder="" />
|
|
<a-input v-model="form.prompt_config.empty_response" placeholder="" />
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
- <a-form-item label="设置开场白">
|
|
|
|
|
|
|
+ <!-- 设置开场白 -->
|
|
|
|
|
+ <a-form-item :label="$t('management.rg_config.label_set_word')">
|
|
|
<a-textarea v-model="form.prompt_config.prologue" placeholder="" style="height: 100px" />
|
|
<a-textarea v-model="form.prompt_config.prologue" placeholder="" style="height: 100px" />
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
- <a-form-item label="显示引文">
|
|
|
|
|
|
|
+ <!-- 显示引文 -->
|
|
|
|
|
+ <a-form-item :label="$t('management.rg_config.label_quo')">
|
|
|
<a-space direction="vertical">
|
|
<a-space direction="vertical">
|
|
|
<a-switch v-model="form.prompt_config.quote" size="small" />
|
|
<a-switch v-model="form.prompt_config.quote" size="small" />
|
|
|
</a-space>
|
|
</a-space>
|
|
@@ -55,8 +62,9 @@
|
|
|
<a-switch v-model="form.prompt_config.self_rag" size="small" />
|
|
<a-switch v-model="form.prompt_config.self_rag" size="small" />
|
|
|
</a-space>
|
|
</a-space>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
- <a-form-item field="kb_ids" label="知识库">
|
|
|
|
|
- <a-select v-model="form.kb_ids" placeholder="请选择 ..." multiple>
|
|
|
|
|
|
|
+ <!-- 知识库 -->
|
|
|
|
|
+ <a-form-item field="kb_ids" :label="$t('management.rg_config.label_kb')">
|
|
|
|
|
+ <a-select v-model="form.kb_ids" :placeholder="$t('management.rg_config.select_placeholder')" multiple>
|
|
|
<a-option v-for="item in tabs" :key="item.id" :value="item.id">
|
|
<a-option v-for="item in tabs" :key="item.id" :value="item.id">
|
|
|
{{ item.name }}
|
|
{{ item.name }}
|
|
|
</a-option>
|
|
</a-option>
|
|
@@ -65,7 +73,8 @@
|
|
|
</a-form>
|
|
</a-form>
|
|
|
</div>
|
|
</div>
|
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
|
- <a-tab-pane key="2" title="提示引擎">
|
|
|
|
|
|
|
+ <!-- 提示引擎 -->
|
|
|
|
|
+ <a-tab-pane key="2" :title="$t('management.rg_config.tab_2')">
|
|
|
<a-divider style="margin-bottom: 20px; margin-top: 0" />
|
|
<a-divider style="margin-bottom: 20px; margin-top: 0" />
|
|
|
<a-scrollbar style="width: 100%; overflow: auto" :style="{ height: height }">
|
|
<a-scrollbar style="width: 100%; overflow: auto" :style="{ height: height }">
|
|
|
<a-form
|
|
<a-form
|
|
@@ -76,22 +85,31 @@
|
|
|
auto-label-width
|
|
auto-label-width
|
|
|
:style="{ width: '90%', margin: '0 auto' }"
|
|
:style="{ width: '90%', margin: '0 auto' }"
|
|
|
>
|
|
>
|
|
|
- <a-form-item field="prompt_config.system" label="系统">
|
|
|
|
|
|
|
+ <!-- 系统 -->
|
|
|
|
|
+ <a-form-item field="prompt_config.system" :label="$t('management.rg_config.system')">
|
|
|
<a-textarea v-model="form.prompt_config.system" placeholder="" style="height: 180px" />
|
|
<a-textarea v-model="form.prompt_config.system" placeholder="" style="height: 180px" />
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
<a-divider style="margin: 0; margin-bottom: 10px" />
|
|
<a-divider style="margin: 0; margin-bottom: 10px" />
|
|
|
- <a-form-item label="相似度阈值">
|
|
|
|
|
|
|
+ <!-- 相似度阈值 -->
|
|
|
|
|
+ <a-form-item :label="$t('management.rg_config.similarity_threshold')">
|
|
|
<a-slider v-model="form.similarity_threshold" :step="0.01" :min="0" :max="1" />
|
|
<a-slider v-model="form.similarity_threshold" :step="0.01" :min="0" :max="1" />
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
- <a-form-item label="关键字相似度权重">
|
|
|
|
|
|
|
+ <!-- 关键字相似度权重 -->
|
|
|
|
|
+ <a-form-item :label="$t('management.rg_config.similarity_weight')">
|
|
|
<a-slider v-model="form.vector_similarity_weight" :step="0.01" :min="0" :max="1" />
|
|
<a-slider v-model="form.vector_similarity_weight" :step="0.01" :min="0" :max="1" />
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
<a-form-item label="Top N">
|
|
<a-form-item label="Top N">
|
|
|
<a-slider v-model="form.top_n" :min="0" :max="30" />
|
|
<a-slider v-model="form.top_n" :min="0" :max="30" />
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
- <a-form-item label="Rerank模型">
|
|
|
|
|
|
|
+ <!-- Rerank模型 -->
|
|
|
|
|
+ <a-form-item :label="$t('management.rg_config.rerank_model')">
|
|
|
<a-space direction="vertical" size="large">
|
|
<a-space direction="vertical" size="large">
|
|
|
- <a-select :size="'large'" v-model="form.rerank_id" placeholder="请选择 ..." allow-clear>
|
|
|
|
|
|
|
+ <a-select
|
|
|
|
|
+ :size="'large'"
|
|
|
|
|
+ v-model="form.rerank_id"
|
|
|
|
|
+ :placeholder="$t('management.rg_config.select_placeholder')"
|
|
|
|
|
+ allow-clear
|
|
|
|
|
+ >
|
|
|
<a-optgroup :label="index" v-for="(item, index) in rankModelList" :key="index">
|
|
<a-optgroup :label="index" v-for="(item, index) in rankModelList" :key="index">
|
|
|
<a-option v-for="obj in item" :key="obj.fid" :disabled="!obj.available" :value="obj.llm_name">
|
|
<a-option v-for="obj in item" :key="obj.fid" :disabled="!obj.available" :value="obj.llm_name">
|
|
|
{{ obj.llm_name }}
|
|
{{ obj.llm_name }}
|
|
@@ -103,9 +121,13 @@
|
|
|
<a-form-item v-if="form.rerank_id" label="Top-K">
|
|
<a-form-item v-if="form.rerank_id" label="Top-K">
|
|
|
<a-slider v-model="form.top_k" :min="1" :max="2048" />
|
|
<a-slider v-model="form.top_k" :min="1" :max="2048" />
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
- <a-form-item label="变量">
|
|
|
|
|
|
|
+ <!-- 变量 -->
|
|
|
|
|
+ <a-form-item :label="$t('management.rg_config.label_var')">
|
|
|
<div style="width: 100%; text-align: right">
|
|
<div style="width: 100%; text-align: right">
|
|
|
- <a-button type="outline" @click="addVariable" style="" size="mini" shape="round"> 新建 </a-button>
|
|
|
|
|
|
|
+ <!-- 新建 -->
|
|
|
|
|
+ <a-button type="outline" @click="addVariable" style="" size="mini" shape="round">
|
|
|
|
|
+ {{ $t('management.rg_config.create_btn') }}
|
|
|
|
|
+ </a-button>
|
|
|
</div>
|
|
</div>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
<a-form-item label="">
|
|
<a-form-item label="">
|
|
@@ -129,24 +151,27 @@
|
|
|
</a-form>
|
|
</a-form>
|
|
|
</a-scrollbar>
|
|
</a-scrollbar>
|
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
|
- <a-tab-pane key="3" title="模型设置">
|
|
|
|
|
|
|
+ <!-- 模型设置 -->
|
|
|
|
|
+ <a-tab-pane key="3" :title="$t('management.rg_config.tab_3')">
|
|
|
<a-divider style="margin-bottom: 20px; margin-top: 0" />
|
|
<a-divider style="margin-bottom: 20px; margin-top: 0" />
|
|
|
<div style="width: 100%" :style="{ height: height }">
|
|
<div style="width: 100%" :style="{ height: height }">
|
|
|
<a-form
|
|
<a-form
|
|
|
ref="formRef2"
|
|
ref="formRef2"
|
|
|
:rules="rules"
|
|
:rules="rules"
|
|
|
:model="form"
|
|
:model="form"
|
|
|
|
|
+ auto-label-width
|
|
|
@submit="handleSubmit"
|
|
@submit="handleSubmit"
|
|
|
:style="{ width: '90%', margin: '0 auto' }"
|
|
:style="{ width: '90%', margin: '0 auto' }"
|
|
|
>
|
|
>
|
|
|
- <a-form-item field="llm_id" label="模型">
|
|
|
|
|
|
|
+ <!-- 模型 -->
|
|
|
|
|
+ <a-form-item field="llm_id" :label="$t('management.rg_config.label_llm')">
|
|
|
<a-space direction="vertical" size="large">
|
|
<a-space direction="vertical" size="large">
|
|
|
<a-select
|
|
<a-select
|
|
|
:size="'large'"
|
|
:size="'large'"
|
|
|
field="llm_id"
|
|
field="llm_id"
|
|
|
v-model="form.llm_id"
|
|
v-model="form.llm_id"
|
|
|
style="width: 400px"
|
|
style="width: 400px"
|
|
|
- placeholder="请选择"
|
|
|
|
|
|
|
+ :placeholder="$t('management.rg_config.select_placeholder')"
|
|
|
>
|
|
>
|
|
|
<template v-for="(item, index) in modelList" :key="index">
|
|
<template v-for="(item, index) in modelList" :key="index">
|
|
|
<a-optgroup :label="index" v-if="item.length > 0">
|
|
<a-optgroup :label="index" v-if="item.length > 0">
|
|
@@ -159,14 +184,19 @@
|
|
|
</a-space>
|
|
</a-space>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
<a-divider style="margin-bottom: 20px; margin-top: 0" />
|
|
<a-divider style="margin-bottom: 20px; margin-top: 0" />
|
|
|
- <a-form-item label="自由">
|
|
|
|
|
|
|
+ <!-- 自由 -->
|
|
|
|
|
+ <a-form-item :label="$t('management.rg_config.label_free')">
|
|
|
<a-select default-value="2" :style="{ width: '400px' }" placeholder="">
|
|
<a-select default-value="2" :style="{ width: '400px' }" placeholder="">
|
|
|
- <a-option value="1">即兴创作</a-option>
|
|
|
|
|
- <a-option value="2">精确</a-option>
|
|
|
|
|
- <a-option value="3">平衡</a-option>
|
|
|
|
|
|
|
+ <!-- 即兴创作 -->
|
|
|
|
|
+ <a-option value="1">{{ $t('management.rg_config.option_1') }}</a-option>
|
|
|
|
|
+ <!-- 精确 -->
|
|
|
|
|
+ <a-option value="2">{{ $t('management.rg_config.option_2') }}</a-option>
|
|
|
|
|
+ <!-- 平衡 -->
|
|
|
|
|
+ <a-option value="3">{{ $t('management.rg_config.option_3') }}</a-option>
|
|
|
</a-select>
|
|
</a-select>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
- <a-form-item label="温度">
|
|
|
|
|
|
|
+ <!-- 温度 -->
|
|
|
|
|
+ <a-form-item :label="$t('management.rg_config.label_temp')">
|
|
|
<a-switch size="small" v-model="temperature" />
|
|
<a-switch size="small" v-model="temperature" />
|
|
|
<a-space direction="vertical" size="large">
|
|
<a-space direction="vertical" size="large">
|
|
|
<a-slider
|
|
<a-slider
|
|
@@ -202,7 +232,8 @@
|
|
|
/>
|
|
/>
|
|
|
</a-space>
|
|
</a-space>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
- <a-form-item label="出席处罚">
|
|
|
|
|
|
|
+ <!-- 出席处罚 -->
|
|
|
|
|
+ <a-form-item :label="$t('management.rg_config.label_attend')">
|
|
|
<a-switch size="small" v-model="presence_penalty" />
|
|
<a-switch size="small" v-model="presence_penalty" />
|
|
|
<a-space direction="vertical" size="large">
|
|
<a-space direction="vertical" size="large">
|
|
|
<a-slider
|
|
<a-slider
|
|
@@ -220,7 +251,8 @@
|
|
|
/>
|
|
/>
|
|
|
</a-space>
|
|
</a-space>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
- <a-form-item label="频率处罚">
|
|
|
|
|
|
|
+ <!-- 频率处罚 -->
|
|
|
|
|
+ <a-form-item :label="$t('management.rg_config.label_frequency')">
|
|
|
<a-switch size="small" v-model="frequency_penalty" />
|
|
<a-switch size="small" v-model="frequency_penalty" />
|
|
|
<a-space direction="vertical" size="large">
|
|
<a-space direction="vertical" size="large">
|
|
|
<a-slider
|
|
<a-slider
|
|
@@ -238,7 +270,8 @@
|
|
|
/>
|
|
/>
|
|
|
</a-space>
|
|
</a-space>
|
|
|
</a-form-item>
|
|
</a-form-item>
|
|
|
- <a-form-item label="最大token数">
|
|
|
|
|
|
|
+ <!-- 最大token数 -->
|
|
|
|
|
+ <a-form-item :label="$t('management.rg_config.max_token_count')">
|
|
|
<a-switch size="small" v-model="max_tokens" />
|
|
<a-switch size="small" v-model="max_tokens" />
|
|
|
<a-space direction="vertical" size="large">
|
|
<a-space direction="vertical" size="large">
|
|
|
<a-slider
|
|
<a-slider
|
|
@@ -273,6 +306,9 @@ import { createDialog } from '../../../apis/intelligent';
|
|
|
import { getKnowledgeList } from '../../../apis/knowledge';
|
|
import { getKnowledgeList } from '../../../apis/knowledge';
|
|
|
import { dialogType } from '../../../views/manage/common.js';
|
|
import { dialogType } from '../../../views/manage/common.js';
|
|
|
import useLoading from './loading';
|
|
import useLoading from './loading';
|
|
|
|
|
+import { useI18n } from 'vue-i18n';
|
|
|
|
|
+
|
|
|
|
|
+const { t } = useI18n();
|
|
|
|
|
|
|
|
const props = defineProps(['show_rg_config', 'typeAngint', 'formData', 'target_icon']);
|
|
const props = defineProps(['show_rg_config', 'typeAngint', 'formData', 'target_icon']);
|
|
|
const emit = defineEmits([
|
|
const emit = defineEmits([
|
|
@@ -339,23 +375,23 @@ let avatarShow = ref(true);
|
|
|
|
|
|
|
|
const height = ref('calc(500px)');
|
|
const height = ref('calc(500px)');
|
|
|
|
|
|
|
|
-const columns = [
|
|
|
|
|
|
|
+const columns = computed(() => [
|
|
|
{
|
|
{
|
|
|
- title: '关键字',
|
|
|
|
|
|
|
+ title: t('management.rg_config.table_column_1'),
|
|
|
dataIndex: 'name',
|
|
dataIndex: 'name',
|
|
|
slotName: 'name'
|
|
slotName: 'name'
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- title: '可选',
|
|
|
|
|
|
|
+ title: t('management.rg_config.table_column_2'),
|
|
|
dataIndex: 'optional',
|
|
dataIndex: 'optional',
|
|
|
slotName: 'optional'
|
|
slotName: 'optional'
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- title: '操作',
|
|
|
|
|
|
|
+ title: t('management.rg_config.table_column_3'),
|
|
|
dataIndex: 'action',
|
|
dataIndex: 'action',
|
|
|
slotName: 'action'
|
|
slotName: 'action'
|
|
|
}
|
|
}
|
|
|
-];
|
|
|
|
|
|
|
+]);
|
|
|
|
|
|
|
|
const formatter = (value) => {
|
|
const formatter = (value) => {
|
|
|
return `${(value / 100).toFixed(2)}`;
|
|
return `${(value / 100).toFixed(2)}`;
|
|
@@ -652,7 +688,7 @@ defineExpose({
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-:deep(.arco-input-wrapper) {
|
|
|
|
|
|
|
+/* :deep(.arco-input-wrapper) {
|
|
|
background-color: var(--color-neutral-2);
|
|
background-color: var(--color-neutral-2);
|
|
|
-}
|
|
|
|
|
|
|
+} */
|
|
|
</style>
|
|
</style>
|