| 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; | |