lobe-chat
1import { createHeaderWithAuth } from '@/services/_auth';
2import { useUserStore } from '@/store/user';
3import { modelConfigSelectors } from '@/store/user/selectors';
4import { ChatModelCard } from '@/types/llm';
5
6import { API_ENDPOINTS } from './_url';
7import { initializeWithClientStore } from './chat';
8
9class ModelsService {
10getChatModels = async (provider: string): Promise<ChatModelCard[] | undefined> => {
11const headers = await createHeaderWithAuth({
12headers: { 'Content-Type': 'application/json' },
13provider,
14});
15try {
16/**
17* Use browser agent runtime
18*/
19const enableFetchOnClient = modelConfigSelectors.isProviderFetchOnClient(provider)(
20useUserStore.getState(),
21);
22if (enableFetchOnClient) {
23const agentRuntime = await initializeWithClientStore(provider, {});
24return agentRuntime.models();
25}
26
27const res = await fetch(API_ENDPOINTS.chatModels(provider), { headers });
28if (!res.ok) return;
29
30return res.json();
31} catch {
32return;
33}
34};
35}
36
37export const modelsService = new ModelsService();
38