| 1 |
- import Ve from"./LayoutExperience-BQjisnTL.js";import Ue from"./ContentContainer-gbGCV-Ag.js";import{C as pe,H as Le}from"./CardItem-C2dVkQKn.js";/* empty css */import{S as re}from"./index-CXPh8ag9.js";import"./index-wO6pJ9oc.js";import{S as W,O as ee,a as Ce,T as ve}from"./index-CzRpKIrM.js";import"./index-CA2q5uMI.js";/* empty css */import"./index-BVNoxOpZ.js";/* empty css */import"./index-DGmDr7Bn.js";import{F as Z,a as J}from"./index-C-cMefgr.js";import{q as Ie,E as $e,F as Ae,G as Ee,H as Oe,I as De,J as Be,K as Se,L as xe,M as Fe,N as Te,O as Re,P as qe,Q as Pe,R as Ge,S as Xe,T as de,U as He,V as ze,W as Ne}from"./rgflow-dify-BpbcoktS.js";import{M as Q,B as se,_ as le}from"./index-BXFjXy9U.js";import{M as q}from"./index-CmJovvrp.js";import{e as H,j as m,x as N,s as c,o,A as l,a as f,D as a,c as I,F as A,Z as R,I as E,J as h,p as z,q as C,X as G,E as ne}from"./vue-vendor-BdC0yijC.js";import{c as fe}from"./icon-map-D83d39Ln.js";import{_ as ye}from"./DeleteModal-D0CHvIxG.js";/* empty css */import{I as ae}from"./index-Bc4thznF.js";import{I as Ke}from"./index-1SjORde5.js";import{E as ge}from"./index-BQQAHnA5.js";import"./Header-BJ0dL_T6.js";import"./use-platform-information-CCFvVYoR.js";/* empty css */import"./use-logout-Dk-xtgvs.js";import"./use-current-user-CeHiXGQg.js";import"./login-BhT3al3G.js";import"./use-merge-state-Db-kHu2v.js";import"./index.es-BMKnEbvs.js";import"./index-B_I0POCR.js";import"./index-B3z4cY-J.js";import"./index-927-iqvI.js";import"./responsive-observe-4ACH6YSC.js";const Ye={class:"section"},je={__name:"SystemSetting",props:{show_modal:Boolean},emits:["ragClose"],setup(k,{emit:O}){const p=k,U=O,b=H(()=>p.show_modal),M=m("vertical"),t=m({llm_id:"",embd_id:"",img2txt_id:"",asr_id:"",rerank_id:"",tts_id:""}),e=m(),D=m(),x=m(),S=m(!1),$=async()=>{try{const u=await $e();u.code/1===0&&(t.value={...u.data})}catch(u){console.log(u)}},B=async()=>{try{const u=await Ie(),d={};for(const r in u.data)if(Object.hasOwnProperty.call(u.data,r)){const _=u.data[r];d[r]=_.filter(w=>w.available===!0)}e.value=d,D.value={BAAI:[u.data.BAAI[1]],FastEmbed:u.data.FastEmbed,Xinference:u.data.Xinference,youdao:u.data.Youdao},x.value={BAAI:[u.data.BAAI[1]],youdao:u.data.Youdao}}catch{}finally{}},L=async()=>{try{S.value=!0;const u=await Ae(t.value);u.code/1==0&&u.data?(q.success("更新成功"),i()):q.error(u.message)}catch(u){console.log(u)}finally{S.value=!1}},y=()=>{L()},i=()=>{U("ragClose")};return N(async()=>{await B(),await $()}),(u,d)=>{const r=ee,_=W,w=J,V=Ce,n=Z,v=Q;return o(),c(v,{visible:b.value,"onUpdate:visible":d[6]||(d[6]=s=>b.value=s),"title-align":"start","align-center":!1,"esc-to-close":!1,top:"15vh",width:"30vw","ok-loading":S.value,onBeforeCancel:i,onOk:y},{title:l(()=>d[7]||(d[7]=[f("div",{class:"model-title"},"系统模型管理设置",-1)])),default:l(()=>[f("div",Ye,[a(n,{model:t.value,layout:M.value},{default:l(()=>[a(w,{field:"chatModal",label:"聊天模型"},{default:l(()=>[a(_,{modelValue:t.value.llm_id,"onUpdate:modelValue":d[0]||(d[0]=s=>t.value.llm_id=s),"allow-clear":""},{default:l(()=>[a(r)]),_:1},8,["modelValue"])]),_:1}),a(w,{field:"innerModal",label:"嵌入模型"},{default:l(()=>[a(_,{modelValue:t.value.embd_id,"onUpdate:modelValue":d[1]||(d[1]=s=>t.value.embd_id=s),"allow-clear":""},{default:l(()=>[(o(!0),I(A,null,R(D.value,(s,P)=>(o(),c(V,{label:P,key:P},{default:l(()=>[(o(!0),I(A,null,R(s,g=>(o(),c(r,{key:g.fid,disabled:!g.available,value:g.llm_name},{default:l(()=>[E(h(g.llm_name),1)]),_:2},1032,["disabled","value"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(w,{field:"img2txt",label:"Img2txt模型"},{default:l(()=>[a(_,{modelValue:t.value.img2txt_id,"onUpdate:modelValue":d[2]||(d[2]=s=>t.value.img2txt_id=s),"allow-clear":""},{default:l(()=>[a(r)]),_:1},8,["modelValue"])]),_:1}),a(w,{field:"sequence2txt",label:"Sequence2txt模型"},{default:l(()=>[a(_,{modelValue:t.value.asr_id,"onUpdate:modelValue":d[3]||(d[3]=s=>t.value.asr_id=s),"allow-clear":""},{default:l(()=>[a(r)]),_:1},8,["modelValue"])]),_:1}),a(w,{field:"rerank",label:"Rerank模型"},{default:l(()=>[a(_,{modelValue:t.value.rerank_id,"onUpdate:modelValue":d[4]||(d[4]=s=>t.value.rerank_id=s),"allow-clear":""},{default:l(()=>[(o(!0),I(A,null,R(x.value,(s,P)=>(o(),c(V,{label:P,key:P},{default:l(()=>[(o(!0),I(A,null,R(s,g=>(o(),c(r,{key:g.fid,disabled:!g.available,value:g.llm_name},{default:l(()=>[E(h(g.llm_name),1)]),_:2},1032,["disabled","value"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(w,{field:"tts",label:"TTS模型"},{default:l(()=>[a(_,{modelValue:t.value.tts_id,"onUpdate:modelValue":d[5]||(d[5]=s=>t.value.tts_id=s),"allow-clear":""},{default:l(()=>[a(r)]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model","layout"])])]),_:1},8,["visible","ok-loading"])}}},Ze={class:"section"},Je={__name:"SystemSetting",props:{show_modal:Boolean},emits:["difyClose"],setup(k,{emit:O}){const p=k,U=O,b=H(()=>p.show_modal),M=m("vertical"),t=m({llm:{model:"",model_type:"llm",provider:""},embd:{model:"",model_type:"text-embedding",provider:""},speech2txt:{model:"",model_type:"speech2text",provider:""},rerank:{model:"",model_type:"rerank",provider:""},tts:{model:"",model_type:"tts",provider:""}}),e=m(!1),D=()=>{const V=Object.values(t.value);i({model_settings:V})},x=()=>{U("difyClose")},S=m([]),$=m([]),B=m([]),L=m([]),y=m([]),i=async V=>{var n;e.value=!0;try{(await xe(V)).result==="success"&&(q.success("修改成功"),x())}catch(v){q.error((n=v.response)==null?void 0:n.data.message)}finally{e.value=!1}},u=async()=>{var V;try{const n=await Ee();n.data&&(S.value=((V=n.data[0])==null?void 0:V.models)||[],t.value.llm.provider=n.data.provider,S.value.length&&(t.value.llm.model=S.value[0].model,t.value.llm.model_type=S.value[0].model_type))}catch(n){console.log(n)}},d=async()=>{var V;try{const n=await Oe();n.data&&(t.value.embd.provider=n.data.provider,$.value=((V=n.data[0])==null?void 0:V.models)||[],$.value.length&&(t.value.embd.model=$.value[0].model,t.value.embd.model_type=$.value[0].model_type))}catch(n){console.log(n)}},r=async()=>{var V;try{const n=await De();n.data&&(B.value=((V=n.data[0])==null?void 0:V.models)||[],t.value.rerank.provider=n.data.provider,B.value.length&&(t.value.rerank.model=B.value[0].model,t.value.rerank.model_type=B.value[0].model_type))}catch(n){console.log(n)}},_=async()=>{var V;try{const n=await Be();n.data&&(t.value.speech2txt.provider=n.data.provider,L.value=((V=n.data[0])==null?void 0:V.models)||[],L.value.length&&(t.value.speech2txt.model=L.value[0].model,t.value.speech2txt.model_type=L.value[0].model_type))}catch(n){console.log(n)}},w=async()=>{var V;try{const n=await Se();n.data&&(t.value.tts.provider=n.data.provider,y.value=((V=n.data[0])==null?void 0:V.models)||[],y.value.length&&(t.value.tts.model=y.value[0].model,t.value.tts.model_type=y.value[0].model_type))}catch(n){console.log(n)}};return N(async()=>{await u(),await d(),await r(),await _(),await w()}),(V,n)=>{const v=ee,s=W,P=J,g=Z,oe=Q;return o(),c(oe,{visible:b.value,"onUpdate:visible":n[5]||(n[5]=T=>b.value=T),"title-align":"start","align-center":!1,"esc-to-close":!1,top:"15vh",width:"30vw","ok-loading":e.value,onBeforeCancel:x,onOk:D},{title:l(()=>n[6]||(n[6]=[f("div",{class:"model-title"},"系统模型管理设置",-1)])),default:l(()=>[f("div",Ze,[a(g,{model:t.value,layout:M.value},{default:l(()=>[a(P,{field:"",label:"系统推理模型"},{default:l(()=>[a(s,{modelValue:t.value.llm.model,"onUpdate:modelValue":n[0]||(n[0]=T=>t.value.llm.model=T)},{default:l(()=>[(o(!0),I(A,null,R(S.value,T=>(o(),c(v,{key:T.model,Value:T.model},{default:l(()=>[E(h(T.model),1)]),_:2},1032,["Value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(P,{field:"",label:"Embedding 模型"},{default:l(()=>[a(s,{modelValue:t.value.embd.model,"onUpdate:modelValue":n[1]||(n[1]=T=>t.value.embd.model=T)},{default:l(()=>[(o(!0),I(A,null,R($.value,T=>(o(),c(v,{key:T.model,Value:T.model},{default:l(()=>[E(h(T.model),1)]),_:2},1032,["Value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(P,{field:"",label:"Rerank 模型"},{default:l(()=>[a(s,{modelValue:t.value.rerank.model,"onUpdate:modelValue":n[2]||(n[2]=T=>t.value.rerank.model=T)},{default:l(()=>[(o(!0),I(A,null,R(B.value,T=>(o(),c(v,{key:T.model,Value:T.model},{default:l(()=>[E(h(T.model),1)]),_:2},1032,["Value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(P,{field:"",label:"语音转文本模型"},{default:l(()=>[a(s,{modelValue:t.value.speech2txt.model,"onUpdate:modelValue":n[3]||(n[3]=T=>t.value.speech2txt.model=T)},{default:l(()=>[(o(!0),I(A,null,R(L.value,T=>(o(),c(v,{key:T.model,Value:T.model},{default:l(()=>[E(h(T.model),1)]),_:2},1032,["Value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(P,{field:"",label:"文本转语音模型"},{default:l(()=>[a(s,{modelValue:t.value.tts.model,"onUpdate:modelValue":n[4]||(n[4]=T=>t.value.tts.model=T)},{default:l(()=>[(o(!0),I(A,null,R(y.value,T=>(o(),c(v,{key:T.model,Value:T.model},{default:l(()=>[E(h(T.model),1)]),_:2},1032,["Value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model","layout"])])]),_:1},8,["visible","ok-loading"])}}},Qe={__name:"TopSetting",emits:["changeType"],setup(k,{emit:O}){const p=O,U=m([{label:"助手",value:"assistant"},{label:"智能体",value:"agent"}]),b=m("assistant"),M=m(!1),t=m(!1),e=$=>{p("changeType",$)},D=()=>{b.value==="assistant"&&(M.value=!0),b.value==="agent"&&(t.value=!0)},x=()=>{M.value=!1},S=()=>{t.value=!1};return($,B)=>{const L=ee,y=W,i=z("icon-settings"),u=se,d=re;return o(),I(A,null,[a(d,{size:"large"},{default:l(()=>[a(y,{style:{width:"200px","background-color":"var(--color-bg-5)"},modelValue:b.value,"onUpdate:modelValue":B[0]||(B[0]=r=>b.value=r),onChange:e},{default:l(()=>[(o(!0),I(A,null,R(U.value,r=>(o(),c(L,{key:r.value,value:r.value},{default:l(()=>[E(h(r.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),a(u,{type:"primary",size:"large",onClick:D},{icon:l(()=>[a(i)]),default:l(()=>[E(" "+h($.$t("management.setModel")),1)]),_:1})]),_:1}),M.value?(o(),c(je,{key:0,show_modal:M.value,onRagClose:x},null,8,["show_modal"])):C("",!0),t.value?(o(),c(Je,{key:1,show_modal:t.value,onDifyClose:S},null,8,["show_modal"])):C("",!0)],64)}}},We={class:"collapse-item"},el={class:"name"},ll={__name:"CollapseItem",props:{models:{type:Object,required:!0}},emits:["toDeleteLLm"],setup(k,{emit:O}){const p=O,U=b=>{p("toDeleteLLm",b)};return(b,M)=>{const t=ve,e=z("icon-delete");return o(),I("div",We,[f("div",el,h(k.models.name),1),a(t,null,{default:l(()=>[E(h(k.models.type),1)]),_:1}),a(e,{class:"delete-icon",onClick:M[0]||(M[0]=D=>U(k.models.name))})])}}},al=le(ll,[["__scopeId","data-v-dd39982b"]]);function ue(k=500){const O=m(k);return{beforeEnter:M=>{M.style.maxHeight=0},enter:(M,t)=>{M.offsetHeight,M.style.transition="max-height 0.5s ease",M.style.maxHeight=`${O.value}px`,t()},leave:(M,t)=>{M.style.transition="max-height 0.5s ease",M.style.maxHeight=0,t()}}}const ol={class:"model-list"},tl={class:"list-header"},nl={class:"list-info"},dl=["src"],sl={class:"info-desc"},ul={class:"name"},il={class:"desc"},rl={class:"list-tools"},ml={key:0,class:"list-collapse"},_l={__name:"ModelList",props:{model_item:{request:!0,type:Object},model_name:{request:!0,type:String}},emits:["showMore","updateAddModelRG","toAddModel"],setup(k,{emit:O}){const p=k,U=O,b=m(!1),M=m(""),{beforeEnter:t,enter:e,leave:D}=ue(500),x=()=>{U("toAddModel",p.model_name)},S=()=>{b.value=!0},$=()=>{M.value?y():L()},B=u=>{U("showMore",u)},L=async()=>{try{const u=await Te({llm_factory:p.model_name});u.code/1==0&&u.data?(q.success("删除成功"),U("updateAddModelRG"),b.value=!1):q.error("删除失败")}catch(u){console.log(u)}},y=async()=>{try{const u=await Fe({llm_factory:p.model_name,llm_name:M.value});u.code/1==0&&u.data?(q.success("删除成功"),U("updateAddModelRG"),M.value="",b.value=!1):q.error("删除失败")}catch(u){console.log(u)}},i=u=>{M.value=u,b.value=!0};return(u,d)=>{const r=z("icon-plus"),_=se,w=z("icon-down"),V=z("icon-up"),n=z("icon-delete"),v=re;return o(),I(A,null,[f("div",ol,[f("div",tl,[f("div",nl,[f("img",{class:"icon",src:G(fe)(k.model_item.name),alt:""},null,8,dl),f("div",sl,[f("div",ul,h(k.model_name),1),f("div",il,h(k.model_item.tags),1)])]),f("div",rl,[a(v,null,{default:l(()=>[["OpenAI-API-Compatible","HuggingFace","Xinference","Ollama"].includes(k.model_item.name)?(o(),c(_,{key:0,onClick:x},{icon:l(()=>[a(r)]),default:l(()=>[E(" "+h(u.$t("management.addModelBtn")),1)]),_:1})):C("",!0),["OpenAI","DeepSeek"].includes(k.model_item.name)?(o(),c(_,{key:1,onClick:x},{icon:l(()=>[a(r)]),default:l(()=>[d[3]||(d[3]=E(" API_Key "))]),_:1})):C("",!0),a(_,{onClick:d[0]||(d[0]=s=>B(k.model_item))},{default:l(()=>[E(h(u.$t("management.showMoreModelBtn"))+" ",1),k.model_item.showMore?(o(),c(w,{key:0})):C("",!0),k.model_item.showMore?C("",!0):(o(),c(V,{key:1}))]),_:1}),a(n,{class:"delete-icon",onClick:d[1]||(d[1]=s=>S(k.model_item.name))})]),_:1})])]),a(ne,{name:"expand-collapse",onBeforeEnter:G(t),onEnter:G(e),onLeave:G(D)},{default:l(()=>[k.model_item.showMore?(o(),I("div",ml,[(o(!0),I(A,null,R(k.model_item.llm,(s,P)=>(o(),c(al,{key:P,models:s,onToDeleteLLm:i},null,8,["models"]))),128))])):C("",!0)]),_:1},8,["onBeforeEnter","onEnter","onLeave"])]),a(ye,{visible:b.value,onOk:$,onCancel:d[2]||(d[2]=s=>b.value=!1)},null,8,["visible"])],64)}}},cl=le(_l,[["__scopeId","data-v-f1cd1d57"]]),pl={class:"section"},vl={__name:"ModalAdd_1",props:{show_modal:Boolean,model_data:Object},emits:["ragClose","updateModelList"],setup(k,{emit:O}){const p=k,U=O,b=H(()=>p.show_modal),M=m("vertical"),t=m(!1),e=m({model_type:"",llm_name:"",api_base:"",max_tokens:"",api_key:"",llm_factory:""}),D={model_type:[{required:!0,message:"模型类型必填"}],llm_name:[{required:!0,message:"模型名称必填"}],api_base:[{required:!0,message:"基础url必填"}],max_tokens:[{required:!0,message:"最大token数必填"}]},x=H(()=>p.model_data.model_types),S=async()=>{if(e.value.model_type&&e.value.llm_name&&e.value.api_base&&e.value.max_tokens){t.value=!0;const y=await B(e.value);y.code/1===0?(q.success("添加成功"),U("updateModelList"),$()):q.error(y.message),t.value=!1}else q.error("缺少必填项")},$=()=>{U("ragClose")},B=async y=>{try{return await Re(y)}catch(i){console.log(i)}},L=()=>{};return N(()=>{p.model_data.model_types.length&&(e.value.model_type=p.model_data.model_types[0]),e.value.llm_factory=p.model_data.name}),(y,i)=>{const u=ee,d=W,r=J,_=ae,w=Ke,V=Z,n=Q;return o(),c(n,{visible:b.value,"onUpdate:visible":i[5]||(i[5]=v=>b.value=v),"title-align":"start","align-center":!1,"esc-to-close":!1,"ok-loading":t.value,top:"15vh",width:"30vw",onBeforeCancel:$,onOk:S},{title:l(()=>i[6]||(i[6]=[f("div",{class:"model-title"},[f("b",null,"添加LLM")],-1)])),default:l(()=>[f("div",pl,[a(V,{model:e.value,ref:"formRef",rules:D,layout:M.value,onSubmit:L},{default:l(()=>[a(r,{field:"model_type",label:"模型类型"},{default:l(()=>[a(d,{modelValue:e.value.model_type,"onUpdate:modelValue":i[0]||(i[0]=v=>e.value.model_type=v)},{default:l(()=>[(o(!0),I(A,null,R(x.value,v=>(o(),c(u,{key:v,value:v},{default:l(()=>[E(h(v),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(r,{field:"llm_name",label:k.model_data.name=="Xinference"||k.model_data.name=="Ollama"?"模型UID":"模型名称"},{default:l(()=>[a(_,{modelValue:e.value.llm_name,"onUpdate:modelValue":i[1]||(i[1]=v=>e.value.llm_name=v),placeholder:"请输入模型名称"},null,8,["modelValue"])]),_:1},8,["label"]),a(r,{field:"api_base",label:"基础Url"},{default:l(()=>[a(_,{modelValue:e.value.api_base,"onUpdate:modelValue":i[2]||(i[2]=v=>e.value.api_base=v),placeholder:"请输入模型基础URL"},null,8,["modelValue"])]),_:1}),a(r,{field:"api_key",label:"API-Key"},{default:l(()=>[a(_,{modelValue:e.value.api_key,"onUpdate:modelValue":i[3]||(i[3]=v=>e.value.api_key=v),placeholder:"请输入apiKey(如果是本地部署的模型,请忽略它)"},null,8,["modelValue"])]),_:1}),a(r,{field:"max_tokens",label:"最大token数"},{default:l(()=>[a(w,{modelValue:e.value.max_tokens,"onUpdate:modelValue":i[4]||(i[4]=v=>e.value.max_tokens=v),placeholder:"这设置了模型输出的最大长度,以标记(单词或单词判断)的数量来衡量",min:0},null,8,["modelValue"])]),_:1})]),_:1},8,["model","layout"])])]),_:1},8,["visible","ok-loading"])}}},fl={class:"section"},yl={__name:"ModalAdd_2",props:{show_modal:Boolean,model_data:Object},emits:["ragClose","updateModelList"],setup(k,{emit:O}){const p=k,U=O,b=H(()=>p.show_modal),M=m("vertical"),t=m({api_key:"",base_url:"",llm_factory:""}),e={api_key:[{required:!0,message:"请输入api key(如果是本地部署的模型,请忽略它)"}]},D=m(!1);H(()=>p.model_data.model_types);const x=async()=>{if(t.value.api_key){D.value=!0;const B=await $(t.value);B.code/1===0?(q.success("添加成功"),U("updateModelList"),S()):q.error(B.message),D.value=!1}else q.error("缺少必填项")},S=()=>{U("ragClose")},$=async B=>{try{return await qe(B)}catch(L){console.log(L)}};return N(()=>{p.model_data.model_types.length&&(t.value.model_type=p.model_data.model_types[0]),t.value.llm_factory=p.model_data.name}),(B,L)=>{const y=ae,i=J,u=Z,d=Q;return o(),c(d,{visible:b.value,"onUpdate:visible":L[2]||(L[2]=r=>b.value=r),"title-align":"start","align-center":!1,"esc-to-close":!1,top:"15vh",width:"30vw","ok-loading":D.value,onBeforeCancel:S,onOk:x},{title:l(()=>L[3]||(L[3]=[f("div",{class:"model-title"},[f("b",null,"修改")],-1)])),default:l(()=>[f("div",fl,[a(u,{model:t.value,ref:"formRef",rules:e,layout:M.value},{default:l(()=>[a(i,{field:"api_key",label:"API-Key"},{default:l(()=>[a(y,{modelValue:t.value.api_key,"onUpdate:modelValue":L[0]||(L[0]=r=>t.value.api_key=r),placeholder:"请输入apiKey(如果是本地部署的模型,请忽略它)"},null,8,["modelValue"])]),_:1}),k.model_data.name==="OpenAI"?(o(),c(i,{key:0,field:"base_url",label:"Base-Url"},{default:l(()=>[a(y,{modelValue:t.value.base_url,"onUpdate:modelValue":L[1]||(L[1]=r=>t.value.base_url=r),placeholder:"https://api.openai.com/v1"},null,8,["modelValue"])]),_:1})):C("",!0)]),_:1},8,["model","layout"])])]),_:1},8,["visible","ok-loading"])}}},gl={class:"model-body"},bl={class:"body-item"},kl={class:"item-title"},hl={class:"title"},Ml={key:0},wl={class:"body-item"},Vl={class:"item-title"},Ul={class:"title"},Ll={key:0,class:"card-list"},Cl={class:"labels"},Il={class:"desc"},$l={__name:"MessageBody",setup(k){const{beforeEnter:O,enter:p,leave:U}=ue(1e3),b=m([]);m([{id:"1",name:"OpenAl",keyword:"LLM,TEXT",desc:"EMBEDDING,SPEECH2TEXT,MODERATION",img_src:"modelFrame4"},{id:"2",name:"Moonshot",keyword:"LLM,TEXT EMBEDDING",desc:"",img_src:"modelFrame5"},{id:"3",name:"ZHIPU-AI",keyword:"LLM,TEXT",desc:"EMBEDDING,SPEECH2TEXT,MODERATION",img_src:"modelFrame6"},{id:"4",name:"BaiChuan",keyword:"LLM,TEXT EMBEDDING",desc:"",img_src:"modelFrame7"},{id:"5",name:"DeepSeek",keyword:"LLM",desc:"",img_src:"modelFrame8"},{id:"6",name:"Mistral",keyword:"LLM,TEXT EMBEDDING",desc:"",img_src:"modelFrame9"},{id:"7",name:"StepFun",keyword:"LLM",desc:"",img_src:"modelFrame10"}]);const M=m({}),t=m([]),e=m(!0),D=m(!0),x=m(!1),S=m({}),$=m(!1),B=m({}),L=()=>{e.value=!e.value,e.value||b.value.forEach(v=>{v.show_more=!1})},y=()=>{D.value=!D.value},i=v=>{M.value[v.name].showMore=!M.value[v.name].showMore},u=async()=>{try{const v=await Pe();if(v.code/1===0){for(const s in v.data)v.data[s].showMore=!1,v.data[s].name=s;M.value={...v.data}}}catch(v){console.log(v)}},d=async()=>{try{const v=await Ge();v.code/1===0&&(t.value=v.data.filter(s=>["OpenAI","Ollama","DeepSeek","OpenAI-API-Compatible","Xinference","HuggingFace"].includes(s.name)))}catch(v){console.log(v)}},r=async()=>{await u(),await d()},_=v=>{const s=t.value.find(P=>P.name===v);w(s)},w=async v=>{["OpenAI-API-Compatible","HuggingFace","Xinference","Ollama"].includes(v.name)&&(x.value=!0,S.value=v),["OpenAI","DeepSeek"].includes(v.name)&&($.value=!0,B.value=v)},V=()=>{x.value=!1,S.value={}},n=()=>{$.value=!1,B.value={}};return N(()=>{u(),d()}),(v,s)=>{const P=z("icon-up"),g=z("icon-down"),oe=ge,T=z("icon-plus"),ie=se;return o(),I(A,null,[f("div",gl,[f("div",bl,[f("div",kl,[f("div",hl,h(v.$t("management.addedModel")),1),f("div",{class:"icon",onClick:L},[e.value?(o(),I(A,{key:0},[E(h(v.$t("management.upBtn"))+" ",1),a(P)],64)):C("",!0),e.value?C("",!0):(o(),I(A,{key:1},[E(h(v.$t("management.downBtn"))+" ",1),a(g)],64))])]),a(ne,{name:"expand-collapse",onBeforeEnter:G(O),onEnter:G(p),onLeave:G(U)},{default:l(()=>[e.value?(o(),I("div",Ml,[(o(!0),I(A,null,R(M.value,(Y,te)=>(o(),c(cl,{key:te,model_item:Y,model_name:te,onShowMore:i,onUpdateAddModelRG:r,onToAddModel:_},{default:l(()=>[E(h(v.index),1)]),_:2},1032,["model_item","model_name"]))),128)),M.value.length?C("",!0):(o(),c(oe,{key:0,class:"empty-list"}))])):C("",!0)]),_:1},8,["onBeforeEnter","onEnter","onLeave"])]),f("div",wl,[f("div",Vl,[f("div",Ul,h(v.$t("management.unaddModel")),1),f("div",{class:"icon",onClick:y},[D.value?(o(),I(A,{key:0},[E(h(v.$t("management.upBtn"))+" ",1),a(P)],64)):C("",!0),D.value?C("",!0):(o(),I(A,{key:1},[E(h(v.$t("management.downBtn"))+" ",1),a(g)],64))])]),a(ne,{name:"expand-collapse",onBeforeEnter:G(O),onEnter:G(p),onLeave:G(U)},{default:l(()=>[D.value?(o(),I("div",Ll,[(o(!0),I(A,null,R(t.value,Y=>(o(),c(pe,{key:Y.id,name:Y.name,img_src:Y.img_src,is_model:""},{labels:l(()=>[f("div",Cl,h(Y.keyword),1)]),description:l(()=>[f("div",Il,h(Y.tags),1)]),bottom:l(()=>[a(ie,{onClick:te=>w(Y)},{icon:l(()=>[a(T)]),default:l(()=>[E(h(v.$t("management.addModelBtn")),1)]),_:2},1032,["onClick"])]),_:2},1032,["name","img_src"]))),128))])):C("",!0)]),_:1},8,["onBeforeEnter","onEnter","onLeave"]),t.value.length?C("",!0):(o(),c(oe,{key:0,class:"empty-list"}))])]),x.value?(o(),c(vl,{key:0,show_modal:x.value,model_data:S.value,onRagClose:V,onUpdateModelList:r},null,8,["show_modal","model_data"])):C("",!0),$.value?(o(),c(yl,{key:1,show_modal:$.value,model_data:B.value,onRagClose:n,onUpdateModelList:r},null,8,["show_modal","model_data"])):C("",!0)],64)}}},Al=le($l,[["__scopeId","data-v-a4f4d33c"]]),El={class:"collapse-item"},Ol={class:"name"},Dl={__name:"CollapseItem",props:{models:{type:Object,required:!0}},emits:["toDeleteLLm"],setup(k,{emit:O}){const p=O,U=b=>{p("toDeleteLLm",b)};return(b,M)=>{const t=ve,e=z("icon-delete");return o(),I("div",El,[f("div",Ol,h(k.models.model),1),a(t,null,{default:l(()=>[E(h(k.models.model_type),1)]),_:1}),a(e,{class:"delete-icon",onClick:M[0]||(M[0]=D=>U(k.models))})])}}},Bl=le(Dl,[["__scopeId","data-v-0e539f41"]]),Sl={class:"model-list"},xl={class:"list-header"},Fl={class:"list-info"},Tl=["src"],Rl={class:"info-desc"},ql={class:"name"},Pl={class:"desc"},Gl={class:"list-tools"},Xl={key:0,class:"list-collapse"},Hl={__name:"ModelList",props:{model_item:{request:!0,type:Object},model_name:{request:!0,type:String}},emits:["showMore","updateAddModelDify","toAddModel"],setup(k,{emit:O}){const p=k,U=O,b=m(!1),M=m({}),{beforeEnter:t,enter:e,leave:D}=ue(500),x=()=>{U("toAddModel",p.model_name)},S=async()=>{await B()},$=y=>{U("showMore",y)},B=async()=>{try{await Xe(M.value.provider,{model:M.value.model,model_type:M.value.model_type}),M.value={},b.value=!1,q.success("删除成功")}catch{}finally{U("updateAddModelDify"),delete_llm_name.value={},b.value=!1}},L=y=>{M.value={model:y.model,model_type:y.model_type,provider:y.provider.provider},b.value=!0};return(y,i)=>{const u=z("icon-plus"),d=se,r=z("icon-down"),_=z("icon-up"),w=re;return o(),I(A,null,[f("div",Sl,[f("div",xl,[f("div",Fl,[f("img",{class:"icon",src:G(fe)(k.model_name),alt:""},null,8,Tl),f("div",Rl,[f("div",ql,h(k.model_name),1),f("div",Pl,h(k.model_item.supported_model_types.join(",")),1)])]),f("div",Gl,[a(w,null,{default:l(()=>[["OpenAI-API-compatible","HuggingFace","Xorbits Inference","Ollama"].includes(k.model_name)?(o(),c(d,{key:0,onClick:x},{icon:l(()=>[a(u)]),default:l(()=>[E(" "+h(y.$t("management.addModelBtn")),1)]),_:1})):C("",!0),["OpenAI","DeepSeek"].includes(k.model_item.name)?(o(),c(d,{key:1,onClick:x},{icon:l(()=>[a(u)]),default:l(()=>[i[2]||(i[2]=E(" API_Key "))]),_:1})):C("",!0),a(d,{onClick:i[0]||(i[0]=V=>$(k.model_item))},{default:l(()=>[E(h(y.$t("management.showMoreModelBtn"))+" ",1),k.model_item.showMore?(o(),c(r,{key:0})):C("",!0),k.model_item.showMore?C("",!0):(o(),c(_,{key:1}))]),_:1})]),_:1})])]),a(ne,{name:"expand-collapse",onBeforeEnter:G(t),onEnter:G(e),onLeave:G(D)},{default:l(()=>[k.model_item.showMore?(o(),I("div",Xl,[(o(!0),I(A,null,R(k.model_item.llm,(V,n)=>(o(),c(Bl,{key:n,models:V,onToDeleteLLm:L},null,8,["models"]))),128))])):C("",!0)]),_:1},8,["onBeforeEnter","onEnter","onLeave"])]),a(ye,{visible:b.value,onOk:S,onCancel:i[1]||(i[1]=V=>b.value=!1)},null,8,["visible"])],64)}}},zl=le(Hl,[["__scopeId","data-v-0ab06d34"]]),Nl={class:"model-title"},Kl={class:"section"},Yl={__name:"ModalAdd_1",props:{show_modal:Boolean,model_data:Object},emits:["difyClose","updateModelList"],setup(k,{emit:O}){const p=k,U=O,b=H(()=>p.show_modal),M=m("vertical"),t=m(!1),e=m({model_type:"",model:"",credentials:{api_key:"",model_uid:"",server_url:""},load_balancing:{configs:[],enabled:!1}}),D={model_type:[{required:!0,message:"模型类型必填"}],model:[{required:!0,message:"模型名称必填"}],"credentials.server_url":[{required:!0,message:"服务器URL必填"}],"credentials.model_uid":[{required:!0,message:"模型UID必填"}]},x=H(()=>p.model_data.supported_model_types),S=async()=>{try{if(e.value.model_type&&e.value.model&&e.value.credentials.server_url&&e.value.credentials.model_uid){t.value=!0;const y=await B(p.model_data.provider,e.value);y&&y.result==="success"?(q.success("添加成功"),U("updateModelList"),$()):q.error(y.message),t.value=!1}else q.error("缺少必填项")}catch{}finally{t.value=!1}},$=()=>{U("difyClose")},B=async(y,i)=>{var u,d;try{return await de(y,i)}catch(r){console.log(r),q.error((d=(u=r.response)==null?void 0:u.data)==null?void 0:d.message)}},L=()=>{};return N(()=>{p.model_data.supported_model_types.length&&(e.value.model_type=p.model_data.supported_model_types[0])}),(y,i)=>{const u=ee,d=W,r=J,_=ae,w=Z,V=Q;return o(),c(V,{visible:b.value,"onUpdate:visible":i[5]||(i[5]=n=>b.value=n),"title-align":"start","align-center":!1,"esc-to-close":!1,"ok-loading":t.value,top:"15vh",width:"30vw",onBeforeCancel:$,onOk:S},{title:l(()=>[f("div",Nl,[f("b",null,"添加 "+h(p.model_data.label.en_US),1)])]),default:l(()=>[f("div",Kl,[a(w,{model:e.value,ref:"formRef",rules:D,layout:M.value,onSubmit:L},{default:l(()=>[a(r,{field:"model_type",label:"模型类型"},{default:l(()=>[a(d,{modelValue:e.value.model_type,"onUpdate:modelValue":i[0]||(i[0]=n=>e.value.model_type=n)},{default:l(()=>[(o(!0),I(A,null,R(x.value,n=>(o(),c(u,{key:n,value:n},{default:l(()=>[E(h(n),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(r,{field:"model",label:"模型名称"},{default:l(()=>[a(_,{modelValue:e.value.model,"onUpdate:modelValue":i[1]||(i[1]=n=>e.value.model=n),placeholder:"请输入模型名称"},null,8,["modelValue"])]),_:1}),a(r,{field:"credentials.server_url",label:"服务器Url"},{default:l(()=>[a(_,{modelValue:e.value.credentials.server_url,"onUpdate:modelValue":i[2]||(i[2]=n=>e.value.credentials.server_url=n),placeholder:"请输入服务器地址"},null,8,["modelValue"])]),_:1}),a(r,{field:"credentials.model_uid",label:"模型UID"},{default:l(()=>[a(_,{modelValue:e.value.credentials.model_uid,"onUpdate:modelValue":i[3]||(i[3]=n=>e.value.credentials.model_uid=n),placeholder:"请输入模型UID"},null,8,["modelValue"])]),_:1}),a(r,{field:"api_key",label:"API密钥"},{default:l(()=>[a(_,{modelValue:e.value.credentials.api_key,"onUpdate:modelValue":i[4]||(i[4]=n=>e.value.credentials.api_key=n),placeholder:"请输入API密钥"},null,8,["modelValue"])]),_:1})]),_:1},8,["model","layout"])])]),_:1},8,["visible","ok-loading"])}}},jl={class:"model-title"},Zl={class:"section"},Jl={__name:"ModalAdd_2",props:{show_modal:Boolean,model_data:Object},emits:["difyClose","updateModelList"],setup(k,{emit:O}){const p=k,U=O,b=H(()=>p.show_modal),M=m("vertical"),t=m(!1),e=m({model_type:"",model:"",credentials:{openai_api_key:"",openai_api_base:"",openai_organization:""},load_balancing:{configs:[],enabled:!1}}),D={model_type:[{required:!0,message:"模型类型必填"}],model:[{required:!0,message:"模型名称必填"}],"credentials.openai_api_key":[{required:!0,message:"API Key必填"}]},x=H(()=>p.model_data.supported_model_types),S=async()=>{try{if(e.value.model_type&&e.value.model&&e.value.credentials.openai_api_key){t.value=!0;const y=await B(p.model_data.provider,e.value);y&&y.result==="success"&&(U("updateModelList"),$()),t.value=!1}else q.error("缺少必填项")}catch{}finally{t.value=!1}},$=()=>{U("difyClose")},B=async(y,i)=>{var u,d;try{return await de(y,i)}catch(r){console.log(r),q.error((d=(u=r.response)==null?void 0:u.data)==null?void 0:d.message)}},L=()=>{};return N(()=>{p.model_data.supported_model_types.length&&(e.value.model_type=p.model_data.supported_model_types[0])}),(y,i)=>{const u=ee,d=W,r=J,_=ae,w=Z,V=Q;return o(),c(V,{visible:b.value,"onUpdate:visible":i[5]||(i[5]=n=>b.value=n),"title-align":"start","align-center":!1,"esc-to-close":!1,"ok-loading":t.value,top:"15vh",width:"30vw",onBeforeCancel:$,onOk:S},{title:l(()=>[f("div",jl,[f("b",null,"添加 "+h(p.model_data.label.en_US),1)])]),default:l(()=>[f("div",Zl,[a(w,{model:e.value,ref:"formRef",rules:D,layout:M.value,onSubmit:L},{default:l(()=>[a(r,{field:"model_type",label:"模型类型"},{default:l(()=>[a(d,{modelValue:e.value.model_type,"onUpdate:modelValue":i[0]||(i[0]=n=>e.value.model_type=n)},{default:l(()=>[(o(!0),I(A,null,R(x.value,n=>(o(),c(u,{key:n,value:n},{default:l(()=>[E(h(n),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(r,{field:"model",label:"模型名称"},{default:l(()=>[a(_,{modelValue:e.value.model,"onUpdate:modelValue":i[1]||(i[1]=n=>e.value.model=n),placeholder:"请输入模型名称"},null,8,["modelValue"])]),_:1}),a(r,{field:"credentials.openai_api_key",label:"API Key"},{default:l(()=>[a(_,{modelValue:e.value.credentials.openai_api_key,"onUpdate:modelValue":i[2]||(i[2]=n=>e.value.credentials.openai_api_key=n),placeholder:"请输入API Key"},null,8,["modelValue"])]),_:1}),a(r,{field:"credentials.openai_organization",label:"组织 ID"},{default:l(()=>[a(_,{modelValue:e.value.credentials.openai_organization,"onUpdate:modelValue":i[3]||(i[3]=n=>e.value.credentials.openai_organization=n),placeholder:"请输入组织 ID"},null,8,["modelValue"])]),_:1}),a(r,{field:"credentials.openai_api_base",label:"API Base"},{default:l(()=>[a(_,{modelValue:e.value.credentials.openai_api_base,"onUpdate:modelValue":i[4]||(i[4]=n=>e.value.credentials.openai_api_base=n),placeholder:"请输入API Base"},null,8,["modelValue"])]),_:1})]),_:1},8,["model","layout"])])]),_:1},8,["visible","ok-loading"])}}},Ql={class:"model-title"},Wl={class:"section"},ea={__name:"ModalAdd_3",props:{show_modal:Boolean,model_data:Object},emits:["difyClose","updateModelList"],setup(k,{emit:O}){const p=k,U=O,b=H(()=>p.show_modal),M=m("vertical"),t=m(!1),e=m({model_type:"",model:"",credentials:{api_key:"",endpoint_url:"",context_size:"4096",function_calling_type:"no_call",max_tokens_to_sample:"4096",mode:"chat",stream_function_calling:"not_supported",stream_mode_delimiter:"\\n\\n",vision_support:"no_support"},load_balancing:{configs:[],enabled:!1}}),D={model_type:[{required:!0,message:"模型类型必填"}],model:[{required:!0,message:"模型名称必填"}],"credentials.endpoint_url":[{required:!0,message:"API endpoint URL必填"}],"credentials.context_size":[{required:!0,message:"模型上下文长度必填"}],"credentials.max_tokens_to_sample":[{required:!0,message:"最大token上限必填"}],"credentials.stream_mode_delimiter":[{required:!0,message:"流模式返回结果的分隔符必填"}]},x=m([{label:"补全",value:"completion"},{label:"对话",value:"chat"}]),S=m([{label:"Function Call",value:"function_call"},{label:"Tool Call",value:"tool_call"},{label:"不支持",value:"no_call"}]),$=m([{label:"不支持",value:"not_supported"},{label:"支持",value:"supported"}]),B=m([{label:"不支持",value:"no_support"},{label:"支持",value:"support"}]),L=H(()=>p.model_data.supported_model_types),y=async()=>{try{if(e.value.model_type&&e.value.model&&e.value.credentials.endpoint_url&&e.value.credentials.context_size&&e.value.credentials.max_tokens_to_sample&&e.value.credentials.stream_mode_delimiter){t.value=!0;const r=await u(p.model_data.provider,e.value);r&&r.result==="success"&&(U("updateModelList"),i()),t.value=!1}else q.error("缺少必填项")}catch{}finally{t.value=!1}},i=()=>{U("difyClose")},u=async(r,_)=>{var w,V;try{return await de(r,_)}catch(n){console.log(n),q.error((V=(w=n.response)==null?void 0:w.data)==null?void 0:V.message)}},d=()=>{};return N(()=>{p.model_data.supported_model_types.length&&(e.value.model_type=p.model_data.supported_model_types[0])}),(r,_)=>{const w=ee,V=W,n=J,v=ae,s=Z,P=Q;return o(),c(P,{visible:b.value,"onUpdate:visible":_[11]||(_[11]=g=>b.value=g),"title-align":"start","align-center":!1,"esc-to-close":!1,"ok-loading":t.value,top:"15vh",width:"30vw",onBeforeCancel:i,onOk:y},{title:l(()=>[f("div",Ql,[f("b",null,"添加 "+h(p.model_data.label.en_US),1)])]),default:l(()=>[f("div",Wl,[a(s,{model:e.value,ref:"formRef",rules:D,layout:M.value,onSubmit:d},{default:l(()=>[a(n,{field:"model_type",label:"模型类型"},{default:l(()=>[a(V,{modelValue:e.value.model_type,"onUpdate:modelValue":_[0]||(_[0]=g=>e.value.model_type=g)},{default:l(()=>[(o(!0),I(A,null,R(L.value,g=>(o(),c(w,{key:g,value:g},{default:l(()=>[E(h(g),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(n,{field:"model",label:"模型名称"},{default:l(()=>[a(v,{modelValue:e.value.model,"onUpdate:modelValue":_[1]||(_[1]=g=>e.value.model=g),placeholder:"请输入模型名称"},null,8,["modelValue"])]),_:1}),a(n,{field:"api_key",label:"API Key"},{default:l(()=>[a(v,{modelValue:e.value.credentials.api_key,"onUpdate:modelValue":_[2]||(_[2]=g=>e.value.credentials.api_key=g),placeholder:"请输入API Key"},null,8,["modelValue"])]),_:1}),a(n,{field:"credentials.endpoint_url",label:"API endpoint URL"},{default:l(()=>[a(v,{modelValue:e.value.credentials.endpoint_url,"onUpdate:modelValue":_[3]||(_[3]=g=>e.value.credentials.endpoint_url=g),placeholder:"Base URL,e.g.https://api.openai.com/v1"},null,8,["modelValue"])]),_:1}),e.value.model_type==="llm"?(o(),c(n,{key:0,field:"credentials.mode",label:"Completion mode"},{default:l(()=>[a(V,{modelValue:e.value.credentials.mode,"onUpdate:modelValue":_[4]||(_[4]=g=>e.value.credentials.mode=g),"allow-clear":"",placeholder:"选择对话类型"},{default:l(()=>[(o(!0),I(A,null,R(x.value,g=>(o(),c(w,{key:g.value,value:g.value},{default:l(()=>[E(h(g.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1})):C("",!0),e.value.model_type!=="speech2text"?(o(),c(n,{key:1,field:"credentials.context_size",label:"模型上下文长度"},{default:l(()=>[a(v,{modelValue:e.value.credentials.context_size,"onUpdate:modelValue":_[5]||(_[5]=g=>e.value.credentials.context_size=g),placeholder:"请输入模型上下文长度"},null,8,["modelValue"])]),_:1})):C("",!0),e.value.model_type==="llm"?(o(),c(n,{key:2,field:"credentials.max_tokens_to_sample",label:"最大token上限"},{default:l(()=>[a(v,{modelValue:e.value.credentials.max_tokens_to_sample,"onUpdate:modelValue":_[6]||(_[6]=g=>e.value.credentials.max_tokens_to_sample=g)},null,8,["modelValue"])]),_:1})):C("",!0),e.value.model_type==="llm"?(o(),c(n,{key:3,field:"credentials.function_calling_type",label:"Function calling"},{default:l(()=>[a(V,{modelValue:e.value.credentials.function_calling_type,"onUpdate:modelValue":_[7]||(_[7]=g=>e.value.credentials.function_calling_type=g),"allow-clear":"",placeholder:"请选择"},{default:l(()=>[(o(!0),I(A,null,R(S.value,g=>(o(),c(w,{key:g.value,value:g.value},{default:l(()=>[E(h(g.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1})):C("",!0),e.value.model_type==="llm"?(o(),c(n,{key:4,field:"credentials.stream_function_calling",label:"Stream function calling"},{default:l(()=>[a(V,{modelValue:e.value.credentials.stream_function_calling,"onUpdate:modelValue":_[8]||(_[8]=g=>e.value.credentials.stream_function_calling=g),"allow-clear":"",placeholder:"请选择"},{default:l(()=>[(o(!0),I(A,null,R($.value,g=>(o(),c(w,{key:g.value,value:g.value},{default:l(()=>[E(h(g.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1})):C("",!0),e.value.model_type==="llm"?(o(),c(n,{key:5,field:"credentials.vision_support",label:"Vision 支持"},{default:l(()=>[a(V,{modelValue:e.value.credentials.vision_support,"onUpdate:modelValue":_[9]||(_[9]=g=>e.value.credentials.vision_support=g),"allow-clear":"",placeholder:"请选择"},{default:l(()=>[(o(!0),I(A,null,R(B.value,g=>(o(),c(w,{key:g.value,value:g.value},{default:l(()=>[E(h(g.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1})):C("",!0),e.value.model_type==="llm"?(o(),c(n,{key:6,field:"credentials.stream_mode_delimiter",label:"流模式返回结果的分隔符"},{default:l(()=>[a(v,{modelValue:e.value.credentials.stream_mode_delimiter,"onUpdate:modelValue":_[10]||(_[10]=g=>e.value.credentials.stream_mode_delimiter=g),placeholder:"请输入模型UID"},null,8,["modelValue"])]),_:1})):C("",!0)]),_:1},8,["model","layout"])])]),_:1},8,["visible","ok-loading"])}}},la=le(ea,[["__scopeId","data-v-9178ccbe"]]),aa={class:"model-title"},oa={class:"section"},ta={__name:"ModalAdd_4",props:{show_modal:Boolean,model_data:Object},emits:["difyClose","updateModelList"],setup(k,{emit:O}){const p=k,U=O,b=H(()=>p.show_modal),M=m("vertical"),t=m(!1),e=m({model_type:"",model:"",credentials:{huggingfacehub_api_type:"hosted_inference_api",huggingfacehub_api_token:"",huggingfacehub_endpoint_url:"",task_type:""},load_balancing:{configs:[],enabled:!1}}),D={model_type:[{required:!0,message:"模型类型必填"}],model:[{required:!0,message:"模型名称必填"}],"credentials.huggingfacehub_api_token":[{required:!0,message:"API Token必填"}],"credentials.huggingfacehub_api_type":[{required:!0,message:"端点类型必填"}],"credentials.huggingfacehub_endpoint_url":[{required:!0,message:"端点URL必填"}],"credentials.task_type":[{required:!0,message:"Task必填"}]},x=m([{label:"Hosted Inference API",value:"hosted_inference_api"},{label:"Inference Endpoints",value:"inference_endpoints"}]),S=m([{label:"Text-to-Text Generation",value:"text2text-generation"},{label:"文本生成",value:"text-generation"}]),$=H(()=>p.model_data.supported_model_types),B=async()=>{try{let u=!1;if(e.value.credentials.huggingfacehub_api_type==="hosted_inference_api"&&(e.value.model_type&&e.value.model&&e.value.credentials.huggingfacehub_api_token?u=!0:u=!1),e.value.credentials.huggingfacehub_api_type==="inference_endpoints"&&(e.value.model_type&&e.value.model&&e.value.credentials.huggingfacehub_api_token&&e.value.credentials.huggingfacehub_endpoint_url&&e.value.credentials.task_type?u=!0:u=!1),u){t.value=!0;const d=await y(p.model_data.provider,e.value);d&&d.result==="success"&&(U("updateModelList"),L()),t.value=!1}else q.error("缺少必填项")}catch{}finally{t.value=!1}},L=()=>{U("difyClose")},y=async(u,d)=>{var r,_;try{return await de(u,d)}catch(w){console.log(w),q.error((_=(r=w.response)==null?void 0:r.data)==null?void 0:_.message)}},i=()=>{};return N(()=>{p.model_data.supported_model_types.length&&(e.value.model_type=p.model_data.supported_model_types[0])}),(u,d)=>{const r=ee,_=W,w=J,V=ae,n=Z,v=Q;return o(),c(v,{visible:b.value,"onUpdate:visible":d[6]||(d[6]=s=>b.value=s),"title-align":"start","align-center":!1,"esc-to-close":!1,"ok-loading":t.value,top:"15vh",width:"30vw",onBeforeCancel:L,onOk:B},{title:l(()=>[f("div",aa,[f("b",null,"添加 "+h(p.model_data.label.en_US),1)])]),default:l(()=>[f("div",oa,[a(n,{model:e.value,ref:"formRef",rules:D,layout:M.value,onSubmit:i},{default:l(()=>[a(w,{field:"model_type",label:"模型类型"},{default:l(()=>[a(_,{modelValue:e.value.model_type,"onUpdate:modelValue":d[0]||(d[0]=s=>e.value.model_type=s)},{default:l(()=>[(o(!0),I(A,null,R($.value,s=>(o(),c(r,{key:s,value:s},{default:l(()=>[E(h(s),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(w,{field:"model",label:"模型名称"},{default:l(()=>[a(V,{modelValue:e.value.model,"onUpdate:modelValue":d[1]||(d[1]=s=>e.value.model=s),placeholder:"请输入模型名称"},null,8,["modelValue"])]),_:1}),a(w,{field:"credentials.huggingfacehub_api_type",label:"端点类型"},{default:l(()=>[a(_,{modelValue:e.value.credentials.huggingfacehub_api_type,"onUpdate:modelValue":d[2]||(d[2]=s=>e.value.credentials.huggingfacehub_api_type=s)},{default:l(()=>[(o(!0),I(A,null,R(x.value,s=>(o(),c(r,{key:s.value,value:s.value},{default:l(()=>[E(h(s.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(w,{field:"credentials.huggingfacehub_api_token",label:"API Token"},{default:l(()=>[a(V,{modelValue:e.value.credentials.huggingfacehub_api_token,"onUpdate:modelValue":d[3]||(d[3]=s=>e.value.credentials.huggingfacehub_api_token=s),placeholder:"请输入API Token"},null,8,["modelValue"])]),_:1}),e.value.credentials.huggingfacehub_api_type==="inference_endpoints"?(o(),c(w,{key:0,field:"credentials.huggingfacehub_endpoint_url",label:"端点 URL"},{default:l(()=>[a(V,{modelValue:e.value.credentials.huggingfacehub_endpoint_url,"onUpdate:modelValue":d[4]||(d[4]=s=>e.value.credentials.huggingfacehub_endpoint_url=s),placeholder:"请输入端点 URL"},null,8,["modelValue"])]),_:1})):C("",!0),e.value.credentials.huggingfacehub_api_type==="inference_endpoints"?(o(),c(w,{key:1,field:"credentials.task_type",label:"Task"},{default:l(()=>[a(_,{modelValue:e.value.credentials.task_type,"onUpdate:modelValue":d[5]||(d[5]=s=>e.value.credentials.task_type=s),placeholder:"请选择"},{default:l(()=>[(o(!0),I(A,null,R(S.value,s=>(o(),c(r,{key:s.value,value:s.value},{default:l(()=>[E(h(s.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1})):C("",!0)]),_:1},8,["model","layout"])])]),_:1},8,["visible","ok-loading"])}}},na=le(ta,[["__scopeId","data-v-1e5dee75"]]),da={class:"model-title"},sa={class:"section"},ua={__name:"ModalAdd_5",props:{show_modal:Boolean,model_data:Object},emits:["difyClose","updateModelList"],setup(k,{emit:O}){const p=k,U=O,b=H(()=>p.show_modal),M=m("vertical"),t=m(!1),e=m({model_type:"",model:"",credentials:{base_url:"",context_size:"4096",max_tokens:"4096",mode:"chat",vision_support:!1},load_balancing:{configs:[],enabled:!1}}),D={model_type:[{required:!0,message:"模型类型必填"}],model:[{required:!0,message:"模型名称必填"}],"credentials.base_url":[{required:!0,message:"基础 URL必填"}],"credentials.context_size":[{required:!0,message:"模型上下文长度必填"}],"credentials.max_tokens":[{required:!0,message:"最大token上限必填"}],"credentials.stream_mode_delimiter":[{required:!0,message:"流模式返回结果的分隔符必填"}]},x=m([{label:"补全",value:"completion"},{label:"对话",value:"chat"}]),S=m([{label:"不支持",value:!1},{label:"支持",value:!0}]),$=H(()=>p.model_data.supported_model_types),B=async()=>{try{let u=!1;if(e.value.model_type==="llm"&&e.value.model&&e.value.credentials.base_url&&e.value.credentials.context_size&&e.value.credentials.max_tokens&&(u=!0),e.value.model_type==="text-embedding"&&e.value.model&&e.value.credentials.base_url&&e.value.credentials.context_size&&(u=!0),u){t.value=!0;const d=await y(p.model_data.provider,e.value);d&&d.result==="success"&&(U("updateModelList"),L()),t.value=!1}else q.error("缺少必填项")}catch{}finally{t.value=!1}},L=()=>{U("difyClose")},y=async(u,d)=>{var r,_;try{return await de(u,d)}catch(w){console.log(w),q.error((_=(r=w.response)==null?void 0:r.data)==null?void 0:_.message)}},i=()=>{};return N(()=>{p.model_data.supported_model_types.length&&(e.value.model_type=p.model_data.supported_model_types[0])}),(u,d)=>{const r=ee,_=W,w=J,V=ae,n=Z,v=Q;return o(),c(v,{visible:b.value,"onUpdate:visible":d[7]||(d[7]=s=>b.value=s),"title-align":"start","align-center":!1,"esc-to-close":!1,"ok-loading":t.value,top:"15vh",width:"30vw",onBeforeCancel:L,onOk:B},{title:l(()=>[f("div",da,[f("b",null,"添加 "+h(p.model_data.label.en_US),1)])]),default:l(()=>[f("div",sa,[a(n,{model:e.value,ref:"formRef",rules:D,layout:M.value,onSubmit:i},{default:l(()=>[a(w,{field:"model_type",label:"模型类型"},{default:l(()=>[a(_,{modelValue:e.value.model_type,"onUpdate:modelValue":d[0]||(d[0]=s=>e.value.model_type=s)},{default:l(()=>[(o(!0),I(A,null,R($.value,s=>(o(),c(r,{key:s,value:s},{default:l(()=>[E(h(s),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(w,{field:"model",label:"模型名称"},{default:l(()=>[a(V,{modelValue:e.value.model,"onUpdate:modelValue":d[1]||(d[1]=s=>e.value.model=s),placeholder:"请输入模型名称"},null,8,["modelValue"])]),_:1}),a(w,{field:"credentials.base_url",label:"基础 URL"},{default:l(()=>[a(V,{modelValue:e.value.credentials.base_url,"onUpdate:modelValue":d[2]||(d[2]=s=>e.value.credentials.base_url=s),placeholder:"Ollama server的基础URL"},null,8,["modelValue"])]),_:1}),e.value.model_type==="llm"?(o(),c(w,{key:0,field:"credentials.mode",label:"模型类型"},{default:l(()=>[a(_,{modelValue:e.value.credentials.mode,"onUpdate:modelValue":d[3]||(d[3]=s=>e.value.credentials.mode=s),placeholder:"选择对话类型","allow-clear":""},{default:l(()=>[(o(!0),I(A,null,R(x.value,s=>(o(),c(r,{key:s.value,value:s.value},{default:l(()=>[E(h(s.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1})):C("",!0),a(w,{field:"credentials.context_size",label:"模型上下文长度"},{default:l(()=>[a(V,{modelValue:e.value.credentials.context_size,"onUpdate:modelValue":d[4]||(d[4]=s=>e.value.credentials.context_size=s),placeholder:"请输入模型上下文长度"},null,8,["modelValue"])]),_:1}),e.value.model_type==="llm"?(o(),c(w,{key:1,field:"credentials.max_tokens",label:"最大token上限"},{default:l(()=>[a(V,{modelValue:e.value.credentials.max_tokens,"onUpdate:modelValue":d[5]||(d[5]=s=>e.value.credentials.max_tokens=s)},null,8,["modelValue"])]),_:1})):C("",!0),e.value.model_type==="llm"?(o(),c(w,{key:2,field:"credentials.vision_support",label:"Vision 支持"},{default:l(()=>[a(_,{modelValue:e.value.credentials.vision_support,"onUpdate:modelValue":d[6]||(d[6]=s=>e.value.credentials.vision_support=s),"allow-clear":"",placeholder:"请选择"},{default:l(()=>[(o(!0),I(A,null,R(S.value,s=>(o(),c(r,{key:s.value,value:s.value},{default:l(()=>[E(h(s.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1})):C("",!0)]),_:1},8,["model","layout"])])]),_:1},8,["visible","ok-loading"])}}},ia=le(ua,[["__scopeId","data-v-42678865"]]),ra={class:"model-title"},ma={class:"section"},_a={__name:"ModalAdd_6",props:{show_modal:Boolean,model_data:Object},emits:["difyClose","updateModelList"],setup(k,{emit:O}){const p=k,U=O,b=H(()=>p.show_modal),M=m("vertical"),t=m(!1),e=m({config_from:"predefined-model",credentials:{api_key:"",endpoint_url:""},load_balancing:{configs:[],enabled:!1}}),D={"credentials.api_key":[{required:!0,message:"API Key必填"}]};H(()=>p.model_data.supported_model_types);const x=async()=>{try{if(e.value.credentials.api_key){t.value=!0;const L=await $(p.model_data.provider,e.value);L&&L.result==="success"&&(U("updateModelList"),S()),t.value=!1}else q.error("缺少必填项")}catch{}finally{t.value=!1}},S=()=>{U("difyClose")},$=async(L,y)=>{var i,u;try{return await He(L,y)}catch(d){console.log(d),q.error((u=(i=d.response)==null?void 0:i.data)==null?void 0:u.message)}},B=()=>{};return N(()=>{}),(L,y)=>{const i=ae,u=J,d=Z,r=Q;return o(),c(r,{visible:b.value,"onUpdate:visible":y[2]||(y[2]=_=>b.value=_),"title-align":"start","align-center":!1,"esc-to-close":!1,"ok-loading":t.value,top:"15vh",width:"30vw",onBeforeCancel:S,onOk:x},{title:l(()=>[f("div",ra,[f("b",null,"设置 "+h(p.model_data.label.en_US),1)])]),default:l(()=>[f("div",ma,[a(d,{model:e.value,ref:"formRef",rules:D,layout:M.value,onSubmit:B},{default:l(()=>[a(u,{field:"credentials.api_key",label:"API Key"},{default:l(()=>[a(i,{modelValue:e.value.credentials.api_key,"onUpdate:modelValue":y[0]||(y[0]=_=>e.value.credentials.api_key=_),placeholder:"请输入API Key"},null,8,["modelValue"])]),_:1}),a(u,{field:"credentials.endpoint_url",label:"自定义 API endpoint 地址"},{default:l(()=>[a(i,{modelValue:e.value.credentials.endpoint_url,"onUpdate:modelValue":y[1]||(y[1]=_=>e.value.credentials.endpoint_url=_),placeholder:"Base URL"},null,8,["modelValue"])]),_:1})]),_:1},8,["model","layout"])])]),_:1},8,["visible","ok-loading"])}}},ca={class:"model-body"},pa={class:"body-item"},va={class:"item-title"},fa={class:"title"},ya={key:0},ga={class:"body-item"},ba={class:"item-title"},ka={class:"title"},ha={key:0,class:"card-list"},Ma={class:"labels"},wa={class:"desc"},Va={__name:"MessageBody",setup(k){const{beforeEnter:O,enter:p,leave:U}=ue(1e3);m([]),m([{id:"1",name:"OpenAl",keyword:"LLM,TEXT",desc:"EMBEDDING,SPEECH2TEXT,MODERATION",img_src:"modelFrame4"},{id:"2",name:"Moonshot",keyword:"LLM,TEXT EMBEDDING",desc:"",img_src:"modelFrame5"},{id:"3",name:"ZHIPU-AI",keyword:"LLM,TEXT",desc:"EMBEDDING,SPEECH2TEXT,MODERATION",img_src:"modelFrame6"},{id:"4",name:"BaiChuan",keyword:"LLM,TEXT EMBEDDING",desc:"",img_src:"modelFrame7"},{id:"5",name:"DeepSeek",keyword:"LLM",desc:"",img_src:"modelFrame8"},{id:"6",name:"Mistral",keyword:"LLM,TEXT EMBEDDING",desc:"",img_src:"modelFrame9"},{id:"7",name:"StepFun",keyword:"LLM",desc:"",img_src:"modelFrame10"}]);const b=m({}),M=m([]),t=m([]),e=m(!0),D=m(!0),x=m(!1),S=m({}),$=m(!1),B=m({}),L=m(!1),y=m({}),i=m(!1),u=m({}),d=m(!1),r=m({}),_=m(!1),w=m({}),V=()=>{e.value=!e.value},n=()=>{D.value=!D.value},v=async F=>{if(F.showMore){b.value.forEach(K=>{K.provider===F.provider&&(K.showMore=!1)});return}const X=await s(F.provider);X.data&&b.value.forEach(K=>{K.provider===F.provider&&(K.showMore=!0,K.llm=X.data)})},s=async F=>{try{return await Ne(F)}catch(X){console.log(X)}},P=async()=>{try{const F=await ze();F.data&&(t.value=F.data,M.value=F.data.filter(X=>["openai","ollama","deepseek","openai_api_compatible","xinference","huggingface_hub"].includes(X.provider)).filter(X=>X.custom_configuration.status==="no-configure"),b.value=F.data.filter(X=>["openai","ollama","deepseek","openai_api_compatible","xinference","huggingface_hub"].includes(X.provider)).filter(X=>X.custom_configuration.status==="active").map(X=>({...X,showMore:!1})))}catch(F){console.log(F)}},g=async()=>{await P()},oe=F=>{const X=t.value.find(K=>K.label.en_US===F);T(X)},T=async F=>{["xinference"].includes(F.provider)&&(x.value=!0,S.value=F),["openai_api_compatible"].includes(F.provider)&&($.value=!0,B.value=F),["openai"].includes(F.provider)&&(L.value=!0,y.value=F),["huggingface_hub"].includes(F.provider)&&(i.value=!0,u.value=F),["ollama"].includes(F.provider)&&(d.value=!0,r.value=F),["deepseek"].includes(F.provider)&&(_.value=!0,w.value=F)},ie=()=>{x.value=!1,S.value={}},Y=()=>{L.value=!1,y.value={}},te=()=>{$.value=!1,B.value={}},be=()=>{i.value=!1,u.value={}},ke=()=>{d.value=!1,r.value={}},he=()=>{_.value=!1,w.value={}};return N(()=>{P()}),(F,X)=>{const K=z("icon-up"),me=z("icon-down"),_e=ge,Me=z("icon-plus"),we=se;return o(),I(A,null,[f("div",ca,[f("div",pa,[f("div",va,[f("div",fa,h(F.$t("management.addedModel")),1),f("div",{class:"icon",onClick:V},[e.value?(o(),I(A,{key:0},[E(h(F.$t("management.upBtn"))+" ",1),a(K)],64)):C("",!0),e.value?C("",!0):(o(),I(A,{key:1},[E(h(F.$t("management.downBtn"))+" ",1),a(me)],64))])]),a(ne,{name:"expand-collapse",onBeforeEnter:G(O),onEnter:G(p),onLeave:G(U)},{default:l(()=>[e.value?(o(),I("div",ya,[(o(!0),I(A,null,R(b.value,(j,ce)=>(o(),c(zl,{key:ce,model_item:j,model_name:j.label.en_US,onShowMore:v,onUpdateAddModelDify:g,onToAddModel:oe},{default:l(()=>[E(h((F.key,F.index)),1)]),_:2},1032,["model_item","model_name"]))),128)),b.value.length?C("",!0):(o(),c(_e,{key:0,class:"empty-list"}))])):C("",!0)]),_:1},8,["onBeforeEnter","onEnter","onLeave"])]),f("div",ga,[f("div",ba,[f("div",ka,h(F.$t("management.unaddModel")),1),f("div",{class:"icon",onClick:n},[D.value?(o(),I(A,{key:0},[E(h(F.$t("management.upBtn"))+" ",1),a(K)],64)):C("",!0),D.value?C("",!0):(o(),I(A,{key:1},[E(h(F.$t("management.downBtn"))+" ",1),a(me)],64))])]),a(ne,{name:"expand-collapse",onBeforeEnter:G(O),onEnter:G(p),onLeave:G(U)},{default:l(()=>[D.value?(o(),I("div",ha,[(o(!0),I(A,null,R(M.value,j=>(o(),c(pe,{key:j.id,name:j.label.en_US,img_src:j.img_src,is_model:""},{labels:l(()=>[f("div",Ma,h(j.supported_model_types.join(",")),1)]),description:l(()=>[f("div",wa,h(j.description&&j.description.zh_Hans),1)]),bottom:l(()=>[a(we,{onClick:ce=>T(j)},{icon:l(()=>[a(Me)]),default:l(()=>[E(h(F.$t("management.addModelBtn")),1)]),_:2},1032,["onClick"])]),_:2},1032,["name","img_src"]))),128))])):C("",!0)]),_:1},8,["onBeforeEnter","onEnter","onLeave"]),M.value.length?C("",!0):(o(),c(_e,{key:0,class:"empty-list"}))])]),x.value?(o(),c(Yl,{key:0,show_modal:x.value,model_data:S.value,onDifyClose:ie,onUpdateModelList:g},null,8,["show_modal","model_data"])):C("",!0),L.value?(o(),c(Jl,{key:1,show_modal:L.value,model_data:y.value,onDifyClose:Y,onUpdateModelList:g},null,8,["show_modal","model_data"])):C("",!0),$.value?(o(),c(la,{key:2,show_modal:$.value,model_data:B.value,onDifyClose:te,onUpdateModelList:g},null,8,["show_modal","model_data"])):C("",!0),i.value?(o(),c(na,{key:3,show_modal:i.value,model_data:u.value,onDifyClose:be,onUpdateModelList:g},null,8,["show_modal","model_data"])):C("",!0),d.value?(o(),c(ia,{key:4,show_modal:d.value,model_data:r.value,onDifyClose:ke,onUpdateModelList:g},null,8,["show_modal","model_data"])):C("",!0),_.value?(o(),c(_a,{key:5,show_modal:_.value,model_data:w.value,onDifyClose:he,onUpdateModelList:g},null,8,["show_modal","model_data"])):C("",!0)],64)}}},Ua=le(Va,[["__scopeId","data-v-c67a10a8"]]),uo={__name:"Model",setup(k){const O=m("assistant"),p=U=>{O.value=U,console.log(O.value)};return(U,b)=>(o(),c(Ve,null,{default:l(()=>[a(Ue,null,{default:l(()=>[a(Le,{title:U.$t("management.modelTitle"),tips:U.$t("management.modelDesc")},{setting:l(()=>[a(Qe,{onChangeType:p})]),_:1},8,["title","tips"]),O.value==="assistant"?(o(),c(Al,{key:0})):C("",!0),O.value==="agent"?(o(),c(Ua,{key:1})):C("",!0)]),_:1})]),_:1}))}};export{uo as default};
|