ModelSetting.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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 SettingGeminiModel from '../pages/Setting/Model/SettingGeminiModel.js';
  7. const ModelSetting = () => {
  8. const { t } = useTranslation();
  9. let [inputs, setInputs] = useState({
  10. GeminiSafetySettings: '',
  11. GeminiVersionSettings: '',
  12. });
  13. let [loading, setLoading] = useState(false);
  14. const getOptions = async () => {
  15. const res = await API.get('/api/option/');
  16. const { success, message, data } = res.data;
  17. if (success) {
  18. let newInputs = {};
  19. data.forEach((item) => {
  20. if (
  21. item.key === 'GeminiSafetySettings' ||
  22. item.key === 'GeminiVersionSettings'
  23. ) {
  24. item.value = JSON.stringify(JSON.parse(item.value), null, 2);
  25. }
  26. if (
  27. item.key.endsWith('Enabled')
  28. ) {
  29. newInputs[item.key] = item.value === 'true' ? true : false;
  30. } else {
  31. newInputs[item.key] = item.value;
  32. }
  33. });
  34. setInputs(newInputs);
  35. } else {
  36. showError(message);
  37. }
  38. };
  39. async function onRefresh() {
  40. try {
  41. setLoading(true);
  42. await getOptions();
  43. // showSuccess('刷新成功');
  44. } catch (error) {
  45. showError('刷新失败');
  46. } finally {
  47. setLoading(false);
  48. }
  49. }
  50. useEffect(() => {
  51. onRefresh();
  52. }, []);
  53. return (
  54. <>
  55. <Spin spinning={loading} size='large'>
  56. {/* Gemini */}
  57. <Card style={{ marginTop: '10px' }}>
  58. <SettingGeminiModel options={inputs} refresh={onRefresh} />
  59. </Card>
  60. </Spin>
  61. </>
  62. );
  63. };
  64. export default ModelSetting;