diff --git a/web/src/components/settings/ChatsSetting.js b/web/src/components/settings/ChatsSetting.js
new file mode 100644
index 00000000..6330808d
--- /dev/null
+++ b/web/src/components/settings/ChatsSetting.js
@@ -0,0 +1,63 @@
+import React, { useEffect, useState } from 'react';
+import { Card, Spin } from '@douyinfe/semi-ui';
+import SettingsChats from '../../pages/Setting/Chat/SettingsChats.js';
+import { API, showError } from '../../helpers';
+
+const ChatsSetting = () => {
+ let [inputs, setInputs] = useState({
+ /* 聊天设置 */
+ Chats: '[]',
+ });
+
+ let [loading, setLoading] = useState(false);
+
+ const getOptions = async () => {
+ const res = await API.get('/api/option/');
+ const { success, message, data } = res.data;
+ if (success) {
+ let newInputs = {};
+ data.forEach((item) => {
+ if (
+ item.key.endsWith('Enabled') ||
+ ['DefaultCollapseSidebar'].includes(item.key)
+ ) {
+ newInputs[item.key] = item.value === 'true' ? true : false;
+ } else {
+ newInputs[item.key] = item.value;
+ }
+ });
+
+ setInputs(newInputs);
+ } else {
+ showError(message);
+ }
+ };
+
+ async function onRefresh() {
+ try {
+ setLoading(true);
+ await getOptions();
+ } catch (error) {
+ showError('刷新失败');
+ } finally {
+ setLoading(false);
+ }
+ }
+
+ useEffect(() => {
+ onRefresh();
+ }, []);
+
+ return (
+ <>
+
+ {/* 聊天设置 */}
+
+
+
+
+ >
+ );
+};
+
+export default ChatsSetting;
\ No newline at end of file
diff --git a/web/src/components/settings/OperationSetting.js b/web/src/components/settings/OperationSetting.js
index f6786f95..779d80a6 100644
--- a/web/src/components/settings/OperationSetting.js
+++ b/web/src/components/settings/OperationSetting.js
@@ -7,7 +7,6 @@ import SettingsLog from '../../pages/Setting/Operation/SettingsLog.js';
import SettingsDataDashboard from '../../pages/Setting/Operation/SettingsDataDashboard.js';
import SettingsMonitoring from '../../pages/Setting/Operation/SettingsMonitoring.js';
import SettingsCreditLimit from '../../pages/Setting/Operation/SettingsCreditLimit.js';
-import SettingsChats from '../../pages/Setting/Operation/SettingsChats.js';
import { API, showError } from '../../helpers';
const OperationSetting = () => {
@@ -56,9 +55,6 @@ const OperationSetting = () => {
AutomaticDisableChannelEnabled: false,
AutomaticEnableChannelEnabled: false,
AutomaticDisableKeywords: '',
-
- /* 聊天设置 */
- Chats: '[]',
});
let [loading, setLoading] = useState(false);
@@ -131,10 +127,6 @@ const OperationSetting = () => {
- {/* 聊天设置 */}
-
-
-
>
);
diff --git a/web/src/components/settings/RateLimitSetting.js b/web/src/components/settings/RateLimitSetting.js
index 4d061363..21580d1a 100644
--- a/web/src/components/settings/RateLimitSetting.js
+++ b/web/src/components/settings/RateLimitSetting.js
@@ -1,8 +1,7 @@
import React, { useEffect, useState } from 'react';
-import { Card, Spin, Tabs } from '@douyinfe/semi-ui';
+import { Card, Spin } from '@douyinfe/semi-ui';
-import { API, showError, showSuccess } from '../../helpers/index.js';
-import SettingsChats from '../../pages/Setting/Operation/SettingsChats.js';
+import { API, showError } from '../../helpers/index.js';
import { useTranslation } from 'react-i18next';
import RequestRateLimit from '../../pages/Setting/RateLimit/SettingsRequestRateLimit.js';
@@ -24,14 +23,14 @@ const RateLimitSetting = () => {
if (success) {
let newInputs = {};
data.forEach((item) => {
- if (item.key === 'ModelRequestRateLimitGroup') {
- item.value = JSON.stringify(JSON.parse(item.value), null, 2);
- }
+ if (item.key === 'ModelRequestRateLimitGroup') {
+ item.value = JSON.stringify(JSON.parse(item.value), null, 2);
+ }
- if (item.key.endsWith('Enabled')) {
- newInputs[item.key] = item.value === 'true' ? true : false;
- } else {
- newInputs[item.key] = item.value;
+ if (item.key.endsWith('Enabled')) {
+ newInputs[item.key] = item.value === 'true' ? true : false;
+ } else {
+ newInputs[item.key] = item.value;
}
});
diff --git a/web/src/i18n/locales/en.json b/web/src/i18n/locales/en.json
index b89207e5..d9d5486e 100644
--- a/web/src/i18n/locales/en.json
+++ b/web/src/i18n/locales/en.json
@@ -1206,7 +1206,7 @@
"默认折叠侧边栏": "Default collapse sidebar",
"聊天链接功能已经弃用,请使用下方聊天设置功能": "Chat link function has been deprecated, please use the chat settings below",
"你似乎并没有修改什么": "You seem to have not modified anything",
- "令牌聊天设置": "Chat settings",
+ "聊天设置": "Chat settings",
"必须将上方聊天链接全部设置为空,才能使用下方聊天设置功能": "Must set all chat links above to empty to use the chat settings below",
"链接中的{key}将自动替换为sk-xxxx,{address}将自动替换为系统设置的服务器地址,末尾不带/和/v1": "The {key} in the link will be automatically replaced with sk-xxxx, the {address} will be automatically replaced with the server address in system settings, and the end will not have / and /v1",
"聊天配置": "Chat configuration",
diff --git a/web/src/pages/Setting/Operation/SettingsChats.js b/web/src/pages/Setting/Chat/SettingsChats.js
similarity index 85%
rename from web/src/pages/Setting/Operation/SettingsChats.js
rename to web/src/pages/Setting/Chat/SettingsChats.js
index 4322f558..76f3f9f2 100644
--- a/web/src/pages/Setting/Operation/SettingsChats.js
+++ b/web/src/pages/Setting/Chat/SettingsChats.js
@@ -2,10 +2,7 @@ import React, { useEffect, useState, useRef } from 'react';
import {
Banner,
Button,
- Col,
Form,
- Popconfirm,
- Row,
Space,
Spin,
} from '@douyinfe/semi-ui';
@@ -16,7 +13,6 @@ import {
showSuccess,
showWarning,
verifyJSON,
- verifyJSONPromise,
} from '../../../helpers';
import { useTranslation } from 'react-i18next';
@@ -80,21 +76,6 @@ export default function SettingsChats(props) {
}
}
- async function resetModelRatio() {
- try {
- let res = await API.post(`/api/option/rest_model_ratio`);
- // return {success, message}
- if (res.data.success) {
- showSuccess(res.data.message);
- props.refresh();
- } else {
- showError(res.data.message);
- }
- } catch (error) {
- showError(error);
- }
- }
-
useEffect(() => {
const currentInputs = {};
for (let key in props.options) {
@@ -119,13 +100,7 @@ export default function SettingsChats(props) {
getFormApi={(formAPI) => (refForm.current = formAPI)}
style={{ marginBottom: 15 }}
>
-
-
+
-