Vercel AI SDK middleware that evaluates LLM prompts, assistant responses, and tool calls through Datadog AI Guard, blocking requests based on Datadog's security policies.
| Package | Version | Description |
|---|---|---|
@nulab/datadog-ai-guard-middleware-ai-v3 |
AI SDK v6 (@ai-sdk/provider@^3) |
|
@nulab/datadog-ai-guard-middleware-ai-v2 |
AI SDK v5 (@ai-sdk/provider@^2) |
|
@nulab/datadog-ai-guard-middleware-core |
AI SDK-independent core logic |
| Your AI SDK version | Install |
|---|---|
AI SDK v6 (latest, @ai-sdk/provider@^3) |
@nulab/datadog-ai-guard-middleware-ai-v3 |
AI SDK v5 (@ai-sdk/provider@^2) |
@nulab/datadog-ai-guard-middleware-ai-v2 |
@nulab/datadog-ai-guard-middleware-coredoes not need to be installed directly. It is automatically installed as an internal dependency of the middleware packages.
npm install @nulab/datadog-ai-guard-middleware-ai-v3import ddtracer from "dd-trace";
import { generateText, wrapLanguageModel } from "ai";
import { openai } from "@ai-sdk/openai";
import {
AIGuardMiddleware,
AIGuardMiddlewareAbortError,
} from "@nulab/datadog-ai-guard-middleware-ai-v3";
// Initialize dd-trace with AI Guard enabled
ddtracer.init({
experimental: {
aiguard: { enabled: true },
},
});
// Create a guarded model
const guardedModel = wrapLanguageModel({
model: openai("gpt-4o"),
middleware: [new AIGuardMiddleware({ evaluator: ddtracer.aiguard })],
});
// Use it with generateText / streamText
try {
const { text } = await generateText({
model: guardedModel,
prompt: "Hello!",
});
console.log(text);
} catch (err) {
if (err instanceof AIGuardMiddlewareAbortError) {
console.error("Blocked by AI Guard security policy");
}
}For detailed usage including streaming, error handling, and all configuration options, see the package README for ai-v3 or ai-v2.
- Node.js >= 22
- dd-trace >= 5 with AI Guard enabled (
experimental.aiguard.enabled: true) - AI SDK v5 (
@ai-sdk/provider@^2) or v6 (@ai-sdk/provider@^3)
corepack enable
pnpm installpnpm -r run buildpnpm -r run testpnpm run check