| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | 'use client'import { createContext, useContext } from 'use-context-selector'import useSWR from 'swr'import { fetchDefaultModal, fetchModelList } from '@/service/common'import { ModelFeature, ModelType } from '@/app/components/header/account-setting/model-page/declarations'import type { BackendModel } from '@/app/components/header/account-setting/model-page/declarations'const ProviderContext = createContext<{  textGenerationModelList: BackendModel[]  embeddingsModelList: BackendModel[]  speech2textModelList: BackendModel[]  agentThoughtModelList: BackendModel[]  updateModelList: (type: ModelType) => void  embeddingsDefaultModel?: BackendModel  mutateEmbeddingsDefaultModel: () => void  speech2textDefaultModel?: BackendModel  mutateSpeech2textDefaultModel: () => void}>({      textGenerationModelList: [],      embeddingsModelList: [],      speech2textModelList: [],      agentThoughtModelList: [],      updateModelList: () => {},      speech2textDefaultModel: undefined,      mutateSpeech2textDefaultModel: () => {},      embeddingsDefaultModel: undefined,      mutateEmbeddingsDefaultModel: () => {},    })export const useProviderContext = () => useContext(ProviderContext)type ProviderContextProviderProps = {  children: React.ReactNode}export const ProviderContextProvider = ({  children,}: ProviderContextProviderProps) => {  const { data: embeddingsDefaultModel, mutate: mutateEmbeddingsDefaultModel } = useSWR('/workspaces/current/default-model?model_type=embeddings', fetchDefaultModal)  const { data: speech2textDefaultModel, mutate: mutateSpeech2textDefaultModel } = useSWR('/workspaces/current/default-model?model_type=speech2text', fetchDefaultModal)  const fetchModelListUrlPrefix = '/workspaces/current/models/model-type/'  const { data: textGenerationModelList, mutate: mutateTextGenerationModelList } = useSWR(`${fetchModelListUrlPrefix}${ModelType.textGeneration}`, fetchModelList)  const { data: embeddingsModelList, mutate: mutateEmbeddingsModelList } = useSWR(`${fetchModelListUrlPrefix}${ModelType.embeddings}`, fetchModelList)  const { data: speech2textModelList } = useSWR(`${fetchModelListUrlPrefix}${ModelType.speech2text}`, fetchModelList)  const agentThoughtModelList = textGenerationModelList?.filter((item) => {    return item.features?.includes(ModelFeature.agentThought)  })  const updateModelList = (type: ModelType) => {    if (type === ModelType.textGeneration)      mutateTextGenerationModelList()    if (type === ModelType.embeddings)      mutateEmbeddingsModelList()  }  return (    <ProviderContext.Provider value={{      textGenerationModelList: textGenerationModelList || [],      embeddingsModelList: embeddingsModelList || [],      speech2textModelList: speech2textModelList || [],      agentThoughtModelList: agentThoughtModelList || [],      updateModelList,      embeddingsDefaultModel,      mutateEmbeddingsDefaultModel,      speech2textDefaultModel,      mutateSpeech2textDefaultModel,    }}>      {children}    </ProviderContext.Provider>  )}export default ProviderContext
 |