Commit 76d094c0 authored by shirlyn.guo's avatar shirlyn.guo 👌🏻

feat: 记忆变量

parent 287eb221
......@@ -38,6 +38,7 @@ common_module:
copy_success_message: '复制成功'
delete_success_message: '删除成功'
save_success_message: '保存成功'
save_fail_message: '保存失败'
edit_success_message: '编辑成功'
publish_success_message: '发布成功'
clear_success_message: '清空成功'
......@@ -61,6 +62,7 @@ common_module:
collect_successfully: '收藏成功'
collect_unsubscribed: '已取消收藏'
cancel: '取消'
preservation: '保存'
dialogue_module:
continue_question_message: '你可以继续提问'
......@@ -223,6 +225,38 @@ personal_space_module:
continuous_question_default_desc: '根据用户最近一轮对话,在回复后自动提供3个提问建议。'
continuous_question_close: '关闭'
continuous_question_close_desc: '在每轮回复后,不会提供用户任何提问建议'
memory: '记忆'
add_memory_variable: '添加记忆变量'
memory_variable: '记忆变量'
memory_message:
'开发者可根据应用设定记忆变量,应用用户在对话过程中可以录入变量内容,每个变量支持存储一维、单个数据。
在对话过程中,应用将依据存储的变量值进行答复。下面以「旅游助手」为例:'
memory_variable_message: '记录聊天对话中的一维、单个的应用信息或用户信息,能让智能体回答更加个性化。'
memory_variable_action_edit: '编辑'
memory_variable_action_copy: '复制名称'
variable_name: '变量名称'
variable_value: '变量值'
memory_variable_modal:
edit_memory_variable: '编辑记忆变量'
memory_variable_message_tip: '删除变量或修改变量名称/描述,应用更新发布后会导致应用用户对应的变量数据被删除或重置为默认值,请谨慎操作'
memory_variable_table_name: '名称'
memory_variable_table_name_tip: '填写内容'
memory_variable_table_name_content: '1.仅支持英文、中文'
memory_variable_table_name_length: '2.长度50字以内'
memory_variable_table_default_value: '默认值'
default_value_tip: '开发者可以为应用用户预先设定默认值'
default_value_tip_example: '实例:北京'
memory_variable_table_action: '操作'
default_value_placeholder: '请输入'
name_placeholder: '请输入名称'
add_variable: '新增变量'
memory_variable_rules:
name_not_null: '请输入名称'
name_length: '名称长度不能超过50个字'
name_supports: '仅支持英文和中文'
name_not_duplicated: '名称不能重复'
preview: '预览与调试'
......
......@@ -38,6 +38,7 @@ common_module:
copy_success_message: '複製成功'
delete_success_message: '刪除成功'
save_success_message: '保存成功'
save_fail_message: '保存失敗'
edit_success_message: '編輯成功'
publish_success_message: '發佈成功'
clear_success_message: '清空成功'
......@@ -61,6 +62,7 @@ common_module:
collect_successfully: '收藏成功'
collect_unsubscribed: '已取消收藏'
cancel: '取消'
preservation: '保存'
dialogue_module:
continue_question_message: '你可以繼續提問'
......@@ -223,6 +225,38 @@ personal_space_module:
continuous_question_default_desc: '根據用戶最近一輪對話,在回覆後自動提供3個提問建議。'
continuous_question_close: '關閉'
continuous_question_close_desc: '在每輪迴復後,不會提供用戶任何提問建議'
memory: '記憶'
add_memory_variable: '添加記憶變數'
memory_variable: '記憶變量'
memory_message:
'开发者可根据应用设定记忆变量,应用用户在对话过程中可以录入变量内容,每个变量支持存储一维、单个数据。
在对话过程中,应用将依据存储的变量值进行答复。下面以「旅游助手」为例:'
memory_variable_message: '记录聊天对话中的一维、单个的应用信息或用户信息,能让智能体回答更加个性化。'
memory_variable_action_edit: '編輯'
memory_variable_action_copy: '複製名稱'
variable_name: '变量名稱'
variable_value: '变量值'
memory_variable_modal:
edit_memory_variable: '編輯記憶變數'
memory_variable_message_tip: '删除變數或修改變數名稱/描述,應用更新發佈後會導致應用用戶對應的變數數據被删除或重置為預設值,請謹慎操作'
memory_variable_table_name: '名稱'
memory_variable_table_name_tip: '填写内容'
memory_variable_table_name_content: '1.僅支持英文、中文'
memory_variable_table_name_length: '2.長度50字以内'
memory_variable_table_default_value: '預設值'
default_value_tip: '開發者可以為應用用戶預先設定預設值'
default_value_tip_example: '實例:北京'
memory_variable_table_action: '操作'
default_value_placeholder: '請輸入'
name_placeholder: '請輸入名稱'
add_variable: '新增變數'
memory_variable_rules:
name_not_null: '請求輸入名稱'
name_length: '名字長度不能超過50個字'
name_supports: '僅支持英文和中文'
name_not_duplicated: '名稱不能重複'
preview: '預覽與調試'
......
export interface VariableStructureItem {
key: string
variableDefault: string | null
}
export interface PersonalAppConfigState {
baseInfo: {
agentId: string //应用ID
......@@ -13,7 +18,7 @@ export interface PersonalAppConfigState {
continuousQuestionStatus: 'default' | 'close' //追问状态
continuousQuestionSystem: string // 追问提示词 customizable时必填
continuousQuestionTurn: number // 追问轮次 1-5 customizable时必填
variableStructure: object[]
variableStructure: VariableStructureItem[]
}
knowledgeConfig: {
knowledgeIds: string[] //知识库ID
......
......@@ -6,6 +6,8 @@ import MessageList from './message-list.vue'
import FooterInput from './footer-input.vue'
import { fetchCreateContinueQuestions } from '@/apis/agent-application'
import { usePersonalAppConfigStore } from '@/store/modules/personal-app-config'
import { Brain, Down } from '@icon-park/vue-next'
import MemoryPreviewModal from './memory-preview-modal.vue'
const { t } = useI18n()
......@@ -19,6 +21,7 @@ const messageList = ref<ConversationMessageItem[]>([])
const continuousQuestionStatus = ref<'default' | 'close'>(personalAppConfigStore.commConfig.continuousQuestionStatus)
const continuousQuestionList = ref<string[]>([])
const isShowMemoryPreviewModal = ref(false)
function handleAddMessageItem(messageItem: ConversationMessageItem) {
messageList.value.push(messageItem)
......@@ -67,13 +70,51 @@ function handleUpdateContinueQuestionStatus(status: 'default' | 'close') {
continuousQuestionStatus.value = status
continuousQuestionList.value = []
}
function handleMemoryVariable() {
isShowMemoryPreviewModal.value = true
}
</script>
<template>
<div class="flex h-full min-w-[300px] flex-1 flex-col overflow-hidden bg-[#f2f5f9]">
<p class="mb-[18px] px-5 py-[18px] text-base">
{{ t('personal_space_module.agent_module.agent_setting_module.agent_config_module.preview') }}
</p>
<div class="flex justify-between">
<p class="mb-[18px] px-5 py-[18px] text-base">
{{ t('personal_space_module.agent_module.agent_setting_module.agent_config_module.preview') }}
</p>
<div
v-show="personalAppConfigStore.commConfig.variableStructure.length !== 0"
class="memory-content cursor-pointer"
>
<n-popover
placement="bottom"
arrow-wrapper-class="memory-content"
trigger="hover"
class="p-[4px]! top-[-25px]"
:show-arrow="false"
>
<template #trigger>
<div class="mb-[18px] flex items-center justify-center px-5 py-[18px] text-[14px]">
<Brain theme="outline" size="16" fill="#333" />
<div class="mx-[4px]">
{{ t('personal_space_module.agent_module.agent_setting_module.agent_config_module.memory') }}
</div>
<Down theme="outline" size="16" fill="#333" class="inline" />
</div>
</template>
<div>
<div
v-show="personalAppConfigStore.commConfig.variableStructure !== null"
class="cursor-pointer px-[8px] py-[5px] hover:bg-[#f2f5f9]"
@click="handleMemoryVariable"
>
{{ t('personal_space_module.agent_module.agent_setting_module.agent_config_module.memory_variable') }}
</div>
</div>
</n-popover>
</div>
</div>
<div class="flex w-full flex-1 overflow-hidden">
<div v-show="messageList.length === 0" class="flex w-full">
......@@ -102,6 +143,8 @@ function handleUpdateContinueQuestionStatus(status: 'default' | 'close') {
@create-continue-questions="handleCreateContinueQuestions"
@update-continuous-question-status="handleUpdateContinueQuestionStatus"
/>
<MemoryPreviewModal v-model="isShowMemoryPreviewModal" />
</div>
</template>
......
<script setup lang="ts">
import { usePersonalAppConfigStore } from '@/store/modules/personal-app-config'
import { Close } from '@icon-park/vue-next'
import { DataTableColumns } from 'naive-ui'
import { ref, watch } from 'vue'
import { MemoryVariableForm } from './memory-variable-modal.vue'
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const memoryVariableColumns = createColumns()
const personalAppConfigStore = usePersonalAppConfigStore()
const memoryVariableData = ref([])
const isShowMemoryPreviewModal = defineModel<boolean>()
function createColumns(): DataTableColumns<MemoryVariableForm> {
return [
{
title: t('personal_space_module.agent_module.agent_setting_module.agent_config_module.variable_name'),
key: 'key',
width: 150,
},
{
title: t('personal_space_module.agent_module.agent_setting_module.agent_config_module.variable_value'),
key: 'variableDefault',
},
]
}
watch(
() => personalAppConfigStore.commConfig.variableStructure,
(newValue) => {
if (newValue !== null) {
memoryVariableData.value = JSON.parse(JSON.stringify(newValue))
}
},
{ immediate: true },
)
function handlePreviewModalClose() {
isShowMemoryPreviewModal.value = false
}
</script>
<template>
<n-modal v-model:show="isShowMemoryPreviewModal" class="h-auto max-h-[720px]" :mask-closable="false">
<div class="flex flex-col items-center justify-center">
<div class="max-h-[720px] w-[880px] rounded-lg bg-white p-[24px]">
<div class="flex items-center justify-end text-[20px]">
<Close theme="outline" size="18" fill="#00000073" class="cursor-pointer" @click="handlePreviewModalClose" />
</div>
<div class="">
<n-tabs type="line" animated>
<n-tab-pane
name="oasis"
:tab="t('personal_space_module.agent_module.agent_setting_module.agent_config_module.memory_variable')"
>
<div class="flex max-h-[490px] justify-center overflow-y-hidden bg-[#f3f4fb]">
<n-data-table :columns="memoryVariableColumns" :max-height="440" :data="memoryVariableData" />
</div>
</n-tab-pane>
</n-tabs>
</div>
</div>
</div>
</n-modal>
</template>
<style lang="scss" scoped>
:deep(.n-tabs) {
.n-tabs-tab {
font-size: 20px;
}
.n-tabs-bar {
background-color: #fff;
}
.n-tabs-nav {
&.n-tabs-nav--line-type {
&.n-tabs-nav--top {
.n-tabs-nav-scroll-content {
border-bottom: none;
}
}
}
}
}
</style>
......@@ -39,6 +39,7 @@ declare namespace I18n {
copy_success_message: string
delete_success_message: string
save_success_message: string
save_fail_message: string
edit_success_message: string
publish_success_message: string
clear_success_message: string
......@@ -62,6 +63,7 @@ declare namespace I18n {
collect_successfully: string
collect_unsubscribed: string
cancel: string
preservation: string
dialogue_module: {
continue_question_message: string
......@@ -225,6 +227,38 @@ declare namespace I18n {
continuous_question_default_desc: string
continuous_question_close: string
continuous_question_close_desc: string
memory: string
add_memory_variable: string
memory_variable: string
memory_message: string
memory_variable_message: string
memory_variable_action_edit: string
memory_variable_action_copy: string
variable_name: string
variable_value: string
memory_variable_modal: {
edit_memory_variable: string
memory_variable_message_tip: string
memory_variable_table_name: string
memory_variable_table_name_tip: string
memory_variable_table_name_content: string
memory_variable_table_name_length: string
memory_variable_table_default_value: string
default_value_tip: string
default_value_tip_example: string
memory_variable_table_action: string
default_value_placeholder: string
name_placeholder: string
add_variable: string
memory_variable_rules: {
name_not_null: string
name_length: string
name_supports: string
name_not_duplicated: string
}
}
preview: 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