fix: 使用 buildLlmInfoPayload 函数构造 llm_info,简化代码并避免空值提交
This commit is contained in:
parent
86904332bc
commit
250885cb4d
@ -75,7 +75,7 @@
|
||||
import { ref, reactive, computed } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useDatabaseStore } from '@/stores/database'
|
||||
import { getKbTypeLabel, getKbTypeIcon, getKbTypeColor, parseModelSpec, buildDisplaySpec } from '@/utils/kb_utils'
|
||||
import { getKbTypeLabel, getKbTypeIcon, getKbTypeColor, parseModelSpec, buildDisplaySpec, buildLlmInfoPayload } from '@/utils/kb_utils'
|
||||
import { LeftOutlined, EditOutlined, DeleteOutlined } from '@ant-design/icons-vue'
|
||||
import HeaderComponent from '@/components/HeaderComponent.vue'
|
||||
import ModelSelectorComponent from '@/components/ModelSelectorComponent.vue'
|
||||
@ -132,11 +132,7 @@ const handleEditSubmit = () => {
|
||||
|
||||
// 如果是 LightRAG 类型,包含 llm_info
|
||||
if (database.value.kb_type === 'lightrag') {
|
||||
updateData.llm_info = {
|
||||
model_spec: editForm.llm_info.model_spec,
|
||||
provider: editForm.llm_info.provider,
|
||||
model_name: editForm.llm_info.model_name
|
||||
}
|
||||
updateData.llm_info = buildLlmInfoPayload(editForm.llm_info)
|
||||
}
|
||||
|
||||
await store.updateDatabaseInfo(updateData)
|
||||
|
||||
@ -158,7 +158,7 @@ import { ref, reactive, computed, h, onMounted } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useDatabaseStore } from '@/stores/database'
|
||||
import { useUserStore } from '@/stores/user'
|
||||
import { getKbTypeLabel, getKbTypeColor, parseModelSpec, buildDisplaySpec } from '@/utils/kb_utils'
|
||||
import { getKbTypeLabel, getKbTypeColor, parseModelSpec, buildDisplaySpec, buildLlmInfoPayload } from '@/utils/kb_utils'
|
||||
import {
|
||||
CHUNK_PRESET_OPTIONS,
|
||||
CHUNK_PRESET_LABEL_MAP,
|
||||
@ -377,11 +377,7 @@ const handleEditSubmit = () => {
|
||||
|
||||
// 如果是 LightRAG 类型,包含 llm_info
|
||||
if (database.value.kb_type === 'lightrag') {
|
||||
updateData.llm_info = {
|
||||
model_spec: editForm.llm_info.model_spec,
|
||||
provider: editForm.llm_info.provider,
|
||||
model_name: editForm.llm_info.model_name
|
||||
}
|
||||
updateData.llm_info = buildLlmInfoPayload(editForm.llm_info)
|
||||
}
|
||||
|
||||
await store.updateDatabaseInfo(updateData)
|
||||
|
||||
@ -29,11 +29,12 @@ export const getKbTypeColor = (type) => {
|
||||
|
||||
// 解析模型 spec 为 { model_spec, provider, model_name }
|
||||
// V2 格式: provider_id:model_id(冒号分隔)
|
||||
// V1 格式: provider/model_name(斜杠分隔)
|
||||
// V1 格式: provider/model_name(斜杠分隔,model_name 可包含冒号)
|
||||
export const parseModelSpec = (spec) => {
|
||||
if (typeof spec !== 'string' || !spec) return null
|
||||
const sep = spec.includes(':') ? ':' : '/'
|
||||
const index = spec.indexOf(sep)
|
||||
const slashIndex = spec.indexOf('/')
|
||||
const colonIndex = spec.indexOf(':')
|
||||
const index = slashIndex !== -1 ? slashIndex : colonIndex
|
||||
return {
|
||||
model_spec: spec,
|
||||
provider: index !== -1 ? spec.slice(0, index) : '',
|
||||
@ -48,3 +49,13 @@ export const buildDisplaySpec = (llmInfo) => {
|
||||
const modelName = llmInfo?.model_name || ''
|
||||
return provider && modelName ? `${provider}/${modelName}` : ''
|
||||
}
|
||||
|
||||
// 构造提交给后端的 llm_info,避免旧数据写入空 model_spec
|
||||
export const buildLlmInfoPayload = (llmInfo) => {
|
||||
const payload = {
|
||||
provider: llmInfo?.provider || '',
|
||||
model_name: llmInfo?.model_name || ''
|
||||
}
|
||||
if (llmInfo?.model_spec) payload.model_spec = llmInfo.model_spec
|
||||
return payload
|
||||
}
|
||||
|
||||
@ -250,7 +250,7 @@ import ExtensionCardGrid from '@/components/extensions/ExtensionCardGrid.vue'
|
||||
import InfoCard from '@/components/shared/InfoCard.vue'
|
||||
import dayjs, { parseToShanghai } from '@/utils/time'
|
||||
import AiTextarea from '@/components/AiTextarea.vue'
|
||||
import { getKbTypeLabel, getKbTypeIcon, getKbTypeColor, parseModelSpec, buildDisplaySpec } from '@/utils/kb_utils'
|
||||
import { getKbTypeLabel, getKbTypeIcon, getKbTypeColor, parseModelSpec, buildDisplaySpec, buildLlmInfoPayload } from '@/utils/kb_utils'
|
||||
import { CHUNK_PRESET_OPTIONS, getChunkPresetDescription } from '@/utils/chunk_presets'
|
||||
|
||||
const route = useRoute()
|
||||
@ -458,17 +458,8 @@ const buildRequestData = () => {
|
||||
|
||||
if (newDatabase.kb_type === 'lightrag') {
|
||||
requestData.additional_params.language = newDatabase.language || 'English'
|
||||
if (newDatabase.llm_info.model_spec) {
|
||||
requestData.llm_info = {
|
||||
model_spec: newDatabase.llm_info.model_spec,
|
||||
provider: newDatabase.llm_info.provider,
|
||||
model_name: newDatabase.llm_info.model_name
|
||||
}
|
||||
} else if (newDatabase.llm_info.provider && newDatabase.llm_info.model_name) {
|
||||
requestData.llm_info = {
|
||||
provider: newDatabase.llm_info.provider,
|
||||
model_name: newDatabase.llm_info.model_name
|
||||
}
|
||||
if (newDatabase.llm_info.model_spec || (newDatabase.llm_info.provider && newDatabase.llm_info.model_name)) {
|
||||
requestData.llm_info = buildLlmInfoPayload(newDatabase.llm_info)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user