diff --git a/ui/app/api/config/route.ts b/ui/app/api/config/route.ts new file mode 100644 index 0000000..7bd188e --- /dev/null +++ b/ui/app/api/config/route.ts @@ -0,0 +1,55 @@ +import { getAnthropicApiKey, getCustomOpenaiApiKey, getCustomOpenaiApiUrl, getCustomOpenaiModelName, getGeminiApiKey, getGroqApiKey, getOllamaApiEndpoint, getOpenaiApiKey } from "@/lib/config" +import { getAvailableChatModelProviders, getAvailableEmbeddingModelProviders } from "@/lib/providers" + +export const GET = async (req: Request) => { + try { + const config: Record = {} + + const [chatModelProviders, embeddingModelProviders] = await Promise.all([ + getAvailableChatModelProviders(), + getAvailableEmbeddingModelProviders(), + ]) + + config['chatModelProviders'] = {} + config['embeddingModelProviders'] = {} + + for (const provider in chatModelProviders) { + config['chatModelProviders'][provider] = Object.keys( + chatModelProviders[provider], + ).map(model => { + return { + name: model, + displayName: chatModelProviders[provider][model].displayName, + } + }) + } + + for (const provider in embeddingModelProviders) { + config['embeddingModelProviders'][provider] = Object.keys( + embeddingModelProviders[provider], + ).map(model => { + return { + name: model, + displayName: embeddingModelProviders[provider][model].displayName, + } + }) + } + + config['openaiApiKey'] = getOpenaiApiKey() + config['ollamaApiUrl'] = getOllamaApiEndpoint() + config['anthropicApiKey'] = getAnthropicApiKey() + config['groqApiKey'] = getGroqApiKey() + config['geminiApiKey'] = getGeminiApiKey() + config['customOpenaiApiUrl'] = getCustomOpenaiApiUrl() + config['customOpenaiApiKey'] = getCustomOpenaiApiKey() + config['customOpenaiModelName'] = getCustomOpenaiModelName() + + return Response.json({ ...config }, { status: 200 }) + } catch (err) { + console.error('An error ocurred while getting config:', err) + return Response.json( + { message: 'An error ocurred while getting config' }, + { status: 500 }, + ) + } +} diff --git a/ui/app/settings/page.tsx b/ui/app/settings/page.tsx index 6aff1b0..3bd1f2d 100644 --- a/ui/app/settings/page.tsx +++ b/ui/app/settings/page.tsx @@ -116,7 +116,7 @@ const Page = () => { useEffect(() => { const fetchConfig = async () => { setIsLoading(true); - const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/config`, { + const res = await fetch(`/api/config`, { headers: { 'Content-Type': 'application/json', }, @@ -208,7 +208,7 @@ const Page = () => { key.toLowerCase().includes('api') || key.toLowerCase().includes('url') ) { - const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/config`, { + const res = await fetch(`/api/config`, { headers: { 'Content-Type': 'application/json', },