Kendalikan aplikasi AI yang saya bangun dengan Node.js
Titik penerapan yang digunakan: SDK Node.js, middleware Vercel AI SDK, integrasi framework Mode yang didukung: Local Hosted Hybrid Paket: Free (dasar) Solo Teams (fitur hosted)
Yang akan Anda lakukan
Pasang pemeriksaan guard() di depan setiap panggilan LLM dan pemanggilan alat di aplikasi Node.js Anda. Dapat digunakan mandiri atau sebagai middleware Vercel AI SDK; menerapkan kebijakan dan menulis jejak audit.
Mengapa ini jalur yang tepat untuk Anda
- Jika Anda menulis aplikasi Node.js atau Next.js yang memanggil LLM dan Anda memiliki kodenya, SDK memberi Anda kendali yang terperinci.
- Jika Anda menggunakan Vercel AI SDK, kami menyediakan middleware yang membungkus
generateText/streamTextsecara transparan. - Jika Anda tidak dapat mengubah kode, gunakan gateway.
- Jika aplikasi Anda berbasis Python, lihat Kendalikan aplikasi AI dengan Python.
Kapan TIDAK menggunakan pendekatan ini
SDK memerlukan perubahan kode di setiap titik keputusan. Jika Anda menginginkan pencegatan tanpa kode untuk setiap permintaan LLM, ganti base URL ke gateway.
Penyiapan 5 menit
Konfigurasikan registry Control Zero sekali saja: tambahkan @controlzero:registry=https://npm.controlzero.ai ke .npmrc Anda (atau jalankan npm config set @controlzero:registry https://npm.controlzero.ai). Ini berlaku untuk npm install dan npx pada seluruh scope @controlzero.
npm install @controlzero/sdk
Guard mandiri
import { Client } from '@controlzero/sdk';
const cz = await Client.create({ apiKey: process.env.CONTROLZERO_API_KEY });
const decision = cz.guard('shell', {
args: { command: 'rm -rf /' },
});
if (!decision.allowed) {
throw new Error(`Blocked by policy: ${decision.reason}`);
}
Output yang diharapkan pada panggilan yang diblokir:
Error: Blocked by policy: Destructive shell commands are not allowed.
Middleware Vercel AI SDK
Teks asli berbahasa Inggris -- terjemahan menunggu tinjauan teknis
The Node SDK ships a vercelAiMiddleware factory that plugs into the AI SDK's
wrapLanguageModel API, so every generateText / streamText call is
policy-checked before it reaches the provider and audited after.
import { Client } from '@controlzero/sdk';
import { vercelAiMiddleware } from '@controlzero/sdk/integrations';
import { generateText, wrapLanguageModel } from 'ai';
import { anthropic } from '@ai-sdk/anthropic';
const cz = await Client.create({ apiKey: process.env.CONTROLZERO_API_KEY });
const model = wrapLanguageModel({
model: anthropic('claude-sonnet-4-6'),
middleware: vercelAiMiddleware(cz, { agentId: 'my-bot' }),
});
const { text } = await generateText({
model,
prompt: 'What is in my .env file?',
});
Pada penolakan, middleware melempar error sebelum provider dipanggil. Untuk menjaga
pemanggilan alat satu per satu, bungkus setiap alat AI SDK dengan governedTool(cz, name, tool)
dari entry point @controlzero/sdk/integrations yang sama. Lihat halaman lengkap
integrasi Vercel AI SDK untuk detailnya.
Mode Local (tanpa akun)
const cz = new Client({ policyFile: './policy.yaml' });
Format YAML yang sama dengan SDK Python.
Memverifikasi bahwa berfungsi
- Picu permintaan yang seharusnya ditolak. Harapkan
decision.allowed === falsedan sebuah alasan. - Picu permintaan yang seharusnya lolos. Harapkan
decision.allowed === truedan peristiwa auditallow. - Pada mode Hosted, buka dasbor -> Audit dan lihat peristiwa mengalir masuk.
Tindak lanjut umum
- "Saya menggunakan Vercel AI SDK" -> Integrasi Vercel AI SDK
- "Saya ingin melindungi prompt dari PII" -> Cakupan DLP
- "Saya ingin menskalakan ini ke seluruh tim saya" -> Pendaftaran perangkat
- "Jalankan sepenuhnya offline" -> Jalankan sepenuhnya offline
Referensi
- Halaman titik penerapan: SDK Node.js
- Konsep: Kebijakan, Proyek
- API: Referensi API