diff --git a/pkg/api/http/controller/groups/provider/models.py b/pkg/api/http/controller/groups/provider/models.py index eaf96047..b3680c4f 100644 --- a/pkg/api/http/controller/groups/provider/models.py +++ b/pkg/api/http/controller/groups/provider/models.py @@ -19,7 +19,7 @@ class LLMModelsRouterGroup(group.RouterGroup): return self.success(data={'uuid': model_uuid}) - @self.route('/', methods=['GET', 'DELETE']) + @self.route('/', methods=['GET', 'PUT', 'DELETE']) async def _(model_uuid: str) -> str: if quart.request.method == 'GET': model = await self.ap.model_service.get_llm_model(model_uuid) @@ -28,12 +28,12 @@ class LLMModelsRouterGroup(group.RouterGroup): return self.http_status(404, -1, 'model not found') return self.success(data={'model': model}) - # elif quart.request.method == 'PUT': - # json_data = await quart.request.json + elif quart.request.method == 'PUT': + json_data = await quart.request.json - # await self.ap.model_service.update_llm_model(model_uuid, json_data) + await self.ap.model_service.update_llm_model(model_uuid, json_data) - # return self.success() + return self.success() elif quart.request.method == 'DELETE': await self.ap.model_service.delete_llm_model(model_uuid) diff --git a/web/src/app/home/models/component/llm-form/LLMForm.tsx b/web/src/app/home/models/component/llm-form/LLMForm.tsx index fd6bd998..7c52eb5a 100644 --- a/web/src/app/home/models/component/llm-form/LLMForm.tsx +++ b/web/src/app/home/models/component/llm-form/LLMForm.tsx @@ -83,7 +83,7 @@ export default function LLMForm({ }: { editMode: boolean; initLLMId?: string; - onFormSubmit: (value: z.infer) => void; + onFormSubmit: () => void; onFormCancel: () => void; onLLMDeleted: () => void; }) { @@ -222,20 +222,7 @@ export default function LLMForm({ } function handleFormSubmit(value: z.infer) { - if (editMode) { - // 暂不支持更改模型 - // onSaveEdit(value) - } else { - onCreateLLM(value); - } - form.reset(); - } - - function onCreateLLM(value: z.infer) { - console.log('create llm', value); - // 转换extra_args为对象格式 - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const extraArgsObj: Record = {}; + const extraArgsObj: Record = {}; value.extra_args?.forEach((arg) => { if (arg.type === 'number') { extraArgsObj[arg.key] = Number(arg.value); @@ -246,8 +233,8 @@ export default function LLMForm({ } }); - const requestParam: LLMModel = { - uuid: UUID.generate(), + const llmModel: LLMModel = { + uuid: editMode ? initLLMId || '' : UUID.generate(), name: value.name, description: '', requester: value.model_provider, @@ -259,15 +246,36 @@ export default function LLMForm({ api_keys: [value.api_key], abilities: value.abilities, }; - httpClient - .createProviderLLMModel(requestParam) - .then(() => { - onFormSubmit(value); - toast.success('创建成功'); - }) - .catch((err) => { - toast.error('创建失败:' + err.message); + + if (editMode) { + onSaveEdit(llmModel).then(() => { + form.reset(); }); + } else { + onCreateLLM(llmModel).then(() => { + form.reset(); + }); + } + } + + async function onCreateLLM(llmModel: LLMModel) { + try { + await httpClient.createProviderLLMModel(llmModel); + onFormSubmit(); + toast.success('创建成功'); + } catch (err) { + toast.error('创建失败:' + (err as Error).message); + } + } + + async function onSaveEdit(llmModel: LLMModel) { + try { + await httpClient.updateProviderLLMModel(initLLMId || '', llmModel); + onFormSubmit(); + toast.success('保存成功'); + } catch (err) { + toast.error('保存失败:' + (err as Error).message); + } } function deleteModel() { @@ -524,7 +532,6 @@ export default function LLMForm({ - {!editMode && } {editMode && ( +