|
1 |
| -import type { I18nStringType } from '@fastgpt/global/common/i18n/type'; |
2 |
| -import { getProviderList } from '../../app/tool/api'; |
3 |
| -import type { ModelProviderType } from '@fastgpt/global/core/app/model/type'; |
4 |
| - |
5 |
| -export const defaultProvider: ModelProviderType = { |
6 |
| - id: 'Other', |
7 |
| - name: { en: 'Other' } as I18nStringType, |
8 |
| - avatar: 'model/other', |
9 |
| - order: 0 |
10 |
| -}; |
11 |
| - |
12 |
| -export const defaultMapData = [ |
13 |
| - { |
14 |
| - id: 'Other', |
15 |
| - name: 'Other', |
16 |
| - avatar: 'model/other', |
17 |
| - provider: 'Other' |
18 |
| - } |
19 |
| -]; |
| 1 | +import { loadModelProviders } from '../../../thirdProvider/fastgptPlugin/model'; |
| 2 | +import { |
| 3 | + type langType, |
| 4 | + defaultProvider, |
| 5 | + formatModelProviders |
| 6 | +} from '@fastgpt/global/core/ai/provider'; |
20 | 7 |
|
21 | 8 | // Preload model providers
|
22 | 9 | export async function preloadModelProviders(): Promise<void> {
|
23 |
| - const res = await getProviderList(); |
| 10 | + const { modelProviders, aiproxyIdMap } = await loadModelProviders(); |
24 | 11 |
|
25 |
| - const ModelProviders = Object.entries(res.ModelProviders).map( |
26 |
| - ([id, info]: [string, I18nStringType], index: number) => ({ |
27 |
| - id: id, |
28 |
| - name: info, |
29 |
| - avatar: `/api/system/plugin/models/${id}.svg`, |
30 |
| - order: index |
31 |
| - }) |
32 |
| - ); |
| 12 | + const { ModelProviderListCache, ModelProviderMapCache } = formatModelProviders(modelProviders); |
| 13 | + global.ModelProviderRawCache = modelProviders; |
| 14 | + global.ModelProviderListCache = ModelProviderListCache; |
| 15 | + global.ModelProviderMapCache = ModelProviderMapCache; |
33 | 16 |
|
34 |
| - const aiproxyIdMap = Object.entries(res.aiproxyIdMap).map( |
35 |
| - ([id, info]: [ |
36 |
| - string, |
37 |
| - { name: I18nStringType | string; provider: string; avatar?: string } |
38 |
| - ]) => ({ |
39 |
| - id, |
40 |
| - name: info.name, |
41 |
| - avatar: info.avatar || defaultProvider.avatar, |
42 |
| - provider: info.provider |
43 |
| - }) |
44 |
| - ); |
45 |
| - global.ModelProviders_cache = { |
46 |
| - listData: ModelProviders, |
47 |
| - mapData: new Map(ModelProviders.map((item) => [item.id, item])) |
48 |
| - }; |
49 |
| - global.aiproxyIdMap_cache = { |
50 |
| - listData: aiproxyIdMap, |
51 |
| - mapData: new Map(aiproxyIdMap.map((item) => [item.id, item])) |
52 |
| - }; |
| 17 | + global.aiproxyIdMapCache = aiproxyIdMap; |
53 | 18 | }
|
54 | 19 |
|
| 20 | +export const getModelProviders = (language = 'en') => { |
| 21 | + return global.ModelProviderListCache[language as langType] || []; |
| 22 | +}; |
55 | 23 | export const getModelProvider = (provider?: string, language = 'en') => {
|
56 | 24 | if (!provider) {
|
57 | 25 | return defaultProvider;
|
58 | 26 | }
|
59 | 27 |
|
60 |
| - const providerData = global.ModelProviders_cache?.mapData.get(provider); |
61 |
| - if (!providerData) { |
62 |
| - return defaultProvider; |
63 |
| - } |
64 |
| - |
65 |
| - return { |
66 |
| - ...providerData, |
67 |
| - name: (providerData.name as I18nStringType)[language as keyof I18nStringType] |
68 |
| - }; |
| 28 | + return ModelProviderMapCache[language as langType][provider] ?? defaultProvider; |
69 | 29 | };
|
0 commit comments