| | const { handleError } = require('@librechat/api'); |
| | const { ViolationTypes } = require('librechat-data-provider'); |
| | const { getModelsConfig } = require('~/server/controllers/ModelController'); |
| | const { logViolation } = require('~/cache'); |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | const validateModel = async (req, res, next) => { |
| | const { model, endpoint } = req.body; |
| | if (!model) { |
| | return handleError(res, { text: 'Model not provided' }); |
| | } |
| |
|
| | const modelsConfig = await getModelsConfig(req); |
| |
|
| | if (!modelsConfig) { |
| | return handleError(res, { text: 'Models not loaded' }); |
| | } |
| |
|
| | const availableModels = modelsConfig[endpoint]; |
| | if (!availableModels) { |
| | return handleError(res, { text: 'Endpoint models not loaded' }); |
| | } |
| |
|
| | let validModel = !!availableModels.find((availableModel) => availableModel === model); |
| |
|
| | if (validModel) { |
| | return next(); |
| | } |
| |
|
| | const { ILLEGAL_MODEL_REQ_SCORE: score = 1 } = process.env ?? {}; |
| |
|
| | const type = ViolationTypes.ILLEGAL_MODEL_REQUEST; |
| | const errorMessage = { |
| | type, |
| | }; |
| |
|
| | await logViolation(req, res, type, errorMessage, score); |
| | return handleError(res, { text: 'Illegal model request' }); |
| | }; |
| |
|
| | module.exports = validateModel; |
| |
|