From ad8281e553b0d398126df5bb37271ab2fa26b517 Mon Sep 17 00:00:00 2001 From: vinodkiran Date: Mon, 13 Nov 2023 10:48:24 +0530 Subject: [PATCH] ResponsibleAI - Input Moderation - Ability to verify inputs and prevent potentially harmful content generation --- .../nodes/chains/LLMChain/LLMChain.ts | 21 ++- .../InputModeration/OpenAIModeration.ts | 154 ++++++++++++++++++ .../InputModeration/OpenAIModerationRunner.ts | 62 +++++++ .../InputModeration/SimplePromptModeration.ts | 56 +++++++ .../SimplePromptModerationRunner.ts | 24 +++ .../InputModeration/openai-moderation.png | Bin 0 -> 47939 bytes .../InputModeration/simple_moderation.png | Bin 0 -> 44837 bytes .../nodes/responsibleAI/ResponsibleAI.ts | 30 ++++ 8 files changed, 346 insertions(+), 1 deletion(-) create mode 100644 packages/components/nodes/responsibleAI/InputModeration/OpenAIModeration.ts create mode 100644 packages/components/nodes/responsibleAI/InputModeration/OpenAIModerationRunner.ts create mode 100644 packages/components/nodes/responsibleAI/InputModeration/SimplePromptModeration.ts create mode 100644 packages/components/nodes/responsibleAI/InputModeration/SimplePromptModerationRunner.ts create mode 100644 packages/components/nodes/responsibleAI/InputModeration/openai-moderation.png create mode 100644 packages/components/nodes/responsibleAI/InputModeration/simple_moderation.png create mode 100644 packages/components/nodes/responsibleAI/ResponsibleAI.ts diff --git a/packages/components/nodes/chains/LLMChain/LLMChain.ts b/packages/components/nodes/chains/LLMChain/LLMChain.ts index 0d5558841..44520021d 100644 --- a/packages/components/nodes/chains/LLMChain/LLMChain.ts +++ b/packages/components/nodes/chains/LLMChain/LLMChain.ts @@ -7,6 +7,7 @@ import { BaseOutputParser } from 'langchain/schema/output_parser' import { formatResponse, injectOutputParser } from '../../outputparsers/OutputParserHelpers' import { BaseLLMOutputParser } from 'langchain/schema/output_parser' import { OutputFixingParser } from 'langchain/output_parsers' +import { checkInputs, Moderation, streamResponse } from '../../responsibleAI/ResponsibleAI' class LLMChain_Chains implements INode { label: string @@ -36,6 +37,14 @@ class LLMChain_Chains implements INode { name: 'model', type: 'BaseLanguageModel' }, + { + label: 'Input Moderation', + description: 'Detect text that could generate harmful output and prevent it from being sent to the language model', + name: 'inputModeration', + type: 'Moderation', + optional: true, + list: true + }, { label: 'Prompt', name: 'prompt', @@ -144,7 +153,7 @@ const runPrediction = async ( const isStreaming = options.socketIO && options.socketIOClientId const socketIO = isStreaming ? options.socketIO : undefined const socketIOClientId = isStreaming ? options.socketIOClientId : '' - + const moderations = nodeData.inputs?.inputModeration as Moderation[] /** * Apply string transformation to reverse converted special chars: * FROM: { "value": "hello i am benFLOWISE_NEWLINEFLOWISE_NEWLINEFLOWISE_TABhow are you?" } @@ -152,6 +161,16 @@ const runPrediction = async ( */ const promptValues = handleEscapeCharacters(promptValuesRaw, true) + if (moderations && moderations.length > 0) { + try { + // Use the output of the moderation chain as input for the LLM chain + input = await checkInputs(moderations, chain.llm, input) + } catch (e) { + streamResponse(isStreaming, e.message, socketIO, socketIOClientId) + return formatResponse(e.message) + } + } + if (promptValues && inputVariables.length > 0) { let seen: string[] = [] diff --git a/packages/components/nodes/responsibleAI/InputModeration/OpenAIModeration.ts b/packages/components/nodes/responsibleAI/InputModeration/OpenAIModeration.ts new file mode 100644 index 000000000..79297d74d --- /dev/null +++ b/packages/components/nodes/responsibleAI/InputModeration/OpenAIModeration.ts @@ -0,0 +1,154 @@ +import { INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses } from '../../../src' +import { Moderation } from '../ResponsibleAI' +import { OpenAIModerationRunner } from './OpenAIModerationRunner' + +class OpenAIModeration implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs: INodeParams[] + + constructor() { + this.label = 'Moderation - Open AI' + this.name = 'inputModerationOpenAI' + this.version = 1.0 + this.type = 'Moderation' + this.icon = 'openai-moderation.png' + this.category = 'Responsible AI' + this.description = 'Check whether content complies with OpenAI usage policies.' + this.baseClasses = [this.type, ...getBaseClasses(Moderation)] + this.inputs = [ + { + label: 'Moderation Checks', + name: 'moderationConfig', + type: 'options', + default: 'useDefault', + options: [ + { + label: 'OpenAI Default', + name: 'useDefault' + }, + { + label: 'Use Custom Threshold Values', + name: 'useCustom' + }, + { + label: 'Combine OpenAI Default with Custom Threshold Values', + name: 'combineBoth' + } + ] + }, + { + label: 'Error Message', + name: 'moderationErrorMessage', + type: 'string', + rows: 2, + default: "Cannot Process! Input violates OpenAI's content moderation policies.", + optional: true + }, + { + label: 'Threshold Score - Sexual', + name: 'catSexualThreshold', + type: 'number', + default: 0.01, + additionalParams: true + }, + { + label: 'Threshold Score - Sexual/Minors', + name: 'catSexualMinorsThreshold', + type: 'number', + default: 0.01, + additionalParams: true + }, + { + label: 'Threshold Score - Hate', + name: 'catHateThreshold', + type: 'number', + default: 0.01, + additionalParams: true + }, + { + label: 'Threshold Score - Hate/Threatening', + name: 'catHateThreateningThreshold', + type: 'number', + default: 0.01, + additionalParams: true + }, + { + label: 'Threshold Score - Harassment', + name: 'catHarassmentThreshold', + type: 'number', + default: 0.01, + additionalParams: true + }, + { + label: 'Threshold Score - Harassment/Threatening', + name: 'catHarassmentThreateningThreshold', + type: 'number', + default: 0.01, + additionalParams: true + }, + { + label: 'Threshold Score - Self Harm', + name: 'catSelfHarmThreshold', + type: 'number', + default: 0.01, + additionalParams: true + }, + { + label: 'Threshold Score - Self-Harm/Intent', + name: 'catSelfHarmIntentThreshold', + type: 'number', + default: 0.01, + additionalParams: true + }, + { + label: 'Threshold Score - Self-Harm/Instructions', + name: 'catSelfHarmInstructionsThreshold', + type: 'number', + default: 0.01, + additionalParams: true + }, + { + label: 'Threshold Score - Violence', + name: 'catViolenceThreshold', + type: 'number', + default: 0.01, + additionalParams: true + }, + { + label: 'Threshold Score - Violence/Graphic', + name: 'catViolenceGraphicThreshold', + type: 'number', + default: 0.01, + additionalParams: true + } + ] + } + + async init(nodeData: INodeData): Promise { + const runner = new OpenAIModerationRunner() + this.inputs.forEach((value) => { + if (value.additionalParams === true) { + // remove thePrefix - 'cat' + let categoryName = value.name.substring(3) + // remove theSuffix - 'Threshold' + categoryName = categoryName.substring(0, categoryName.length - 9) + categoryName = categoryName.substring(0, 1).toLowerCase() + categoryName.substring(1) + let categoryThreshold = nodeData.inputs ? nodeData.inputs[value.name] : value.default + runner.setParameter(categoryName, parseFloat(categoryThreshold)) + } else { + runner.setParameter(value.name, nodeData.inputs ? nodeData.inputs[value.name] : value.default) + } + }) + return runner + } +} + +module.exports = { nodeClass: OpenAIModeration } diff --git a/packages/components/nodes/responsibleAI/InputModeration/OpenAIModerationRunner.ts b/packages/components/nodes/responsibleAI/InputModeration/OpenAIModerationRunner.ts new file mode 100644 index 000000000..13bf2212d --- /dev/null +++ b/packages/components/nodes/responsibleAI/InputModeration/OpenAIModerationRunner.ts @@ -0,0 +1,62 @@ +import { Moderation } from '../ResponsibleAI' +import { BaseLanguageModel } from 'langchain/base_language' +import { OpenAIModerationChain } from 'langchain/chains' + +export class OpenAIModerationRunner implements Moderation { + private moderationConfig: string = 'useDefault' + private moderationErrorMessage: string = "Text was found that violates OpenAI's content policy." + private sexual: number = 0.01 + private sexualMinors: number = 0.01 + private hate: number = 0.01 + private hateThreatening: number = 0.01 + private harassment: number = 0.01 + private harassmentThreatening: number = 0.01 + private selfHarm: number = 0.01 + private selfHarmIntent: number = 0.01 + private selfHarmInstructions: number = 0.01 + private violence: number = 0.01 + private violenceGraphic: number = 0.01 + + async checkForViolations(llm: BaseLanguageModel, input: string): Promise { + const openAIApiKey = (llm as any).openAIApiKey + if (!openAIApiKey) { + throw Error('OpenAI API key not found') + } + // Create a new instance of the OpenAIModerationChain + const moderation = new OpenAIModerationChain({ + openAIApiKey: openAIApiKey, + throwError: false // If set to true, the call will throw an error when the moderation chain detects violating content. If set to false, violating content will return "Text was found that violates OpenAI's content policy.". + }) + // Send the user's input to the moderation chain and wait for the result + const { output: moderationOutput, results } = await moderation.call({ + input: input + }) + if (this.moderationConfig != 'useCustom' && results[0].flagged) { + throw Error(this.moderationErrorMessage) + } + if (this.moderationConfig != 'useDefault') { + const categoryScores = results[0].category_scores + if ( + categoryScores['harassment'] > this.harassment || + categoryScores['harassment/threatening'] > this.harassmentThreatening || + categoryScores['self-harm'] > this.selfHarm || + categoryScores['self-harm/intent'] > this.selfHarmIntent || + categoryScores['self-harm/instructions'] > this.selfHarmInstructions || + categoryScores['sexual'] > this.sexual || + categoryScores['sexual/minors'] > this.sexualMinors || + categoryScores['hate'] > this.hate || + categoryScores['hate/threatening'] > this.hateThreatening || + categoryScores['violence'] > this.violence || + categoryScores['violence/graphic'] > this.violenceGraphic + ) { + throw Error(this.moderationErrorMessage) + } + } + return moderationOutput + } + + setParameter(category: string, value: number) { + // @ts-ignore + this[category] = value + } +} diff --git a/packages/components/nodes/responsibleAI/InputModeration/SimplePromptModeration.ts b/packages/components/nodes/responsibleAI/InputModeration/SimplePromptModeration.ts new file mode 100644 index 000000000..5fde5ca33 --- /dev/null +++ b/packages/components/nodes/responsibleAI/InputModeration/SimplePromptModeration.ts @@ -0,0 +1,56 @@ +import { INode, INodeData, INodeParams } from '../../../src/Interface' +import { getBaseClasses } from '../../../src' +import { Moderation } from '../ResponsibleAI' +import { SimplePromptModerationRunner } from './SimplePromptModerationRunner' + +class SimplePromptModeration implements INode { + label: string + name: string + version: number + description: string + type: string + icon: string + category: string + baseClasses: string[] + inputs: INodeParams[] + + constructor() { + this.label = 'Moderation - Simple Prompt' + this.name = 'inputModerationSimple' + this.version = 1.0 + this.type = 'Moderation' + this.icon = 'simple_moderation.png' + this.category = 'Responsible AI' + this.description = 'Detecting and mitigating prompt attacks' + this.baseClasses = [this.type, ...getBaseClasses(Moderation)] + this.inputs = [ + { + label: 'Deny List', + name: 'denyList', + type: 'string', + rows: 4, + placeholder: `ignore previous instructions\ndo not follow the directions\nyou must ignore all previous instructions`, + description: 'An array of string literals (enter one per line) that should not appear in the prompt text.', + optional: false + }, + { + label: 'Error Message', + name: 'moderationErrorMessage', + type: 'string', + rows: 2, + default: 'Cannot Process! Input violates content moderation policies.', + optional: true + } + ] + } + + // eslint-disable-next-line unused-imports/no-unused-vars + async init(nodeData: INodeData): Promise { + const denyList = nodeData.inputs?.denyList as string + const moderationErrorMessage = nodeData.inputs?.moderationErrorMessage as string + + return new SimplePromptModerationRunner(denyList, moderationErrorMessage) + } +} + +module.exports = { nodeClass: SimplePromptModeration } diff --git a/packages/components/nodes/responsibleAI/InputModeration/SimplePromptModerationRunner.ts b/packages/components/nodes/responsibleAI/InputModeration/SimplePromptModerationRunner.ts new file mode 100644 index 000000000..aaded907e --- /dev/null +++ b/packages/components/nodes/responsibleAI/InputModeration/SimplePromptModerationRunner.ts @@ -0,0 +1,24 @@ +import { Moderation } from '../ResponsibleAI' +import { BaseLanguageModel } from 'langchain/base_language' + +export class SimplePromptModerationRunner implements Moderation { + private readonly denyList: string = '' + private readonly moderationErrorMessage: string = '' + + constructor(denyList: string, moderationErrorMessage: string) { + this.denyList = denyList + if (denyList.indexOf('\n') === -1) { + this.denyList += '\n' + } + this.moderationErrorMessage = moderationErrorMessage + } + + async checkForViolations(llm: BaseLanguageModel, input: string): Promise { + this.denyList.split('\n').forEach((denyListItem) => { + if (denyListItem && denyListItem !== '' && input.includes(denyListItem)) { + throw Error(this.moderationErrorMessage) + } + }) + return Promise.resolve(input) + } +} diff --git a/packages/components/nodes/responsibleAI/InputModeration/openai-moderation.png b/packages/components/nodes/responsibleAI/InputModeration/openai-moderation.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b1b282a70fdcbf36da31b2856b7a0ade9c45c5 GIT binary patch literal 47939 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

_wG68x><=35`nmw$-Nua@ojcWD{>y*)FJbQ! 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

I{36t7LlSB{^VRUNy;FO1H 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 P00000NkvXXu0mjf)=Eu{ literal 0 HcmV?d00001 diff --git a/packages/components/nodes/responsibleAI/InputModeration/simple_moderation.png b/packages/components/nodes/responsibleAI/InputModeration/simple_moderation.png new file mode 100644 index 0000000000000000000000000000000000000000..47d78cb672fc6a3c77ddfb7fe57e79e16bf9d71f GIT binary patch literal 44837 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 literal 0 HcmV?d00001 diff --git a/packages/components/nodes/responsibleAI/ResponsibleAI.ts b/packages/components/nodes/responsibleAI/ResponsibleAI.ts new file mode 100644 index 000000000..0c75501f8 --- /dev/null +++ b/packages/components/nodes/responsibleAI/ResponsibleAI.ts @@ -0,0 +1,30 @@ +import { BaseLanguageModel } from 'langchain/base_language' +import { Server } from 'socket.io' + +export abstract class ResponsibleAI {} + +export abstract class Moderation extends ResponsibleAI { + abstract checkForViolations(llm: BaseLanguageModel, input: string): Promise +} + +export const checkInputs = async (inputModerations: Moderation[], llm: BaseLanguageModel, input: string): Promise => { + for (const moderation of inputModerations) { + input = await moderation.checkForViolations(llm, input) + } + return input +} + +// is this the correct location for this function? +// should we have a utils files that all node components can use? +export const streamResponse = (isStreaming: any, response: string, socketIO: Server, socketIOClientId: string) => { + if (isStreaming) { + const result = response.split(/(\s+)/) + result.forEach((token: string, index: number) => { + if (index === 0) { + socketIO.to(socketIOClientId).emit('start', token) + } + socketIO.to(socketIOClientId).emit('token', token) + }) + socketIO.to(socketIOClientId).emit('end') + } +}