async function sendMessage(userMessage, chatbotId) {
const scanResult = await fetch('/api/external/prompt-shield/scan', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
prompt: userMessage,
context: { chatbotId }
})
}).then(r => r.json());
if (scanResult.verdict === 'BLOCK') {
return {
blocked: true,
reason: scanResult.categoryLabel,
incidentId: scanResult.traceId
};
}
const llmResponse = await callYourLLM(userMessage);
const outputScan = await fetch('/api/external/prompt-shield/scan-output', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
output: llmResponse,
chatbotId
})
}).then(r => r.json());
if (outputScan.verdict === 'BLOCK') {
return { blocked: true, reason: 'Output guardrail triggered' };
}
return { message: llmResponse, flagged: scanResult.verdict === 'FLAG' };
}