RateLimitSetting.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import React, { useEffect, useState } from 'react';
  2. import { Card, Spin, Tabs } from '@douyinfe/semi-ui';
  3. import { API, showError, showSuccess } from '../helpers';
  4. import SettingsChats from '../pages/Setting/Operation/SettingsChats.js';
  5. import { useTranslation } from 'react-i18next';
  6. import RequestRateLimit from '../pages/Setting/RateLimit/SettingsRequestRateLimit.js';
  7. const RateLimitSetting = () => {
  8. const { t } = useTranslation();
  9. let [inputs, setInputs] = useState({
  10. ModelRequestRateLimitEnabled: false,
  11. ModelRequestRateLimitCount: 0,
  12. ModelRequestRateLimitSuccessCount: 1000,
  13. ModelRequestRateLimitDurationMinutes: 1,
  14. });
  15. let [loading, setLoading] = useState(false);
  16. const getOptions = async () => {
  17. const res = await API.get('/api/option/');
  18. const { success, message, data } = res.data;
  19. if (success) {
  20. let newInputs = {};
  21. data.forEach((item) => {
  22. if (
  23. item.key.endsWith('Enabled')
  24. ) {
  25. newInputs[item.key] = item.value === 'true' ? true : false;
  26. } else {
  27. newInputs[item.key] = item.value;
  28. }
  29. });
  30. setInputs(newInputs);
  31. } else {
  32. showError(message);
  33. }
  34. };
  35. async function onRefresh() {
  36. try {
  37. setLoading(true);
  38. await getOptions();
  39. // showSuccess('刷新成功');
  40. } catch (error) {
  41. showError('刷新失败');
  42. } finally {
  43. setLoading(false);
  44. }
  45. }
  46. useEffect(() => {
  47. onRefresh();
  48. }, []);
  49. return (
  50. <>
  51. <Spin spinning={loading} size='large'>
  52. {/* AI请求速率限制 */}
  53. <Card style={{ marginTop: '10px' }}>
  54. <RequestRateLimit options={inputs} refresh={onRefresh} />
  55. </Card>
  56. </Spin>
  57. </>
  58. );
  59. };
  60. export default RateLimitSetting;