Spaces:
Running
Running
import express from 'express'; | |
import { | |
getAvailableChatModelProviders, | |
getAvailableEmbeddingModelProviders, | |
} from '../lib/providers'; | |
import { | |
getGroqApiKey, | |
getOllamaApiEndpoint, | |
getAnthropicApiKey, | |
getGeminiApiKey, | |
getOpenaiApiKey, | |
updateConfig, | |
} from '../config'; | |
import logger from '../utils/logger'; | |
const router = express.Router(); | |
router.get('/', async (_, res) => { | |
try { | |
const config = {}; | |
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(); | |
res.status(200).json(config); | |
} catch (err: any) { | |
res.status(500).json({ message: 'An error has occurred.' }); | |
logger.error(`Error getting config: ${err.message}`); | |
} | |
}); | |
router.post('/', async (req, res) => { | |
const config = req.body; | |
const updatedConfig = { | |
API_KEYS: { | |
OPENAI: config.openaiApiKey, | |
GROQ: config.groqApiKey, | |
ANTHROPIC: config.anthropicApiKey, | |
GEMINI: config.geminiApiKey, | |
}, | |
API_ENDPOINTS: { | |
OLLAMA: config.ollamaApiUrl, | |
}, | |
}; | |
updateConfig(updatedConfig); | |
res.status(200).json({ message: 'Config updated' }); | |
}); | |
export default router; | |