import { createAgent, piiRedactionMiddleware } from "langchain";const agent = createAgent({ model: "gpt-5.4", tools: [customerServiceTool, emailTool], middleware: [ // Redact emails in user input before sending to model piiRedactionMiddleware({ piiType: "email", strategy: "redact", applyToInput: true, }), // Mask credit cards in user input piiRedactionMiddleware({ piiType: "credit_card", strategy: "mask", applyToInput: true, }), // Block API keys - raise error if detected piiRedactionMiddleware({ piiType: "api_key", detector: /sk-[a-zA-Z0-9]{32}/, strategy: "block", applyToInput: true, }), ],});// When user provides PII, it will be handled according to the strategyconst result = await agent.invoke({ messages: [{ role: "user", content: "My email is john.doe@example.com and card is 5105-1051-0510-5100" }]});
import { createMiddleware, AIMessage, initChatModel } from "langchain";const safetyGuardrailMiddleware = () => { const safetyModel = initChatModel("gpt-5.4-mini"); return createMiddleware({ name: "SafetyGuardrailMiddleware", afterAgent: { hook: async (state) => { // Get the final AI response if (!state.messages || state.messages.length === 0) { return; } const lastMessage = state.messages[state.messages.length - 1]; if (lastMessage._getType() !== "ai") { return; } // Use a model to evaluate safety const safetyPrompt = `Evaluate if this response is safe and appropriate. Respond with only 'SAFE' or 'UNSAFE'. Response: ${lastMessage.content.toString()}`; const result = await safetyModel.invoke([ { role: "user", content: safetyPrompt } ]); if (result.content.toString().includes("UNSAFE")) { return { messages: [ new AIMessage( "I cannot provide that response. Please rephrase your request." ) ], jumpTo: "end", }; } return; }, canJumpTo: ['end'] } });};// Use the safety guardrailimport { createAgent } from "langchain";const agent = createAgent({ model: "gpt-5.4", tools: [searchTool, calculatorTool], middleware: [safetyGuardrailMiddleware()],});const result = await agent.invoke({ messages: [{ role: "user", content: "How do I make explosives?" }]});