Commit b5e0d7b8 authored by nick zheng's avatar nick zheng

feat: 应用新增多样性模式及随机性

parent 09eb8fd9
......@@ -30,6 +30,13 @@ common_module:
config: '配置'
agent: '应用'
knowledge: '知识库'
custom: '自定义'
char: '字符'
upload: '上传'
uploading: '上传中...'
upload_success_message: '上传成功'
empty_data: '暂无数据'
search_empty_data: '没有搜索到相关内容'
create_agent_btn_text: '创建应用'
copy_success_message: '复制成功'
delete_success_message: '删除成功'
......@@ -37,6 +44,7 @@ common_module:
edit_success_message: '编辑成功'
publish_success_message: '发布成功'
clear_success_message: '清空成功'
add_success_message: '新增成功'
dialogue_module:
continue_question_message: '你可以继续提问'
......@@ -112,9 +120,15 @@ personal_space_module:
ai_auto_config: 'AI自动配置'
question_answer_model: '问答模型'
question_answer_model_desc: '用于总结生成回复结果'
topP: '多样性:'
topP_popover_message: '用于控制模型输出的多样性。推荐值为 0,数值越大,模型每次输出内容的差异性越大'
communication_turn: '参考对话轮数:'
generate_diversity: '生成多样性'
accurate_mode: '精准模式'
balance_mode: '平衡模式'
creative_mode: '创意模式'
topP: 'top P:'
topP_popover_message: '模型在生成输出时会从概率最高的词汇开始选择,直到这些词汇的总概率累积达到Top p值。这样可以限制模型只选择这些高概率的词汇,从而控制输出内容的多样性。'
temperature: '多样性:'
temperature_popover_message: '用于控制模型输出的多样性。推荐值为 0,数值越大,模型每次输出内容的差异性越大'
communication_turn: '参考对话轮数:'
communication_turn_popover_message: '传入大模型上下文的最大对话轮数。推荐值为2,数值越大,多轮对话中上下文相关性越强,但Tokens消耗越多'
agent_setting: '应用设定'
base_info: '基本信息'
......@@ -183,20 +197,16 @@ personal_space_module:
search_knowledge_placeholder: '请输入知识库名称'
knowledge_name: '知识库名称'
knowledge_desc: '知识库描述'
empty_knowledge_list: '暂无知识库'
search_empty_knowledge_list: '暂⽆搜索结果,请换⼀个关键词进⾏搜索'
delete_knowledge_dialog_content: '删除后将无法恢复, 是否确认删除?'
not_find_knowledge_message: '未找到知识库'
search_knowledge_document_placeholder: '请输入文件名称'
knowledge_document_name: '文件名称'
knowledge_document_char_count: '字符数'
knowledge_document_char_unit: '字符'
knowledge_document_format: '文件格式'
view_knowledge_document_fragment: '查看切片'
training_knowledge_document: '重新训练'
empty_knowledge_document_list: '暂无上传文档'
search_empty_knowledge_document_list: '暂⽆搜索结果,请换⼀个关键词进⾏搜索'
empty_knowledge_document_list: '暂无文件'
upload_knowledge_document_btn_text: '导入文件'
batch_delete_knowledge_document_btn_text: '批量删除'
not_find_knowledge_document_message: '未找到知识库文件'
......@@ -213,6 +223,32 @@ personal_space_module:
import_local_document_knowledge: '本地文档'
import_local_document_knowledge_desc: '支持上传TXT、MD、PDF、DOC、DOCX、格式的本地文件'
segment: '分段'
auto_segment: '自动分段'
add_chunk_up_message: '向上添加分片'
add_chunk_down_message: '向下添加分片'
search_knowledge_chunk_placeholder: '请输入切片名称'
add_knowledge_chunk_modal_title: '新增切片'
knowledge_chunk_content_input_placeholder: '请输入内容'
knowledge_chunk_content_input_rule: '内容不能为空'
delete_knowledge_chunk_content_message: '确认删除该切片?'
upload_document_module:
segment_setting: '分段处理'
data_process: '数据处理'
process_success: '处理成功'
process_fail: '处理失败'
processed: '处理中~'
upload_action_tip_message: '点击上传或拖拽文档到这里'
upload_limit_tip_message: '支持DOC、DOCX、TXT、PDF、MD,最多可上传5个文件,每个文件不超过10MB'
empty_document_content_message: '上传文件内容不能为空'
upload_format_error_message: '只能上传DOC、DOCX、TXT、PDF、MD格式文本文件,请重新上传'
upload_size_error_message: '上传文件大小不能超过5M'
upload_error_message: '上传失败,请删除文件后再进行操作'
default_segment_setting_title: '自动分段与清洗'
default_segment_setting_desc: '自动分段与预处理规则'
data_process_tip_message: '点击确认不影响数据处理,处理完毕后可进行引用'
share_agent_module:
please: '请先'
after_action: '后开始提问'
......
......@@ -30,6 +30,13 @@ common_module:
config: '配置'
agent: '應用'
knowledge: '知識庫'
custom: '自定義'
char: '字符'
upload: '上傳'
uploading: '上傳中...'
upload_success_message: '上傳成功'
empty_data: '暫無數據'
search_empty_data: '沒有搜索到相關內容'
create_agent_btn_text: '創建應用'
copy_success_message: '複製成功'
delete_success_message: '刪除成功'
......@@ -37,6 +44,7 @@ common_module:
edit_success_message: '編輯成功'
publish_success_message: '發佈成功'
clear_success_message: '清空成功'
add_success_message: '新增成功'
dialogue_module:
continue_question_message: '你可以繼續提問'
......@@ -112,9 +120,15 @@ personal_space_module:
ai_auto_config: 'AI自動配置'
question_answer_model: '問答模型'
question_answer_model_desc: '用於總結生成回覆結果'
topP: '多樣性:'
topP_popover_message: '用於控制模型輸出的多樣性。推薦值爲 0,數值越大,模型每次輸出內容的差異性越大'
communication_turn: '參考對話輪數:'
generate_diversity: '生成多樣性'
accurate_mode: '精準模式'
balance_mode: '平衡模式'
creative_mode: '創意模式'
topP: 'top P:'
topP_popover_message: '模型在生成輸出時會從概率最高的詞彙開始選擇,直到這些詞彙的總概率累積達到Top p值。這樣可以限制模型只選擇這些高概率的詞彙,從而控制輸出內容的多樣性'
temperature: '多樣性:'
temperature_popover_message: '用於控制模型輸出的多樣性。推薦值為 0,數值越大,模型每次輸出內容的差異性越大'
communication_turn: '參考對話輪數:'
communication_turn_popover_message: '傳入大模型上下文的最大對話輪數。推薦值爲2,數值越大,多輪對話中上下文相關性越強,但Tokens消耗越多'
agent_setting: '應用設定'
base_info: '基本信息'
......@@ -183,20 +197,16 @@ personal_space_module:
search_knowledge_placeholder: '請輸入知識庫名稱'
knowledge_name: '知識庫名稱'
knowledge_desc: '知識庫描述'
empty_knowledge_list: '暫無知識庫'
search_empty_knowledge_list: '暫⽆搜索結果,請換⼀個關鍵詞進⾏搜索'
delete_knowledge_dialog_content: '刪除後將無法恢復, 是否確認刪除?'
not_find_knowledge_message: '未找到知識庫'
search_knowledge_document_placeholder: '請輸入文件名稱'
knowledge_document_name: '文件名稱'
knowledge_document_char_count: '字符數'
knowledge_document_char_unit: '字符'
knowledge_document_format: '文件格式'
view_knowledge_document_fragment: '查看切片'
training_knowledge_document: '重新訓練'
empty_knowledge_document_list: '暫無上傳文檔'
search_empty_knowledge_document_list: '暫⽆搜索結果,請換⼀個關鍵詞進⾏搜索'
empty_knowledge_document_list: '暫無文件'
upload_knowledge_document_btn_text: '導入文件'
batch_delete_knowledge_document_btn_text: '批量刪除'
not_find_knowledge_document_message: '未找到知識庫文件'
......@@ -213,6 +223,32 @@ personal_space_module:
import_local_document_knowledge: '本地文檔'
import_local_document_knowledge_desc: '支持上傳TXT、MD、PDF、DOC、DOCX、格式的本地文件'
segment: '分段'
auto_segment: '自動分段'
add_chunk_up_message: '向上添加分片'
add_chunk_down_message: '向下添加分片'
search_knowledge_chunk_placeholder: '請輸入切片名稱'
add_knowledge_chunk_modal_title: '新增切片'
knowledge_chunk_content_input_placeholder: '請輸入內容'
knowledge_chunk_content_input_rule: '內容不能為空'
delete_knowledge_chunk_content_message: '確認刪除該切片?'
upload_document_module:
segment_setting: '分段處理'
data_process: '數據處理'
process_success: '處理成功'
process_fail: '處理失敗'
processed: '處理中~'
upload_action_tip_message: '點擊上傳或拖拽文檔到這裏'
upload_limit_tip_message: '支持DOC、DOCX、TXT、PDF、MD,最多可上傳5個文件,每個文件不超過10MB'
empty_document_content_message: '上傳文件內容不能為空'
upload_format_error_message: '只能上傳DOC、DOCX、TXT、PDF、MD格式文本文件,請重新上傳'
upload_size_error_message: '上傳文件大小不能超過5M'
upload_error_message: '上傳失敗,請刪除文件後再進行操作'
default_segment_setting_title: '自動分段與清洗'
default_segment_setting_desc: '自動分段與預處理規則'
data_process_tip_message: '點擊確認不影響數據處理,處理完畢後可進行引用'
share_agent_module:
please: '請先'
after_action: '後開始提問'
......
export interface DiversityModeItem {
label: string
value: string
topP: number
temperature: number
communicationTurn: number
}
export const diversityModeList: DiversityModeItem[] = [
{
label: 'personal_space_module.agent_module.agent_setting_module.agent_config_module.accurate_mode',
value: 'accurate',
topP: 0.1,
temperature: 0.1,
communicationTurn: 3,
},
{
label: 'personal_space_module.agent_module.agent_setting_module.agent_config_module.balance_mode',
value: 'balance',
topP: 0.7,
temperature: 0.5,
communicationTurn: 3,
},
{
label: 'personal_space_module.agent_module.agent_setting_module.agent_config_module.creative_mode',
value: 'creative',
topP: 0.7,
temperature: 0.95,
communicationTurn: 3,
},
{
label: 'common_module.custom',
value: 'custom',
topP: 0.5,
temperature: 0.8,
communicationTurn: 3,
},
]
......@@ -21,6 +21,7 @@ import {
fetchSaveAgentApplication,
} from '@/apis/agent-application'
import { fetchCustomEventSource } from '@/composables/useEventSource'
import { DiversityModeItem, diversityModeList } from '../app-setting-config'
const { t } = useI18n()
......@@ -92,6 +93,8 @@ const personalAppRules = {
},
}
const currentDiversityMode = ref('balance')
let generateAgentTitleAndDescController: AbortController | null = null
let generateAgentAvatarController: AbortController | null = null
let generatePreambleController: AbortController | null = null
......@@ -112,6 +115,10 @@ const isUpdatePersonalAgentConfig = computed(() => {
return !isInitGetAgentAppDetail.value
})
const isDisabledCommModelConfig = computed(() => {
return currentDiversityMode.value !== 'custom'
})
watch(
() => personalAppConfig.value,
() => {
......@@ -168,6 +175,22 @@ async function handleGetAgentApplicationDetail(agentId: string) {
.forEach((property) => {
commConfigExpandedNames.value.push(property)
})
const { temperature, topP } = personalAppConfig.value.commModelConfig
switch (temperature) {
case 0.1:
currentDiversityMode.value = topP === 0.1 ? 'accurate' : 'custom'
break
case 0.5:
currentDiversityMode.value = topP === 0.7 ? 'balance' : 'custom'
break
case 0.95:
currentDiversityMode.value = topP === 0.7 ? 'creative' : 'custom'
break
default:
currentDiversityMode.value = 'custom'
}
}
}
......@@ -430,6 +453,14 @@ function handleStopGenerate() {
generateAgentSystemController?.abort()
isFullScreenLoading.value = false
}
function handleDiversityModeChange(diversityModeItem: DiversityModeItem) {
const { value, topP, temperature, communicationTurn } = diversityModeItem
currentDiversityMode.value = value
personalAppConfig.value.commModelConfig.topP = topP
personalAppConfig.value.commModelConfig.temperature = temperature
personalAppConfig.value.commModelConfig.communicationTurn = communicationTurn
}
</script>
<template>
......@@ -460,7 +491,7 @@ function handleStopGenerate() {
class="hover:border-theme-color flex cursor-pointer items-center justify-between rounded-md border border-[#d4d6d9] px-3 py-[7px]"
>
<img :src="currentLargeModelIcon || '@/assets/images/lingjing-icon.png'" class="mr-1 h-4 w-4" />
<span class="line-clamp-1 max-w-[100px] text-xs text-[#5c5f66]">
<span class="line-clamp-1 w-[100px] text-xs text-[#5c5f66]">
{{ personalAppConfig.commModelConfig.largeModel }}
</span>
<CustomIcon icon="mingcute:down-line" class="ml-1.5 text-base outline-none" />
......@@ -488,6 +519,27 @@ function handleStopGenerate() {
@update:value="handleUpdateLargeModel"
/>
<div class="mt-4">
<span>
{{ t('personal_space_module.agent_module.agent_setting_module.agent_config_module.generate_diversity') }}
</span>
<ul class="rounded-theme mt-2 grid grid-cols-4 overflow-hidden">
<li
v-for="(diversityModeItem, index) in diversityModeList"
:key="index"
class="hover:text-font-color flex h-[34px] w-full cursor-pointer items-center justify-center text-xs"
:class="
currentDiversityMode === diversityModeItem.value
? 'text-font-color bg-active-color'
: 'text-gray-font-color bg-[#F7F7FA]'
"
@click="handleDiversityModeChange(diversityModeItem)"
>
{{ t(diversityModeItem.label) }}
</li>
</ul>
</div>
<div class="mt-4 text-xs">
<div class="mb-2.5 flex h-[34px] items-center justify-between">
<div class="flex w-[105px] items-center">
......@@ -518,8 +570,55 @@ function handleStopGenerate() {
:step="0.01"
:min="0"
:max="1"
:disabled="isDisabledCommModelConfig"
/>
<span class="ml-4 w-8">{{ personalAppConfig.commModelConfig.topP }}</span>
</div>
<NInputNumber
v-model:value="personalAppConfig.commModelConfig.topP"
placeholder=""
:step="0.01"
:min="0"
:max="1"
:disabled="isDisabledCommModelConfig"
size="small"
class="w-[90px]! text-xs!"
/>
</div>
<div class="mb-2.5 flex h-[34px] items-center justify-between">
<div class="flex w-[105px] items-center">
<span>
{{ t('personal_space_module.agent_module.agent_setting_module.agent_config_module.temperature') }}
</span>
<NPopover trigger="hover">
<template #trigger>
<CustomIcon
icon="mingcute:question-line"
class="ml-1 cursor-pointer text-base text-[#999] outline-none"
/>
</template>
<span class="text-xs">
{{
t(
'personal_space_module.agent_module.agent_setting_module.agent_config_module.temperature_popover_message',
)
}}
</span>
</NPopover>
</div>
<div class="mx-5 flex flex-1">
<NSlider
v-model:value="personalAppConfig.commModelConfig.temperature"
:default-value="0"
:step="0.01"
:min="0.01"
:max="1"
:disabled="isDisabledCommModelConfig"
/>
<span class="ml-4 w-[30px]">{{ personalAppConfig.commModelConfig.topP }}</span>
<span class="ml-4 w-[32px]">{{ personalAppConfig.commModelConfig.temperature }}</span>
</div>
<NInputNumber
......@@ -528,6 +627,7 @@ function handleStopGenerate() {
:step="0.01"
:min="0"
:max="1"
:disabled="isDisabledCommModelConfig"
size="small"
class="w-[90px]! text-xs!"
/>
......@@ -565,7 +665,7 @@ function handleStopGenerate() {
:min="0"
:max="100"
/>
<span class="ml-4 w-[30px]">{{ personalAppConfig.commModelConfig.communicationTurn }}</span>
<span class="ml-4 w-8">{{ personalAppConfig.commModelConfig.communicationTurn }}</span>
</div>
<NInputNumber
v-model:value="personalAppConfig.commModelConfig.communicationTurn"
......
......@@ -32,6 +32,13 @@ declare namespace I18n {
config: string
agent: string
knowledge: string
custom: string
char: string
upload: string
uploading: string
upload_success_message: string
empty_data: string
search_empty_data: string
create_agent_btn_text: string
copy_success_message: string
delete_success_message: string
......@@ -39,6 +46,7 @@ declare namespace I18n {
edit_success_message: string
publish_success_message: string
clear_success_message: string
add_success_message: string
dialogue_module: {
continue_question_message: string
......@@ -123,8 +131,14 @@ declare namespace I18n {
ai_auto_config: string
question_answer_model: string
question_answer_model_desc: string
generate_diversity: string
accurate_mode: string
balance_mode: string
creative_mode: string
topP: string
topP_popover_message: string
temperature: string
temperature_popover_message: string
communication_turn: string
communication_turn_popover_message: string
agent_setting: string
......@@ -190,20 +204,16 @@ declare namespace I18n {
search_knowledge_placeholder: string
knowledge_name: string
knowledge_desc: string
empty_knowledge_list: string
search_empty_knowledge_list: string
delete_knowledge_dialog_content: string
not_find_knowledge_message: string
search_knowledge_document_placeholder: string
knowledge_document_name: string
knowledge_document_char_count: string
knowledge_document_char_unit: string
knowledge_document_format: string
view_knowledge_document_fragment: string
training_knowledge_document: string
empty_knowledge_document_list: string
search_empty_knowledge_document_list: string
upload_knowledge_document_btn_text: string
batch_delete_knowledge_document_btn_text: string
not_find_knowledge_document_message: string
......@@ -219,6 +229,33 @@ declare namespace I18n {
knowledge_document_text_type: string
import_local_document_knowledge: string
import_local_document_knowledge_desc: string
segment: string
auto_segment: string
add_chunk_up_message: string
add_chunk_down_message: string
search_knowledge_chunk_placeholder: string
add_knowledge_chunk_modal_title: string
knowledge_chunk_content_input_placeholder: string
knowledge_chunk_content_input_rule: string
delete_knowledge_chunk_content_message: string
upload_document_module: {
segment_setting: string
data_process: string
process_success: string
process_fail: string
processed: string
upload_action_tip_message: string
upload_limit_tip_message: string
empty_document_content_message: string
upload_format_error_message: string
upload_size_error_message: string
upload_error_message: string
default_segment_setting_title: string
default_segment_setting_desc: string
data_process_tip_message: string
}
}
}
}
......
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