Files
alighasami 3d5eaf9445
Security: Sync from Public / sync-from-public (push) Has been cancelled
Test: Benchmark Nightly / build (push) Has been cancelled
Test: Benchmark Nightly / Notify Cats on failure (push) Has been cancelled
CI: Python / Checks (push) Has been cancelled
Test: Evals Python / Workflow Comparison Python (push) Has been cancelled
Util: Check Docs URLs / check-docs-urls (push) Has been cancelled
Test: Visual Storybook / Cloudflare Pages (push) Has been cancelled
Test: E2E Performance / build-and-test-performance (push) Has been cancelled
Test: Workflows Nightly / Run Workflow Tests (push) Has been cancelled
Util: Cleanup CI Docker Images / Delete stale CI images (push) Has been cancelled
Test: Benchmark Destroy Env / build (push) Has been cancelled
Util: Update Node Popularity / update-popularity (push) Has been cancelled
Test: E2E Coverage Weekly / Coverage Tests (push) Has been cancelled
first commit
2026-03-17 16:22:57 +03:30

64 lines
1.7 KiB
TypeScript

import type { GuardrailsOptions } from '../actions/types';
const LLM_CHECKS = ['nsfw', 'topicalAlignment', 'custom', 'jailbreak'] as const satisfies Array<
keyof GuardrailsOptions
>;
export const hasLLMGuardrails = (guardrails: GuardrailsOptions) => {
const checks = Object.keys(guardrails ?? {});
return checks.some((check) => (LLM_CHECKS as string[]).includes(check));
};
export const configureNodeInputsV2 = (parameters: { guardrails: GuardrailsOptions }) => {
// typeof LLM_CHECKS guarantees that it's in sync with hasLLMGuardrails
const CHECKS: typeof LLM_CHECKS = ['nsfw', 'topicalAlignment', 'custom', 'jailbreak'];
const checks = Object.keys(parameters?.guardrails ?? {});
const hasLLMChecks = checks.some((check) => (CHECKS as string[]).includes(check));
if (!hasLLMChecks) {
return ['main'];
}
return [
'main',
{
type: 'ai_languageModel',
displayName: 'Chat Model',
maxConnections: 1,
required: true,
filter: {
excludedNodes: [
'@n8n/n8n-nodes-langchain.lmCohere',
'@n8n/n8n-nodes-langchain.lmOllama',
'n8n/n8n-nodes-langchain.lmOpenAi',
'@n8n/n8n-nodes-langchain.lmOpenHuggingFaceInference',
],
},
},
];
};
export const configureNodeInputsV1 = (operation: 'classify' | 'sanitize') => {
if (operation === 'sanitize') {
// sanitize operations don't use a chat model
return ['main'];
}
return [
'main',
{
type: 'ai_languageModel',
displayName: 'Chat Model',
maxConnections: 1,
required: true,
filter: {
excludedNodes: [
'@n8n/n8n-nodes-langchain.lmCohere',
'@n8n/n8n-nodes-langchain.lmOllama',
'n8n/n8n-nodes-langchain.lmOpenAi',
'@n8n/n8n-nodes-langchain.lmOpenHuggingFaceInference',
],
},
},
];
};