MCPcopy
hub / github.com/wandb/openui / Settings

Function Settings

frontend/src/components/Settings.tsx:74–367  ·  view source on GitHub ↗
({ trigger }: { trigger: JSX.Element })

Source from the content-addressed store, hash-verified

72}
73
74export default function Settings({ trigger }: { trigger: JSX.Element }) {
75 const { isPending, isError, error, data } = useQuery({
76 queryKey: ['models'],
77 queryFn: getModels
78 })
79 const [language, setLanguage] = useState(i18n.language)
80 const [searchParams] = useSearchParams()
81 const [model, setModel] = useAtom(modelAtom)
82 const [systemPrompt, setSystemPrompt] = useAtom(systemPromptAtom)
83 const [temperature, setTemperature] = useAtom(temperatureAtom)
84 const [darkMode, setDarkMode] = useAtom(darkModeAtom)
85 const [modelSupportsImages, setModelSupportsImages] = useAtom(
86 modelSupportsImagesAtom
87 )
88 const [modelSupportsImagesOverrides, setModelSupportsImagesOverrides] =
89 useAtom(modelSupportsImagesOverridesAtom)
90
91 useEffect(() => {
92 if (error) {
93 console.error('Error fetching models', error)
94 }
95 }, [error])
96
97 // Default to another model if no OpenAI models are available
98 useEffect(() => {
99 if (searchParams.get('dummy')) {
100 const available = ['bad']
101 setModel(
102 `dummy/${available.includes(searchParams.get('dummy') ?? '') ? searchParams.get('dummy') : 'good'}`
103 )
104 } else if (data && data.openai.length === 0 && model.startsWith('gpt')) {
105 if (data.groq.length > 0) {
106 // Defaulting to the 3rd model which is currently llama3-70b
107 setModel(`groq/${data.groq[2].id}`)
108 } else if (data.ollama.length > 0) {
109 setModel(`ollama/${data.ollama[0].model}`)
110 } else if (data.litellm.length > 0) {
111 setModel(`litellm/${data.litellm[0].id}`)
112 }
113 }
114 const override = modelSupportsImagesOverrides[model]
115 if (override === undefined) {
116 setModelSupportsImages(
117 knownImageModels.some(regex => {
118 let cleanName = model
119 if (cleanName.includes('/')) {
120 cleanName = model.split('/').slice(1).join('/')
121 }
122 return regex.test(cleanName)
123 })
124 )
125 } else {
126 setModelSupportsImages(override)
127 }
128 }, [
129 data,
130 setModel,
131 model,

Callers

nothing calls this directly

Calls 2

slugToNiceNameFunction · 0.85
getMethod · 0.80

Tested by

no test coverage detected