const axios = require('axios'); const { isEnabled } = require('@librechat/api'); const { logger } = require('@librechat/data-schemas'); const { ErrorTypes } = require('librechat-data-provider'); const denyRequest = require('./denyRequest'); async function moderateText(req, res, next) { if (!isEnabled(process.env.OPENAI_MODERATION)) { return next(); } try { const { text } = req.body; const response = await axios.post( process.env.OPENAI_MODERATION_REVERSE_PROXY || 'https://api.openai.com/v1/moderations', { input: text, }, { headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${process.env.OPENAI_MODERATION_API_KEY}`, }, }, ); const results = response.data.results; const flagged = results.some((result) => result.flagged); if (flagged) { const type = ErrorTypes.MODERATION; const errorMessage = { type }; return await denyRequest(req, res, errorMessage); } } catch (error) { logger.error('Error in moderateText:', error); const errorMessage = 'error in moderation check'; return await denyRequest(req, res, errorMessage); } next(); } module.exports = moderateText;