balibabu commited on
Commit
aaf24a6
·
1 Parent(s): ac847bc

fix: Merge models of the same category #2479 (#2536)

Browse files

### What problem does this PR solve?

fix: Merge models of the same category #2479

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)

web/src/components/llm-select/index.tsx CHANGED
@@ -1,5 +1,5 @@
1
  import { LlmModelType } from '@/constants/knowledge';
2
- import { useSelectLlmOptionsByModelType } from '@/hooks/llm-hooks';
3
  import { Popover, Select } from 'antd';
4
  import LlmSettingItems from '../llm-setting-items';
5
 
@@ -10,7 +10,10 @@ interface IProps {
10
  }
11
 
12
  const LLMSelect = ({ id, value, onChange }: IProps) => {
13
- const modelOptions = useSelectLlmOptionsByModelType();
 
 
 
14
 
15
  const content = (
16
  <div style={{ width: 400 }}>
@@ -29,10 +32,7 @@ const LLMSelect = ({ id, value, onChange }: IProps) => {
29
  destroyTooltipOnHide
30
  >
31
  <Select
32
- options={[
33
- ...modelOptions[LlmModelType.Chat],
34
- ...modelOptions[LlmModelType.Image2text],
35
- ]}
36
  style={{ width: '100%' }}
37
  dropdownStyle={{ display: 'none' }}
38
  id={id}
 
1
  import { LlmModelType } from '@/constants/knowledge';
2
+ import { useComposeLlmOptionsByModelTypes } from '@/hooks/llm-hooks';
3
  import { Popover, Select } from 'antd';
4
  import LlmSettingItems from '../llm-setting-items';
5
 
 
10
  }
11
 
12
  const LLMSelect = ({ id, value, onChange }: IProps) => {
13
+ const modelOptions = useComposeLlmOptionsByModelTypes([
14
+ LlmModelType.Chat,
15
+ LlmModelType.Image2text,
16
+ ]);
17
 
18
  const content = (
19
  <div style={{ width: 400 }}>
 
32
  destroyTooltipOnHide
33
  >
34
  <Select
35
+ options={modelOptions}
 
 
 
36
  style={{ width: '100%' }}
37
  dropdownStyle={{ display: 'none' }}
38
  id={id}
web/src/components/llm-setting-items/index.tsx CHANGED
@@ -7,7 +7,7 @@ import { Divider, Flex, Form, InputNumber, Select, Slider, Switch } from 'antd';
7
  import camelCase from 'lodash/camelCase';
8
 
9
  import { useTranslate } from '@/hooks/common-hooks';
10
- import { useSelectLlmOptionsByModelType } from '@/hooks/llm-hooks';
11
  import { useCallback, useMemo } from 'react';
12
  import styles from './index.less';
13
 
@@ -39,7 +39,10 @@ const LlmSettingItems = ({ prefix, formItemLayout = {} }: IProps) => {
39
 
40
  const memorizedPrefix = useMemo(() => (prefix ? [prefix] : []), [prefix]);
41
 
42
- const modelOptions = useSelectLlmOptionsByModelType();
 
 
 
43
 
44
  return (
45
  <>
@@ -50,13 +53,7 @@ const LlmSettingItems = ({ prefix, formItemLayout = {} }: IProps) => {
50
  {...formItemLayout}
51
  rules={[{ required: true, message: t('modelMessage') }]}
52
  >
53
- <Select
54
- options={[
55
- ...modelOptions[LlmModelType.Chat],
56
- ...modelOptions[LlmModelType.Image2text],
57
- ]}
58
- showSearch
59
- />
60
  </Form.Item>
61
  <Divider></Divider>
62
  <Form.Item
 
7
  import camelCase from 'lodash/camelCase';
8
 
9
  import { useTranslate } from '@/hooks/common-hooks';
10
+ import { useComposeLlmOptionsByModelTypes } from '@/hooks/llm-hooks';
11
  import { useCallback, useMemo } from 'react';
12
  import styles from './index.less';
13
 
 
39
 
40
  const memorizedPrefix = useMemo(() => (prefix ? [prefix] : []), [prefix]);
41
 
42
+ const modelOptions = useComposeLlmOptionsByModelTypes([
43
+ LlmModelType.Chat,
44
+ LlmModelType.Image2text,
45
+ ]);
46
 
47
  return (
48
  <>
 
53
  {...formItemLayout}
54
  rules={[{ required: true, message: t('modelMessage') }]}
55
  >
56
+ <Select options={modelOptions} showSearch />
 
 
 
 
 
 
57
  </Form.Item>
58
  <Divider></Divider>
59
  <Form.Item
web/src/hooks/llm-hooks.ts CHANGED
@@ -14,6 +14,7 @@ import userService from '@/services/user-service';
14
  import { sortLLmFactoryListBySpecifiedOrder } from '@/utils/common-util';
15
  import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
16
  import { message } from 'antd';
 
17
  import { useMemo } from 'react';
18
  import { useTranslation } from 'react-i18next';
19
 
@@ -42,7 +43,7 @@ export const useSelectLlmOptions = () => {
42
  label: key,
43
  options: value.map((x) => ({
44
  label: x.llm_name,
45
- value: x.llm_name,
46
  disabled: !x.available,
47
  })),
48
  };
@@ -91,6 +92,26 @@ export const useSelectLlmOptionsByModelType = () => {
91
  };
92
  };
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  export const useFetchLlmFactoryList = (): ResponseGetType<IFactory[]> => {
95
  const { data, isFetching: loading } = useQuery({
96
  queryKey: ['factoryList'],
 
14
  import { sortLLmFactoryListBySpecifiedOrder } from '@/utils/common-util';
15
  import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
16
  import { message } from 'antd';
17
+ import { DefaultOptionType } from 'antd/es/select';
18
  import { useMemo } from 'react';
19
  import { useTranslation } from 'react-i18next';
20
 
 
43
  label: key,
44
  options: value.map((x) => ({
45
  label: x.llm_name,
46
+ value: `${x.llm_name}@${x.fid}`,
47
  disabled: !x.available,
48
  })),
49
  };
 
92
  };
93
  };
94
 
95
+ export const useComposeLlmOptionsByModelTypes = (
96
+ modelTypes: LlmModelType[],
97
+ ) => {
98
+ const allOptions = useSelectLlmOptionsByModelType();
99
+
100
+ return modelTypes.reduce<DefaultOptionType[]>((pre, cur) => {
101
+ const options = allOptions[cur];
102
+ options.forEach((x) => {
103
+ const item = pre.find((y) => y.label === x.label);
104
+ if (item) {
105
+ item.options.push(...x.options);
106
+ } else {
107
+ pre.push(x);
108
+ }
109
+ });
110
+
111
+ return pre;
112
+ }, []);
113
+ };
114
+
115
  export const useFetchLlmFactoryList = (): ResponseGetType<IFactory[]> => {
116
  const { data, isFetching: loading } = useQuery({
117
  queryKey: ['factoryList'],