chaite
Version:
core for chatgpt-plugin and karin-plugin-chatgpt
4 lines (3 loc) • 9.75 kB
JavaScript
import{b as Q}from"./channels-CIda32LH.js";import{d as H,q as J,K as N,o as f,c as b,e as s,u as l,L as W,w as n,N as X,v as p,C as B,a as m,g as d,t as P,n as M,B as h,P as Y,Q as Z,F as z,M as ee,b as ae,j as x,O as w,k as te}from"./index-D3SoE8bB.js";import{N as le,a as se}from"./CollapseItem-CB2kQ3g4.js";import{_ as oe}from"./FormItem-yXZKI0f3.js";import{N as R}from"./Grid-B3ZO_4Zt.js";import{_ as i}from"./FormItemGridItem-D-Opymhq.js";import{N as _}from"./Checkbox-CAwnmj4L.js";import{N as T}from"./InputNumber-CRx3qCIC.js";const ne={class:"mt-4"},ue={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"8px"}},re={key:0,style:{color:"#d03050","font-size":"12px"}},ie={style:{display:"flex","align-items":"center",gap:"4px","margin-bottom":"6px"}},de={key:0,style:{color:"#999","font-size":"12px"}},pe={style:{display:"flex","justify-content":"flex-end","margin-top":"24px"}},me=H({__name:"ChannelFormModal",props:{show:Boolean,editMode:Boolean,initialData:{type:Object,default:()=>({})},preProcessorOptions:{type:Array,default:()=>[]},postProcessorOptions:{type:Array,default:()=>[]}},emits:["update:show","submit"],setup(A,{emit:F}){const v=A,S=F,I=x(),y=w({get:()=>v.show,set:o=>S("update:show",o)}),j={name:{required:!0,trigger:["blur","input"],message:"请输入渠道名称"},adapterType:{required:!0,trigger:["blur","change"],message:"请选择客户端类型"},"options.baseUrl":{required:!0,trigger:["blur","input"],message:"请输入基础URL"}},t=x({adapterType:"openai",models:[],weight:1,priority:0,status:"enabled",options:{baseUrl:"",apiKey:"",multipleKeyStrategy:"random",proxy:"",preProcessorIds:[],postProcessorIds:[]},description:"",name:"",modelType:"settings"}),D=w(()=>{const o=t.value.models||[];if(o.length===0)return"error";const e=o.map(a=>a.name);if(new Set(e).size!==e.length||o.some(a=>!a.name?.trim()))return"error"}),O=w(()=>{const o=t.value.models||[];if(o.length===0)return"请至少添加一个模型";const e=o.map(a=>a.name);return new Set(e).size!==e.length?"模型名称不能重复":o.some(a=>!a.name?.trim())?"模型名称不能为空":""});function q(){t.value.models||(t.value.models=[]),t.value.models.push({name:"",features:["chat","tool"]})}function L(o){t.value.models&&t.value.models.splice(o,1)}const c=J(),C=x(-1);async function $(o){const e=t.value.models?.[o];if(!e?.name?.trim()){c.warning("请先输入模型名称");return}if(!v.initialData?.id){c.warning("请先保存渠道后再探测");return}C.value=o;try{const a=await Q({id:v.initialData.id,model:e.name});if(a.code===0){const u=[];for(const[r,G]of Object.entries(a.data.features))G.supported&&u.push(r);e.features=u,c.success(`${e.name}: ${u.join(", ")||"无"}`)}else c.error(a.message||"探测失败")}catch(a){c.error(a?.message||"探测失败")}finally{C.value=-1}}function k(o,e,a){if(!t.value.models)return;const u=t.value.models[o];u&&(u.features||(u.features=[]),a?u.features.includes(e)||u.features.push(e):u.features=u.features.filter(r=>r!==e))}const U=w({get:()=>t.value.status==="enabled",set:o=>K(o)});N(()=>v.initialData,o=>{v.editMode&&o&&(t.value={...o},t.value.models&&(t.value.models=t.value.models.map(e=>typeof e=="string"?{name:e,features:["chat","tool"]}:{name:e.name||"",features:e.features||["chat","tool"]})))},{immediate:!0});function K(o){t.value.status=o?"enabled":"disabled"}function E(){I.value?.validate().then(o=>{if(Array.isArray(o)){console.error(o);return}S("submit",t.value),y.value=!1})}const g=x("");N(()=>t.value.options?.apiKey,o=>{Array.isArray(o)?g.value=o.join(`
`):g.value=o||""},{immediate:!0});function V(){t.value.options||(t.value.options={});const o=g.value.split(`
`).filter(e=>e.length>0);t.value.options.apiKey=o.length>1?o:o[0]||""}return N(y,o=>{!o&&!v.editMode&&(t.value={adapterType:"openai",models:[],weight:1,priority:0,status:"enabled",options:{baseUrl:"",apiKey:"",multipleKeyStrategy:"random",proxy:"",preProcessorIds:[],postProcessorIds:[]},description:""})}),(o,e)=>(f(),b("div",null,[s(l(W),{show:y.value,"onUpdate:show":e[12]||(e[12]=a=>y.value=a),preset:"card",style:{width:"700px","max-width":"90vw"}},{default:n(()=>[s(l(X),{title:A.editMode?"编辑渠道":"添加渠道"},{default:n(()=>[s(l(oe),{ref_key:"formRef",ref:I,rules:j,model:t.value},{default:n(()=>[s(l(R),{cols:24,"x-gap":12,"y-gap":16,responsive:"screen","item-responsive":""},{default:n(()=>[s(l(i),{span:"24 s:12 m:16",label:"名称",path:"name"},{default:n(()=>[s(l(p),{value:t.value.name,"onUpdate:value":e[0]||(e[0]=a=>t.value.name=a),placeholder:"请输入渠道名称"},null,8,["value"])]),_:1}),s(l(i),{span:"24 s:12 m:8",label:"适配器类型",path:"adapterType"},{default:n(()=>[s(l(B),{value:t.value.adapterType,"onUpdate:value":e[1]||(e[1]=a=>t.value.adapterType=a),options:[{label:"OpenAI",value:"openai"},{label:"Gemini",value:"gemini"},{label:"Claude",value:"claude"}],placeholder:"请选择适配器类型"},null,8,["value"])]),_:1}),s(l(i),{span:"24 s:12 m:16",label:"BaseURL",path:"options.baseUrl"},{default:n(()=>[s(l(p),{value:t.value.options.baseUrl,"onUpdate:value":e[2]||(e[2]=a=>t.value.options.baseUrl=a),placeholder:"请输入基础URL"},null,8,["value"])]),_:1}),s(l(i),{span:"24",label:"API密钥",path:"options.apiKey"},{default:n(()=>[s(l(p),{value:g.value,"onUpdate:value":e[3]||(e[3]=a=>g.value=a),type:"textarea",placeholder:"请输入API密钥,多个密钥请每行输入一个",onBlur:V},null,8,["value"])]),_:1})]),_:1}),m("div",ne,[m("div",ue,[m("span",null,[e[13]||(e[13]=m("span",{style:{color:"red"}},"*",-1)),e[14]||(e[14]=d(" 支持模型 ",-1)),D.value?(f(),b("span",re," — "+P(O.value),1)):M("",!0)]),s(l(h),{size:"small",type:"primary",onClick:q},{default:n(()=>[...e[15]||(e[15]=[d(" + 添加模型 ",-1)])]),_:1})]),(f(!0),b(Y,null,Z(t.value.models||[],(a,u)=>(f(),b("div",{key:u,style:{border:"1px solid #e8e8e8","border-radius":"6px",padding:"10px 12px","margin-bottom":"8px"}},[m("div",ie,[s(l(p),{value:a.name,"onUpdate:value":r=>a.name=r,placeholder:"模型名称",size:"small",style:{flex:"1","max-width":"180px"}},null,8,["value","onUpdate:value"]),s(l(h),{size:"tiny",loading:C.value===u,onClick:r=>$(u)},{default:n(()=>[...e[16]||(e[16]=[d(" 🔍 ",-1)])]),_:1},8,["loading","onClick"]),s(l(h),{size:"tiny",type:"error",quaternary:"",onClick:r=>L(u)},{default:n(()=>[...e[17]||(e[17]=[d(" 删除 ",-1)])]),_:1},8,["onClick"])]),s(l(z),{size:4},{default:n(()=>[s(l(_),{size:"small",checked:a.features?.includes("chat"),"onUpdate:checked":r=>k(u,"chat",r)},{default:n(()=>[...e[18]||(e[18]=[d(" 💬 对话 ",-1)])]),_:1},8,["checked","onUpdate:checked"]),s(l(_),{size:"small",checked:a.features?.includes("visual"),"onUpdate:checked":r=>k(u,"visual",r)},{default:n(()=>[...e[19]||(e[19]=[d(" 👁️ 识图 ",-1)])]),_:1},8,["checked","onUpdate:checked"]),s(l(_),{size:"small",checked:a.features?.includes("tool"),"onUpdate:checked":r=>k(u,"tool",r)},{default:n(()=>[...e[20]||(e[20]=[d(" 🔧 工具 ",-1)])]),_:1},8,["checked","onUpdate:checked"]),s(l(_),{size:"small",checked:a.features?.includes("embedding"),"onUpdate:checked":r=>k(u,"embedding",r)},{default:n(()=>[...e[21]||(e[21]=[d(" 📊 嵌入 ",-1)])]),_:1},8,["checked","onUpdate:checked"])]),_:2},1024)]))),128)),!t.value.models||t.value.models.length===0?(f(),b("div",de,' 暂无模型,请点击"添加模型" ')):M("",!0)]),s(l(le),{class:"mt-4"},{default:n(()=>[s(l(se),{title:"高级设置",name:"advanced"},{default:n(()=>[s(l(R),{cols:24,"x-gap":12,"y-gap":16,responsive:"screen","item-responsive":""},{default:n(()=>[s(l(i),{span:"24 s:12 m:8",label:"状态",path:"status"},{default:n(()=>[s(l(z),{align:"center"},{default:n(()=>[s(l(ee),{value:U.value,"onUpdate:value":[e[4]||(e[4]=a=>U.value=a),K]},null,8,["value"]),m("span",null,P(U.value?"启用":"禁用"),1)]),_:1})]),_:1}),s(l(i),{span:"24 s:12 m:8",label:"多密钥策略",path:"options.multipleKeyStrategy"},{default:n(()=>[s(l(B),{value:t.value.options.multipleKeyStrategy,"onUpdate:value":e[5]||(e[5]=a=>t.value.options.multipleKeyStrategy=a),options:[{label:"随机",value:"random"},{label:"轮询",value:"round-robin"},{label:"会话哈希",value:"conversation-hash"}],placeholder:"请选择多密钥策略"},null,8,["value"])]),_:1}),s(l(i),{span:"24 s:12 m:8",label:"代理",path:"options.proxy"},{default:n(()=>[s(l(p),{value:t.value.options.proxy,"onUpdate:value":e[6]||(e[6]=a=>t.value.options.proxy=a),placeholder:"请输入代理地址(可选)"},null,8,["value"])]),_:1}),s(l(i),{span:"24 s:12 m:8",label:"优先级",path:"priority"},{default:n(()=>[s(l(T),{value:t.value.priority,"onUpdate:value":e[7]||(e[7]=a=>t.value.priority=a)},null,8,["value"])]),_:1}),s(l(i),{span:"24 s:12 m:8",label:"权重",path:"weight"},{default:n(()=>[s(l(T),{value:t.value.weight,"onUpdate:value":e[8]||(e[8]=a=>t.value.weight=a)},null,8,["value"])]),_:1}),s(l(i),{span:"24",label:"描述",path:"description"},{default:n(()=>[s(l(p),{value:t.value.description,"onUpdate:value":e[9]||(e[9]=a=>t.value.description=a),type:"textarea",placeholder:"请输入渠道描述"},null,8,["value"])]),_:1}),U.value?M("",!0):(f(),ae(l(i),{key:0,span:"24",label:"禁用原因",path:"disabledReason"},{default:n(()=>[s(l(p),{value:t.value.disabledReason,"onUpdate:value":e[10]||(e[10]=a=>t.value.disabledReason=a),placeholder:"请输入禁用原因"},null,8,["value"])]),_:1}))]),_:1})]),_:1})]),_:1}),m("div",pe,[s(l(z),null,{default:n(()=>[s(l(h),{onClick:e[11]||(e[11]=a=>y.value=!1)},{default:n(()=>[...e[22]||(e[22]=[d(" 取消 ",-1)])]),_:1}),s(l(h),{type:"primary",onClick:E},{default:n(()=>[...e[23]||(e[23]=[d(" 确定 ",-1)])]),_:1})]),_:1})])]),_:1},8,["model"])]),_:1},8,["title"])]),_:1},8,["show"])]))}}),Ue=te(me,[["__scopeId","data-v-725b0ad4"]]);export{Ue as default};