chore: add model_params_setting to document, knowledge, and paragraph processing
--story=1018694 --user=刘瑞斌 【菲尼克斯】知识库生成问题选择模型,希望可以设置模型参数 https://www.tapd.cn/62980211/s/1768601v3.2
parent
5ed5d2786d
commit
121614fb81
|
|
@ -1305,6 +1305,7 @@ class DocumentSerializers(serializers.Serializer):
|
||||||
document_id_list = instance.get("document_id_list")
|
document_id_list = instance.get("document_id_list")
|
||||||
model_id = instance.get("model_id")
|
model_id = instance.get("model_id")
|
||||||
prompt = instance.get("prompt")
|
prompt = instance.get("prompt")
|
||||||
|
model_params_setting = instance.get("model_params_setting")
|
||||||
state_list = instance.get('state_list')
|
state_list = instance.get('state_list')
|
||||||
ListenerManagement.update_status(
|
ListenerManagement.update_status(
|
||||||
QuerySet(Document).filter(id__in=document_id_list),
|
QuerySet(Document).filter(id__in=document_id_list),
|
||||||
|
|
@ -1327,7 +1328,7 @@ class DocumentSerializers(serializers.Serializer):
|
||||||
QuerySet(Document).filter(id__in=document_id_list))()
|
QuerySet(Document).filter(id__in=document_id_list))()
|
||||||
try:
|
try:
|
||||||
for document_id in document_id_list:
|
for document_id in document_id_list:
|
||||||
generate_related_by_document_id.delay(document_id, model_id, prompt, state_list)
|
generate_related_by_document_id.delay(document_id, model_id, model_params_setting, prompt, state_list)
|
||||||
except AlreadyQueued as e:
|
except AlreadyQueued as e:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -267,6 +267,7 @@ class KnowledgeSerializer(serializers.Serializer):
|
||||||
knowledge_id = self.data.get('knowledge_id')
|
knowledge_id = self.data.get('knowledge_id')
|
||||||
model_id = instance.get("model_id")
|
model_id = instance.get("model_id")
|
||||||
prompt = instance.get("prompt")
|
prompt = instance.get("prompt")
|
||||||
|
model_params_setting = instance.get("model_params_setting")
|
||||||
state_list = instance.get('state_list')
|
state_list = instance.get('state_list')
|
||||||
ListenerManagement.update_status(
|
ListenerManagement.update_status(
|
||||||
QuerySet(Document).filter(knowledge_id=knowledge_id),
|
QuerySet(Document).filter(knowledge_id=knowledge_id),
|
||||||
|
|
@ -285,7 +286,7 @@ class KnowledgeSerializer(serializers.Serializer):
|
||||||
)
|
)
|
||||||
ListenerManagement.get_aggregation_document_status_by_knowledge_id(knowledge_id)()
|
ListenerManagement.get_aggregation_document_status_by_knowledge_id(knowledge_id)()
|
||||||
try:
|
try:
|
||||||
generate_related_by_knowledge_id.delay(knowledge_id, model_id, prompt, state_list)
|
generate_related_by_knowledge_id.delay(knowledge_id, model_id, model_params_setting, prompt, state_list)
|
||||||
except AlreadyQueued as e:
|
except AlreadyQueued as e:
|
||||||
raise AppApiException(500, _('Failed to send the vectorization task, please try again later!'))
|
raise AppApiException(500, _('Failed to send the vectorization task, please try again later!'))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -480,6 +480,7 @@ class ParagraphSerializers(serializers.Serializer):
|
||||||
paragraph_id_list = instance.get("paragraph_id_list")
|
paragraph_id_list = instance.get("paragraph_id_list")
|
||||||
model_id = instance.get("model_id")
|
model_id = instance.get("model_id")
|
||||||
prompt = instance.get("prompt")
|
prompt = instance.get("prompt")
|
||||||
|
model_params_setting = instance.get("model_params_setting")
|
||||||
document_id = self.data.get('document_id')
|
document_id = self.data.get('document_id')
|
||||||
ListenerManagement.update_status(
|
ListenerManagement.update_status(
|
||||||
QuerySet(Document).filter(id=document_id),
|
QuerySet(Document).filter(id=document_id),
|
||||||
|
|
@ -493,7 +494,7 @@ class ParagraphSerializers(serializers.Serializer):
|
||||||
)
|
)
|
||||||
ListenerManagement.get_aggregation_document_status(document_id)()
|
ListenerManagement.get_aggregation_document_status(document_id)()
|
||||||
try:
|
try:
|
||||||
generate_related_by_paragraph_id_list.delay(document_id, paragraph_id_list, model_id, prompt)
|
generate_related_by_paragraph_id_list.delay(document_id, paragraph_id_list, model_id, model_params_setting, prompt)
|
||||||
except AlreadyQueued as e:
|
except AlreadyQueued as e:
|
||||||
raise AppApiException(500, _('The task is being executed, please do not send it again.'))
|
raise AppApiException(500, _('The task is being executed, please do not send it again.'))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,9 @@ from models_provider.tools import get_model
|
||||||
from ops import celery_app
|
from ops import celery_app
|
||||||
|
|
||||||
|
|
||||||
def get_llm_model(model_id):
|
def get_llm_model(model_id, model_params_setting=None):
|
||||||
model = QuerySet(Model).filter(id=model_id).first()
|
model = QuerySet(Model).filter(id=model_id).first()
|
||||||
return ModelManage.get_model(model_id, lambda _id: get_model(model))
|
return ModelManage.get_model(model_id, lambda _id: get_model(model, **(model_params_setting or {})))
|
||||||
|
|
||||||
|
|
||||||
def generate_problem_by_paragraph(paragraph, llm_model, prompt):
|
def generate_problem_by_paragraph(paragraph, llm_model, prompt):
|
||||||
|
|
@ -64,18 +64,18 @@ def get_is_the_task_interrupted(document_id):
|
||||||
|
|
||||||
@celery_app.task(base=QueueOnce, once={'keys': ['knowledge_id']},
|
@celery_app.task(base=QueueOnce, once={'keys': ['knowledge_id']},
|
||||||
name='celery:generate_related_by_knowledge')
|
name='celery:generate_related_by_knowledge')
|
||||||
def generate_related_by_knowledge_id(knowledge_id, model_id, prompt, state_list=None):
|
def generate_related_by_knowledge_id(knowledge_id, model_id, model_params_setting, prompt, state_list=None):
|
||||||
document_list = QuerySet(Document).filter(knowledge_id=knowledge_id)
|
document_list = QuerySet(Document).filter(knowledge_id=knowledge_id)
|
||||||
for document in document_list:
|
for document in document_list:
|
||||||
try:
|
try:
|
||||||
generate_related_by_document_id.delay(document.id, model_id, prompt, state_list)
|
generate_related_by_document_id.delay(document.id, model_id, model_params_setting, prompt, state_list)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@celery_app.task(base=QueueOnce, once={'keys': ['document_id']},
|
@celery_app.task(base=QueueOnce, once={'keys': ['document_id']},
|
||||||
name='celery:generate_related_by_document')
|
name='celery:generate_related_by_document')
|
||||||
def generate_related_by_document_id(document_id, model_id, prompt, state_list=None):
|
def generate_related_by_document_id(document_id, model_id, model_params_setting, prompt, state_list=None):
|
||||||
if state_list is None:
|
if state_list is None:
|
||||||
state_list = [State.PENDING.value, State.STARTED.value, State.SUCCESS.value, State.FAILURE.value,
|
state_list = [State.PENDING.value, State.STARTED.value, State.SUCCESS.value, State.FAILURE.value,
|
||||||
State.REVOKE.value,
|
State.REVOKE.value,
|
||||||
|
|
@ -87,7 +87,7 @@ def generate_related_by_document_id(document_id, model_id, prompt, state_list=No
|
||||||
ListenerManagement.update_status(QuerySet(Document).filter(id=document_id),
|
ListenerManagement.update_status(QuerySet(Document).filter(id=document_id),
|
||||||
TaskType.GENERATE_PROBLEM,
|
TaskType.GENERATE_PROBLEM,
|
||||||
State.STARTED)
|
State.STARTED)
|
||||||
llm_model = get_llm_model(model_id)
|
llm_model = get_llm_model(model_id, model_params_setting)
|
||||||
|
|
||||||
# 生成问题函数
|
# 生成问题函数
|
||||||
generate_problem = get_generate_problem(llm_model, prompt,
|
generate_problem = get_generate_problem(llm_model, prompt,
|
||||||
|
|
@ -110,7 +110,7 @@ def generate_related_by_document_id(document_id, model_id, prompt, state_list=No
|
||||||
|
|
||||||
@celery_app.task(base=QueueOnce, once={'keys': ['paragraph_id_list']},
|
@celery_app.task(base=QueueOnce, once={'keys': ['paragraph_id_list']},
|
||||||
name='celery:generate_related_by_paragraph_list')
|
name='celery:generate_related_by_paragraph_list')
|
||||||
def generate_related_by_paragraph_id_list(document_id, paragraph_id_list, model_id, prompt):
|
def generate_related_by_paragraph_id_list(document_id, paragraph_id_list, model_id, model_params_setting, prompt):
|
||||||
try:
|
try:
|
||||||
is_the_task_interrupted = get_is_the_task_interrupted(document_id)
|
is_the_task_interrupted = get_is_the_task_interrupted(document_id)
|
||||||
if is_the_task_interrupted():
|
if is_the_task_interrupted():
|
||||||
|
|
@ -121,7 +121,7 @@ def generate_related_by_paragraph_id_list(document_id, paragraph_id_list, model_
|
||||||
ListenerManagement.update_status(QuerySet(Document).filter(id=document_id),
|
ListenerManagement.update_status(QuerySet(Document).filter(id=document_id),
|
||||||
TaskType.GENERATE_PROBLEM,
|
TaskType.GENERATE_PROBLEM,
|
||||||
State.STARTED)
|
State.STARTED)
|
||||||
llm_model = get_llm_model(model_id)
|
llm_model = get_llm_model(model_id, model_params_setting)
|
||||||
# 生成问题函数
|
# 生成问题函数
|
||||||
generate_problem = get_generate_problem(llm_model, prompt, ListenerManagement.get_aggregation_document_status(
|
generate_problem = get_generate_problem(llm_model, prompt, ListenerManagement.get_aggregation_document_status(
|
||||||
document_id))
|
document_id))
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,21 @@
|
||||||
<p>{{ $t('views.document.generateQuestion.tip4') }}</p>
|
<p>{{ $t('views.document.generateQuestion.tip4') }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-form-item :label="$t('views.application.form.aiModel.label')" prop="model_id">
|
<el-form-item prop="model_id">
|
||||||
|
<template #label>
|
||||||
|
<div class="flex-between">
|
||||||
|
<span>{{ $t('views.application.form.aiModel.label') }}</span>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
@click="openAIParamSettingDialog"
|
||||||
|
:disabled="!form.model_id"
|
||||||
|
>
|
||||||
|
<AppIcon iconName="app-setting" class="mr-4"></AppIcon>
|
||||||
|
{{ $t('common.paramSetting') }}
|
||||||
|
</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
<ModelSelect
|
<ModelSelect
|
||||||
v-model="form.model_id"
|
v-model="form.model_id"
|
||||||
:placeholder="$t('views.application.form.aiModel.placeholder')"
|
:placeholder="$t('views.application.form.aiModel.placeholder')"
|
||||||
|
|
@ -68,6 +82,8 @@
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
<AIModeParamSettingDialog ref="AIModeParamSettingDialogRef" @refresh="refreshForm" />
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { reactive, ref, watch, computed } from 'vue'
|
import { reactive, ref, watch, computed } from 'vue'
|
||||||
|
|
@ -78,6 +94,7 @@ import { MsgSuccess } from '@/utils/message'
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import type { FormInstance } from 'element-plus'
|
import type { FormInstance } from 'element-plus'
|
||||||
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
||||||
|
import AIModeParamSettingDialog from "@/views/application/component/AIModeParamSettingDialog.vue";
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
apiType: 'systemShare' | 'workspace' | 'systemManage' | 'workspaceShare'
|
apiType: 'systemShare' | 'workspace' | 'systemManage' | 'workspaceShare'
|
||||||
|
|
@ -130,6 +147,21 @@ watch(dialogVisible, (bool) => {
|
||||||
FormRef.value?.clearValidate()
|
FormRef.value?.clearValidate()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
const AIModeParamSettingDialogRef = ref()
|
||||||
|
const openAIParamSettingDialog = () => {
|
||||||
|
if (form.value.model_id) {
|
||||||
|
AIModeParamSettingDialogRef.value?.open(
|
||||||
|
form.value.model_id,
|
||||||
|
id,
|
||||||
|
form.value.model_params_setting,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function refreshForm(data: any) {
|
||||||
|
form.value.model_params_setting = data
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const open = (ids: string[], type: string, _knowledge?: any) => {
|
const open = (ids: string[], type: string, _knowledge?: any) => {
|
||||||
currentKnowledge.value = _knowledge
|
currentKnowledge.value = _knowledge
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { defineStore } from 'pinia'
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
export interface promptTypes {
|
export interface promptTypes {
|
||||||
user: string
|
user: string
|
||||||
formValue: { model_id: string; prompt: string }
|
formValue: { model_id: string; prompt: string; model_params_setting: any }
|
||||||
}
|
}
|
||||||
|
|
||||||
const usePromptStore = defineStore('prompt', {
|
const usePromptStore = defineStore('prompt', {
|
||||||
|
|
@ -25,6 +25,7 @@ const usePromptStore = defineStore('prompt', {
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
model_id: '',
|
model_id: '',
|
||||||
|
model_params_setting: {},
|
||||||
prompt:
|
prompt:
|
||||||
t('views.document.generateQuestion.prompt1', { data: '{data}' }) +
|
t('views.document.generateQuestion.prompt1', { data: '{data}' }) +
|
||||||
'<question></question>' +
|
'<question></question>' +
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue