import{a as S,E as $}from"./el-form-item-BA58sHM7.js";import{E as F}from"./el-popper-ijf4hJR9.js";import{E as T}from"./index-BNuJTOPh.js";import{E as G}from"./index-DXP8yRbu.js";import{E as z,a as Y}from"./el-select-CTMaVpjw.js";import{E as H,b as J}from"./el-radio-group-C0rHQJQP.js";import{v as Q}from"./directive-B3cCGCE3.js";import{d as W,aN as X,G as Z,K as ee,e as m,w as t,y as _,j as I,z as le,o as s,s as a,c as b,ad as L,f as oe,M as w,x as n,q as P,aa as ae,A as k,v as te,ac as re}from"./index-Di_EOfGc.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-scrollbar-B3KhXaPF.js";import"./el-tag-7y8XfwGF.js";import{P as ue}from"./PageCard-DV7_aQ9v.js";import{h as ne,i as se,u as ie,j as pe}from"./model-j6XB5QNI.js";import{_ as de}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-BJO2UyU0.js";import"./_baseClone-9Jzhq_Q-.js";import"./index-DfvEbper.js";import"./index-B-Y9DN1b.js";import"./raf-IGNBn_RA.js";import"./index-k8yHD6t1.js";import"./vnode-BJ_0wjgu.js";import"./index-BwMV6MbE.js";import"./scroll-BFlUZz8k.js";import"./clamp-BE2VEtCh.js";import"./toNumber-CQib__o7.js";import"./_baseIteratee-DQCaw9G-.js";import"./omit-DTOAvlk4.js";import"./el-card-owPje-oZ.js";const me={class:"model-path-row"},_e=W({__name:"ModelCreateView",setup(fe){const E=re(),M=te(),f=_(),c=_(!1),g=_(!1),y=I(()=>!!E.params.id),d=I(()=>E.params.id),v=_([]),l=le({name:"",type:"LLM",purpose:"inference",model_source:"local",description:"",path:"",api_url:"",api_key:"",online_model_name:""}),U={name:[{required:!0,message:"请输入模型名称",trigger:"blur"},{max:100,message:"不超过 100 字符",trigger:"blur"}],type:[{required:!0,message:"请选择模型类型",trigger:"change"}],purpose:[{required:!0,message:"请选择模型用途",trigger:"change"}]};function A(){return l.model_source==="local"?{path:[{required:!0,message:"请选择本地模型路径",trigger:"change"}]}:{api_url:[{required:!0,message:"请输入 API 地址",trigger:"blur"}],api_key:[{required:!0,message:"请输入 API Key",trigger:"blur"}],online_model_name:[{required:!0,message:"请输入模型名称",trigger:"blur"}]}}const R=Object.entries(X).map(([r,e])=>({value:r,label:e}));async function B(){if(d.value){c.value=!0;try{const r=await ne(d.value),e=r.model_source==="online"?"api":r.model_source||"local";Object.assign(l,{name:r.name||"",type:r.type||"LLM",purpose:r.purpose||"inference",model_source:e,description:r.description||"",path:r.path||"",api_url:r.api_url||"",api_key:r.api_key||"",online_model_name:r.model_name||""})}catch{}finally{c.value=!1}}}async function h(){try{const r=await se();v.value=(r==null?void 0:r.models)||[]}catch{v.value=[]}}async function O(){f.value&&await f.value.validate(async r=>{if(r){if(l.model_source==="local"&&!l.path){k.warning("请选择本地模型路径");return}g.value=!0;try{const e={name:l.name,type:l.type,purpose:l.purpose,model_source:l.model_source,description:l.description};l.model_source==="local"?e.path=l.path:(e.api_url=l.api_url,e.api_key=l.api_key,e.online_model_name=l.online_model_name),y.value&&d.value?(await ie(d.value,e),k.success("更新成功")):(await pe(e),k.success("创建成功")),M.push("/model-manage")}catch{}finally{g.value=!1}}})}function j(){M.back()}return Z(()=>{h(),B()}),(r,e)=>{const i=T,u=S,x=Y,q=z,p=J,C=H,V=G,D=F,K=$,N=Q;return ee((s(),m(ue,{title:y.value?"编辑模型":"添加模型"},{default:t(()=>[a(K,{ref_key:"formRef",ref:f,model:l,rules:{...U,...A()},"label-width":"120px",style:{"max-width":"640px"}},{default:t(()=>[a(u,{label:"模型名称",prop:"name"},{default:t(()=>[a(i,{modelValue:l.name,"onUpdate:modelValue":e[0]||(e[0]=o=>l.name=o),placeholder:"请输入模型名称",maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),a(u,{label:"模型类型",prop:"type"},{default:t(()=>[a(q,{modelValue:l.type,"onUpdate:modelValue":e[1]||(e[1]=o=>l.type=o),placeholder:"请选择模型类型",style:{width:"100%"}},{default:t(()=>[(s(!0),b(w,null,L(oe(R),o=>(s(),m(x,{key:o.value,label:o.label,value:o.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(u,{label:"模型用途",prop:"purpose"},{default:t(()=>[a(C,{modelValue:l.purpose,"onUpdate:modelValue":e[2]||(e[2]=o=>l.purpose=o)},{default:t(()=>[a(p,{value:"training"},{default:t(()=>[...e[9]||(e[9]=[n("训练基座",-1)])]),_:1}),a(p,{value:"inference"},{default:t(()=>[...e[10]||(e[10]=[n("推理对比",-1)])]),_:1}),a(p,{value:"evaluation"},{default:t(()=>[...e[11]||(e[11]=[n("评测",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(u,{label:"模型来源",prop:"model_source"},{default:t(()=>[a(C,{modelValue:l.model_source,"onUpdate:modelValue":e[3]||(e[3]=o=>l.model_source=o)},{default:t(()=>[a(p,{value:"local"},{default:t(()=>[...e[12]||(e[12]=[n("本地模型",-1)])]),_:1}),a(p,{value:"api"},{default:t(()=>[...e[13]||(e[13]=[n("在线模型",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),l.model_source==="local"?(s(),m(u,{key:0,label:"本地模型路径",prop:"path"},{default:t(()=>[P("div",me,[a(q,{modelValue:l.path,"onUpdate:modelValue":e[4]||(e[4]=o=>l.path=o),placeholder:"请选择或输入 /data/yg-ft/models 下的模型路径",filterable:"","allow-create":"","default-first-option":"",clearable:"",style:{width:"100%"}},{default:t(()=>[(s(!0),b(w,null,L(v.value,o=>(s(),m(x,{key:o.path,label:`${o.name} (${o.path})${o.source?` - ${o.source}`:""}`,value:o.path},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),a(V,{onClick:h},{default:t(()=>[...e[14]||(e[14]=[n("刷新",-1)])]),_:1}),a(D,{content:"模型目录需要位于算力容器可访问路径,例如默认挂载目录 docker/compute/data/yg-ft/models 对应容器内 /data/yg-ft/models。浏览器不能把电脑任意本地目录直接作为训练路径。",placement:"top"},{default:t(()=>[...e[15]||(e[15]=[P("i",{class:"fa fa-info-circle model-path-help","aria-hidden":"true"},null,-1)])]),_:1})])]),_:1})):(s(),b(w,{key:1},[a(u,{label:"API 地址",prop:"api_url"},{default:t(()=>[a(i,{modelValue:l.api_url,"onUpdate:modelValue":e[5]||(e[5]=o=>l.api_url=o),placeholder:"如:https://api.openai.com/v1"},null,8,["modelValue"])]),_:1}),a(u,{label:"API Key",prop:"api_key"},{default:t(()=>[a(i,{modelValue:l.api_key,"onUpdate:modelValue":e[6]||(e[6]=o=>l.api_key=o),type:"password","show-password":"",placeholder:"请输入 API Key"},null,8,["modelValue"])]),_:1}),a(u,{label:"模型名称",prop:"online_model_name"},{default:t(()=>[a(i,{modelValue:l.online_model_name,"onUpdate:modelValue":e[7]||(e[7]=o=>l.online_model_name=o),placeholder:"如:gpt-4、qwen-turbo"},null,8,["modelValue"])]),_:1})],64)),a(u,{label:"模型描述"},{default:t(()=>[a(i,{modelValue:l.description,"onUpdate:modelValue":e[8]||(e[8]=o=>l.description=o),type:"textarea",rows:3,maxlength:"500","show-word-limit":"",placeholder:"选填"},null,8,["modelValue"])]),_:1}),a(u,null,{default:t(()=>[a(V,{type:"primary",loading:g.value,onClick:O},{default:t(()=>[n(ae(y.value?"保存":"创建"),1)]),_:1},8,["loading"]),a(V,{onClick:j},{default:t(()=>[...e[16]||(e[16]=[n("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["title"])),[[N,c.value]])}}}),Fe=de(_e,[["__scopeId","data-v-7878649b"]]);export{Fe as default};