mirror of
https://github.com/yangjian102621/geekai.git
synced 2025-11-08 18:23:45 +08:00
重构主体工作完成
This commit is contained in:
@@ -2,9 +2,10 @@
|
||||
display: flex;
|
||||
width: 100%;
|
||||
}
|
||||
.el-form-item__content .tip-input .input {
|
||||
width: 100%;
|
||||
.el-form-item__content .tip-input .el-input {
|
||||
width: 50%;
|
||||
}
|
||||
.el-form-item__content .tip-input .info {
|
||||
margin-left: 6px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
@@ -3,12 +3,13 @@
|
||||
display flex
|
||||
width 100%
|
||||
|
||||
.input {
|
||||
width 100%
|
||||
.el-input {
|
||||
width 50%
|
||||
}
|
||||
|
||||
.info {
|
||||
margin-left 6px
|
||||
margin-top 2px
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -342,14 +342,14 @@ onMounted(() => {
|
||||
})
|
||||
|
||||
// 获取系统配置
|
||||
httpGet("/api/admin/config/get?key=system").then(res => {
|
||||
httpGet("/api/config/get?key=system").then(res => {
|
||||
title.value = res.data.title
|
||||
}).catch(e => {
|
||||
ElMessage.error("获取系统配置失败:" + e.message)
|
||||
})
|
||||
|
||||
// 获取系统公告
|
||||
httpGet("/api/admin/config/get?key=notice").then(res => {
|
||||
httpGet("/api/config/get?key=notice").then(res => {
|
||||
notice.value = md.render(res.data['content'])
|
||||
const oldNotice = localStorage.getItem(noticeKey.value);
|
||||
// 如果公告有更新,则显示公告
|
||||
|
||||
@@ -129,7 +129,7 @@ onMounted(() => {
|
||||
ElMessage.error("获取邀请码失败:" + e.message)
|
||||
})
|
||||
|
||||
httpGet("/api/admin/config/get?key=system").then(res => {
|
||||
httpGet("/api/config/get?key=system").then(res => {
|
||||
inviteChatCalls.value = res.data["invite_chat_calls"]
|
||||
inviteImgCalls.value = res.data["invite_img_calls"]
|
||||
}).catch(e => {
|
||||
|
||||
@@ -227,7 +227,7 @@ onMounted(() => {
|
||||
router.push("/login")
|
||||
})
|
||||
|
||||
httpGet("/api/admin/config/get?key=system").then(res => {
|
||||
httpGet("/api/config/get?key=system").then(res => {
|
||||
rewardImg.value = res.data['reward_img']
|
||||
enableReward.value = res.data['enabled_reward']
|
||||
orderPayInfoText.value = res.data['order_pay_info_text']
|
||||
|
||||
@@ -142,7 +142,7 @@ const wxImg = ref("/images/wx.png")
|
||||
const ways = []
|
||||
const placeholder = ref("用户名:")
|
||||
|
||||
httpGet("/api/admin/config/get?key=system").then(res => {
|
||||
httpGet("/api/config/get?key=system").then(res => {
|
||||
if (res.data) {
|
||||
const registerWays = res.data['register_ways']
|
||||
if (arrayContains(registerWays, "mobile")) {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
<div class="handle-box">
|
||||
<el-button type="primary" :icon="Plus" @click="add">新增</el-button>
|
||||
<a href="https://gpt.bemore.lol" target="_blank" style="margin-left: 10px">
|
||||
<a href="https://api.chat-plus.net" target="_blank" style="margin-left: 10px">
|
||||
<el-button type="success" :icon="ShoppingCart" @click="add" plain>购买API-KEY</el-button>
|
||||
</a>
|
||||
</div>
|
||||
@@ -12,13 +12,20 @@
|
||||
<el-table :data="items" :row-key="row => row.id" table-layout="auto">
|
||||
<el-table-column prop="platform" label="所属平台"/>
|
||||
<el-table-column prop="name" label="名称"/>
|
||||
<el-table-column prop="value" label="KEY">
|
||||
<el-table-column prop="value" label="API KEY">
|
||||
<template #default="scope">
|
||||
<el-tooltip class="box-item"
|
||||
effect="dark"
|
||||
:content="scope.row.api_url"
|
||||
placement="top">{{ scope.row.value }}
|
||||
</el-tooltip>
|
||||
<span>{{ substr(scope.row.value, 20) }}</span>
|
||||
<el-icon class="copy-key" :data-clipboard-text="scope.row.value">
|
||||
<DocumentCopy/>
|
||||
</el-icon>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="api_url" label="API URL">
|
||||
<template #default="scope">
|
||||
<span>{{ substr(scope.row.api_url, 30) }}</span>
|
||||
<el-icon class="copy-key" :data-clipboard-text="scope.row.api_url">
|
||||
<DocumentCopy/>
|
||||
</el-icon>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="type" label="用途">
|
||||
@@ -27,11 +34,7 @@
|
||||
<el-tag v-else-if="scope.row.type === 'img'" type="success">绘图</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="use_proxy" label="使用代理">
|
||||
<template #default="scope">
|
||||
<el-switch v-model="scope.row['use_proxy']" @change="set('use_proxy',scope.row)"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="proxy_url" label="代理地址"/>
|
||||
|
||||
<el-table-column label="最后使用时间">
|
||||
<template #default="scope">
|
||||
@@ -99,18 +102,8 @@
|
||||
placeholder="如果你用了第三方的 API 中转,这里填写中转地址"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="使用代理:" prop="use_proxy">
|
||||
<el-switch v-model="item.use_proxy"/>
|
||||
<el-tooltip
|
||||
effect="dark"
|
||||
content="是否使用代理访问 API URL,OpenAI 官方API需要开启代理访问"
|
||||
raw-content
|
||||
placement="right"
|
||||
>
|
||||
<el-icon>
|
||||
<InfoFilled/>
|
||||
</el-icon>
|
||||
</el-tooltip>
|
||||
<el-form-item label="代理地址:" prop="proxy_url">
|
||||
<el-input v-model="item.proxy_url" autocomplete="off"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="启用状态:" prop="enable">
|
||||
@@ -129,11 +122,12 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {reactive, ref} from "vue";
|
||||
import {onMounted, onUnmounted, reactive, ref} from "vue";
|
||||
import {httpGet, httpPost} from "@/utils/http";
|
||||
import {ElMessage} from "element-plus";
|
||||
import {dateFormat, disabledDate, removeArrayItem} from "@/utils/libs";
|
||||
import {InfoFilled, Plus, ShoppingCart} from "@element-plus/icons-vue";
|
||||
import {dateFormat, disabledDate, removeArrayItem, substr} from "@/utils/libs";
|
||||
import {DocumentCopy, InfoFilled, Plus, ShoppingCart} from "@element-plus/icons-vue";
|
||||
import ClipboardJS from "clipboard";
|
||||
|
||||
// 变量定义
|
||||
const items = ref([])
|
||||
@@ -150,10 +144,10 @@ const formRef = ref(null)
|
||||
const title = ref("")
|
||||
const platforms = ref([
|
||||
{
|
||||
name: "【OpenAI】ChatGPT",
|
||||
name: "【OpenAI/中转】ChatGPT",
|
||||
value: "OpenAI",
|
||||
api_url: "https://gpt.bemore.lol/v1/chat/completions",
|
||||
img_url: "https://gpt.bemore.lol/v1/images/generations"
|
||||
api_url: "https://api.chat-plus.net/v1/chat/completions",
|
||||
img_url: "https://api.chat-plus.net/v1/images/generations"
|
||||
},
|
||||
{
|
||||
name: "【讯飞】星火大模型",
|
||||
@@ -186,6 +180,23 @@ const types = ref([
|
||||
{name: "绘画", value: "img"},
|
||||
])
|
||||
|
||||
|
||||
const clipboard = ref(null)
|
||||
onMounted(() => {
|
||||
clipboard.value = new ClipboardJS('.copy-key');
|
||||
clipboard.value.on('success', () => {
|
||||
ElMessage.success('复制成功!');
|
||||
})
|
||||
|
||||
clipboard.value.on('error', () => {
|
||||
ElMessage.error('复制失败!');
|
||||
})
|
||||
})
|
||||
|
||||
onUnmounted(() => {
|
||||
clipboard.value.destroy()
|
||||
})
|
||||
|
||||
// 获取数据
|
||||
httpGet('/api/admin/apikey/list').then((res) => {
|
||||
if (res.data) {
|
||||
@@ -269,7 +280,6 @@ const changePlatform = () => {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@@ -285,6 +295,11 @@ const changePlatform = () => {
|
||||
}
|
||||
}
|
||||
|
||||
.copy-key {
|
||||
margin-left 5px
|
||||
cursor pointer
|
||||
}
|
||||
|
||||
.el-select {
|
||||
width: 100%
|
||||
}
|
||||
|
||||
@@ -25,8 +25,18 @@
|
||||
<el-table :data="data.chat.items" :row-key="row => row.id" table-layout="auto">
|
||||
<el-table-column prop="user_id" label="账户ID"/>
|
||||
<el-table-column prop="username" label="账户"/>
|
||||
<el-table-column prop="title" label="标题"/>
|
||||
<el-table-column label="图标">
|
||||
<template #default="scope">
|
||||
<el-avatar :size="30" :src="scope.row.role.icon"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="角色">
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.role.name }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="model" label="模型"/>
|
||||
<el-table-column prop="title" label="标题"/>
|
||||
<el-table-column prop="msg_num" label="消息数量"/>
|
||||
<el-table-column prop="token" label="消耗算力"/>
|
||||
|
||||
|
||||
@@ -14,7 +14,10 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="模型名称"/>
|
||||
<el-table-column prop="value" label="模型值"/>
|
||||
<el-table-column prop="weight" label="对话权重"/>
|
||||
<el-table-column prop="power" label="费率"/>
|
||||
<el-table-column prop="max_tokens" label="最大响应长度"/>
|
||||
<el-table-column prop="max_context" label="最大上下文长度"/>
|
||||
<el-table-column prop="temperature" label="创意度"/>
|
||||
<el-table-column prop="enabled" label="启用状态">
|
||||
<template #default="scope">
|
||||
<el-switch v-model="scope.row['enabled']" @change="modelSet('enabled',scope.row)"/>
|
||||
@@ -69,16 +72,15 @@
|
||||
<el-input v-model="item.value" autocomplete="off"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="对话权重:" prop="weight">
|
||||
|
||||
<el-form-item label="费率:" prop="weight">
|
||||
<template #default>
|
||||
<div class="tip-input">
|
||||
<el-input-number :min="1" v-model="item.weight" autocomplete="off"/>
|
||||
<el-input-number :min="1" v-model="item.power" autocomplete="off"/>
|
||||
<div class="info">
|
||||
<el-tooltip
|
||||
class="box-item"
|
||||
effect="dark"
|
||||
content="对话权重,每次对话扣减多少次对话额度"
|
||||
content="每次对话扣减多少单位算力"
|
||||
placement="right"
|
||||
>
|
||||
<el-icon>
|
||||
@@ -90,11 +92,78 @@
|
||||
</template>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="最长响应:" prop="max_tokens">
|
||||
<el-input v-model.number="item.max_tokens" autocomplete="off" placeholder="模型最大响应长度"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="最大上下文:" prop="max_context">
|
||||
<div class="tip-input">
|
||||
<el-input v-model.number="item.max_context" autocomplete="off" placeholder="模型最大上下文长度"/>
|
||||
<div class="info">
|
||||
<el-tooltip
|
||||
class="box-item"
|
||||
effect="dark"
|
||||
raw-content
|
||||
content="gpt-3.5-turbo:4096 <br/>
|
||||
gpt-3.5-turbo-16k: 16384 <br/>
|
||||
gpt-4: 8192 <br/>
|
||||
gpt-4-32k: 32768 <br/>
|
||||
chatglm_pro: 32768 <br/>
|
||||
chatglm_std: 16384 <br/>
|
||||
chatglm_lite: 4096 <br/>
|
||||
qwen-turbo: 8192 <br/>
|
||||
qwen-plus: 32768 <br/>
|
||||
文心一言: 8192 <br/>
|
||||
星火1.0: 4096 <br/>
|
||||
星火2.0-星火3.5: 8192"
|
||||
placement="right"
|
||||
>
|
||||
<el-icon>
|
||||
<InfoFilled/>
|
||||
</el-icon>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="创意度:" prop="temperature">
|
||||
<div class="tip-input">
|
||||
<el-input v-model="item.temperature" autocomplete="off" placeholder="模型创意度"/>
|
||||
<div class="info">
|
||||
<el-tooltip
|
||||
class="box-item"
|
||||
effect="dark"
|
||||
content="OpenAI 0-2,其他模型 0-1"
|
||||
placement="right"
|
||||
>
|
||||
<el-icon>
|
||||
<InfoFilled/>
|
||||
</el-icon>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="启用状态:" prop="enable">
|
||||
<el-switch v-model="item.enabled"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="开放状态:" prop="open">
|
||||
<el-switch v-model="item.open"/>
|
||||
<div class="tip-input">
|
||||
<el-switch v-model="item.open"/>
|
||||
<div class="info">
|
||||
<el-tooltip
|
||||
class="box-item"
|
||||
effect="dark"
|
||||
raw-content
|
||||
content="开放后,该模型将对所有用户可见。<br/> 如果模型没有启用,则当前设置无效。"
|
||||
placement="right"
|
||||
>
|
||||
<el-icon>
|
||||
<InfoFilled/>
|
||||
</el-icon>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
<el-table-column prop="username" label="下单用户"/>
|
||||
<el-table-column prop="subject" label="产品名称"/>
|
||||
<el-table-column prop="amount" label="订单金额"/>
|
||||
<el-table-column label="调用次数">
|
||||
<el-table-column label="充值算力">
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.remark?.calls }}</span>
|
||||
<span>{{ scope.row.remark?.power }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
@@ -20,8 +20,7 @@
|
||||
<span v-else>{{ scope.row.days }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="calls" label="对话次数"/>
|
||||
<el-table-column prop="img_calls" label="绘图次数"/>
|
||||
<el-table-column prop="power" label="算力"/>
|
||||
<el-table-column prop="sales" label="销量"/>
|
||||
<el-table-column prop="enabled" label="启用状态">
|
||||
<template #default="scope">
|
||||
@@ -71,12 +70,8 @@
|
||||
<el-input v-model.number="item.days" autocomplete="off" placeholder="会员有效期(天)"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="对话次数:" prop="calls">
|
||||
<el-input v-model.number="item.calls" autocomplete="off" placeholder="增加对话次数"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="绘图次数:" prop="img_calls">
|
||||
<el-input v-model.number="item.img_calls" autocomplete="off" placeholder="增加绘图次数"/>
|
||||
<el-form-item label="算力:" prop="power">
|
||||
<el-input v-model.number="item.power" autocomplete="off" placeholder="增加算力值"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="启用状态:" prop="enable">
|
||||
|
||||
@@ -11,23 +11,30 @@
|
||||
<el-form-item label="控制台标题" prop="admin_title">
|
||||
<el-input v-model="system['admin_title']"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="注册赠送对话次数" prop="user_init_calls">
|
||||
<el-input v-model.number="system['init_chat_calls']" placeholder="新用户注册赠送对话次数"/>
|
||||
<el-form-item label="网站 LOGO" prop="logo">
|
||||
<el-input v-model="system['logo']" placeholder="网站LOGO图片">
|
||||
<template #append>
|
||||
<el-upload
|
||||
:auto-upload="true"
|
||||
:show-file-list="false"
|
||||
@click="beforeUpload('logo')"
|
||||
:http-request="uploadImg"
|
||||
>
|
||||
<el-icon class="uploader-icon">
|
||||
<UploadFilled/>
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="注册赠送绘图次数" prop="init_img_calls">
|
||||
<el-input v-model.number="system['init_img_calls']" placeholder="新用户注册赠送绘图次数"/>
|
||||
<el-form-item label="注册赠送算力" prop="init_power">
|
||||
<el-input v-model.number="system['init_power']" placeholder="新用户注册赠送算力"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="邀请赠送对话次数" prop="invite_chat_calls">
|
||||
<el-input v-model.number="system['invite_chat_calls']" placeholder="邀请新用户注册赠送对话次数"/>
|
||||
<el-form-item label="邀请赠送算力" prop="invite_power">
|
||||
<el-input v-model.number="system['invite_power']" placeholder="邀请新用户注册赠送算力"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="邀请赠送绘图次数" prop="invite_img_calls">
|
||||
<el-input v-model.number="system['invite_img_calls']" placeholder="邀请新用户注册赠送绘图次数"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="VIP每月对话次数" prop="vip_month_calls">
|
||||
<el-input v-model.number="system['vip_month_calls']" placeholder="VIP用户每月赠送对话次数"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="VIP每月绘图次数" prop="vip_month_img_calls">
|
||||
<el-input v-model.number="system['vip_month_img_calls']" placeholder="VIP用户每月赠送绘图次数"/>
|
||||
<el-form-item label="VIP每月赠送算力" prop="vip_month_power">
|
||||
<el-input v-model.number="system['vip_month_power']" placeholder="VIP用户每月赠送算力"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="开放注册" prop="enabled_register">
|
||||
@@ -66,11 +73,9 @@
|
||||
</el-form-item>
|
||||
|
||||
<div v-if="system['enabled_reward']">
|
||||
<el-form-item label="单次对话价格" prop="chat_call_price">
|
||||
<el-input v-model="system['chat_call_price']" placeholder="众筹金额跟对话次数的兑换比例"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="单次绘图价格" prop="img_call_price">
|
||||
<el-input v-model="system['img_call_price']" placeholder="众筹金额跟绘图次数的兑换比例"/>
|
||||
<el-form-item label="算力单价" prop="power_price">
|
||||
<el-input v-model="system['power_price']"
|
||||
placeholder="单位算力的价格,比如设置 0.1 表示捐赠1元钱可以得到10个单位算力"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="收款二维码" prop="reward_img">
|
||||
<el-input v-model="system['reward_img']" placeholder="众筹收款二维码地址">
|
||||
@@ -165,82 +170,21 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="save('system')">保存</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="模型配置" name="chat">
|
||||
<div class="container">
|
||||
<el-form :model="chat" label-position="right" label-width="150px" ref="chatFormRef" :rules="rules">
|
||||
|
||||
<el-form-item label="开启聊天上下文">
|
||||
<el-switch v-model="chat['enable_context']"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="保存聊天记录">
|
||||
<el-switch v-model="chat['enable_history']"/>
|
||||
<el-switch v-model="system['enable_context']"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="会话上下文深度">
|
||||
<div style="width:100%">
|
||||
<el-input-number v-model="chat['context_deep']" :min="0" :max="10"/>
|
||||
<el-input-number v-model="system['context_deep']" :min="0" :max="10"/>
|
||||
</div>
|
||||
<div class="tip" style="margin-top: 10px; ">会话上下文深度:在老会话中继续会话,默认加载多少条聊天记录作为上下文。如果设置为
|
||||
0
|
||||
则不加载聊天记录,仅仅使用当前角色的上下文。该配置参数最好设置需要为偶数,否则将无法兼容百度的 API。
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="center">OpenAI</el-divider>
|
||||
<el-form-item label="模型创意度">
|
||||
<el-slider v-model="chat['open_ai']['temperature']" :max="2" :step="0.1"/>
|
||||
<div class="tip">值越大 AI 回答越发散,值越小回答越保守,建议保持默认值</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="最大响应长度">
|
||||
<el-input v-model.number="chat['open_ai']['max_tokens']" placeholder="回复的最大字数,最大4096"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="center">Azure</el-divider>
|
||||
<el-form-item label="模型创意度">
|
||||
<el-slider v-model="chat['azure']['temperature']" :max="2" :step="0.1"/>
|
||||
<div class="tip">值越大 AI 回答越发散,值越小回答越保守,建议保持默认值</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="最大响应长度">
|
||||
<el-input v-model.number="chat['azure']['max_tokens']" placeholder="回复的最大字数,最大4096"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="center">ChatGLM</el-divider>
|
||||
<el-form-item label="模型创意度">
|
||||
<el-slider v-model="chat['chat_gml']['temperature']" :max="1" :step="0.01"/>
|
||||
<div class="tip">值越大 AI 回答越发散,值越小回答越保守,建议保持默认值</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="最大响应长度">
|
||||
<el-input v-model.number="chat['chat_gml']['max_tokens']" placeholder="回复的最大字数,最大4096"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="center">文心一言</el-divider>
|
||||
<el-form-item label="模型创意度">
|
||||
<el-slider v-model="chat['baidu']['temperature']" :max="1" :step="0.01"/>
|
||||
<div class="tip">值越大 AI 回答越发散,值越小回答越保守,建议保持默认值</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="最大响应长度">
|
||||
<el-input v-model.number="chat['baidu']['max_tokens']" placeholder="回复的最大字数,最大4096"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="center">讯飞星火</el-divider>
|
||||
<el-form-item label="模型创意度">
|
||||
<el-slider v-model="chat['xun_fei']['temperature']" :max="1" :step="0.1"/>
|
||||
<div class="tip">值越大 AI 回答越发散,值越小回答越保守,建议保持默认值</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="最大响应长度">
|
||||
<el-input v-model.number="chat['xun_fei']['max_tokens']" placeholder="回复的最大字数,最大4096"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="center">AI绘图</el-divider>
|
||||
<el-form-item label="DALL-E3出图数量">
|
||||
<el-input v-model.number="chat['dall_img_num']" placeholder="调用 DALL E3 API 传入的出图数量"/>
|
||||
</el-form-item>
|
||||
<el-form-item style="text-align: right">
|
||||
<el-button type="primary" @click="save('chat')">保存</el-button>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="save('system')">保存</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
@@ -17,9 +17,7 @@
|
||||
<el-image v-if="scope.row.vip" :src="vipImg" style="height: 20px;position: relative; top:5px; left: 5px"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="calls" label="剩余对话次数"/>
|
||||
<el-table-column prop="img_calls" label="剩余绘图次数"/>
|
||||
<el-table-column prop="total_tokens" label="累计消耗tokens"/>
|
||||
<el-table-column prop="power" label="剩余算力"/>
|
||||
<el-table-column label="状态" width="80">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.status" type="success">正常</el-tag>
|
||||
@@ -76,11 +74,8 @@
|
||||
<el-form-item v-if="add" label="密码:" prop="password">
|
||||
<el-input v-model="user.password" autocomplete="off"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="对话次数:" prop="calls">
|
||||
<el-input v-model.number="user.calls" autocomplete="off" placeholder="0"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="绘图次数:" prop="img_calls">
|
||||
<el-input v-model.number="user['img_calls']" autocomplete="off" placeholder="0"/>
|
||||
<el-form-item label="剩余算力:" prop="power">
|
||||
<el-input v-model.number="user.power" autocomplete="off" placeholder="0"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="有效期:" prop="expired_time">
|
||||
|
||||
@@ -149,7 +149,7 @@ onMounted(() => {
|
||||
showFailToast("获取产品套餐失败:" + e.message)
|
||||
})
|
||||
|
||||
httpGet("/api/admin/config/get?key=system").then(res => {
|
||||
httpGet("/api/config/get?key=system").then(res => {
|
||||
vipMonthCalls.value = res.data['vip_month_calls']
|
||||
vipMonthImgCalls.value = res.data['vip_month_img_calls']
|
||||
}).catch(e => {
|
||||
|
||||
Reference in New Issue
Block a user