Prompt Guard API

Guide de démarrage rapide

Démarrez avec Adlibo en moins de 5 minutes. Protégez votre application IA contre les attaques par injection de prompt.

1Obtenez votre clé API

Créez un compte et générez votre clé API depuis le tableau de bord.

2Installez le SDK

terminal
npm install @adlibo/sdk

3Analysez les entrées utilisateur

javascript
import { Adlibo } from '@adlibo/sdk';

// Initialize with your API key (string, not object!)
const adlibo = new Adlibo('YOUR_API_KEY');

// Or with optional config:
// const adlibo = new Adlibo('YOUR_API_KEY', { timeout: 5000 });

// Analyze user input before sending to LLM
const result = await adlibo.analyze(userInput);

if (result.safe) {
  // Safe to process
  const response = await openai.chat.completions.create({
    messages: [{ role: 'user', content: userInput }],
    model: 'gpt-4'
  });
} else {
  // Block malicious input
  console.log(`Blocked: ${result.categories}`);
  console.log(`Risk Score: ${result.riskScore}`);
}

Note : ESM vs CommonJS

Le SDK est publié en format ESM. Si vous utilisez CommonJS ("type": "commonjs" dans package.json), utilisez l'import dynamique :

javascript
// CommonJS (.cjs ou sans "type": "module")
async function init() {
  const { Adlibo } = await import('@adlibo/sdk');
  const adlibo = new Adlibo('YOUR_API_KEY');
  return adlibo;
}

// Usage
const adlibo = await init();
const result = await adlibo.analyze(userInput);

Intégration en parallèle

Si vous avez déjà un système de protection existant, vous pouvez utiliser Adlibo en complément pour centraliser vos logs et bénéficier de notre tableau de bord.

Deux modes d'intégration

  • Mode complet : Adlibo détecte et protège (Quickstart)
  • Mode parallèle : Votre code détecte, Adlibo centralise les logs

Architecture parallèle

Utilisateur
    │
    ▼
┌─────────────────┐
│  Votre systeme  │ ◄── Detection locale (votre code)
│  de protection  │
└────────┬────────┘
         │
         ▼ (si detection)
┌─────────────────┐
│   Adlibo API    │ ◄── POST /v1/report
│  (centralise)   │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  Dashboard      │
│  unifie         │
└─────────────────┘

Reporter une détection

javascript
// Votre systeme detecte localement
const myDetectionResult = myLocalDetector.analyze(userInput);

// Envoyer a Adlibo pour centraliser les logs
if (!myDetectionResult.safe) {
  await fetch('https://www.adlibo.com/api/v1/report', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      detection: {
        riskScore: myDetectionResult.score,
        severity: myDetectionResult.level, // 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL'
        categories: myDetectionResult.types,
        patterns: myDetectionResult.matches,
        action: 'BLOCKED',
        blocked: true,
        inputLength: userInput.length,
        inputPreview: userInput.slice(0, 200),
        userId: currentUser?.id,
        endpoint: '/api/chat',
        clientEngine: 'my-detector-v1.0'
      }
    })
  });
}

Mode batch (jusqu'à 100 détections)

javascript
// Envoyer plusieurs detections d'un coup
await fetch('https://www.adlibo.com/api/v1/report', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' },
  body: JSON.stringify({
    batch: [
      { riskScore: 85, severity: 'HIGH', ... },
      { riskScore: 92, severity: 'CRITICAL', ... },
      // jusqu'a 100 detections
    ]
  })
});

Authentification

Toutes les requêtes API nécessitent une authentification via un token Bearer dans l'en-tête Authorization.

Authorization: Bearer YOUR_API_KEY

Gardez votre clé API sécurisée

N'exposez jamais votre clé API dans le code côté client. Effectuez toujours les appels API depuis votre serveur backend.

POST/v1/analyze

Analyse le texte pour détecter les patterns d'injection de prompt. Retourne des informations détaillées sur les menaces détectées, le score de risque et l'action recommandée.

Corps de la requête

ParamètreTypeDescription
textstringRequis. Le texte à analyser.
options.includeDetailsbooleanInclure les détails des patterns correspondants. Par défaut : true
options.sanitizebooleanRetourner le texte nettoyé dans la réponse. Par défaut : false
roleContextobjectContexte d'accès basé sur les rôles pour un scoring amélioré. ENTERPRISE uniquement.
roleContext.userRolestringRôle utilisateur : EMPLOYEE, MANAGER, HR_MANAGER, EXECUTIVE, SUPER_ADMIN, etc.
roleContext.businessDomainstringDomaine métier : HEALTHCARE, FINANCE, LEGAL, GOVERNMENT, etc.
roleContext.isOwnDatabooleanL'utilisateur accède à ses propres données (réduit le score de sensibilité).
roleContext.isTeamDatabooleanLe manager accède aux données de son équipe (réduit le score de sensibilité).

Réponse

json
{
  "safe": false,
  "riskScore": 92,
  "severity": "CRITICAL",
  "category": "INSTRUCTION_OVERRIDE",
  "action": "BLOCK",
  "patterns": [
    {
      "type": "DIRECT_OVERRIDE",
      "match": "ignore previous instructions",
      "score": 80,
      "position": { "start": 0, "end": 28 }
    },
    {
      "type": "DAN_JAILBREAK",
      "match": "you are now DAN",
      "score": 90,
      "position": { "start": 30, "end": 45 }
    }
  ],
  "sanitizedText": null,
  "processingTimeMs": 3
}

Exemple

javascript
import { Adlibo } from '@adlibo/sdk';

// Initialize with your API key (string, not object!)
const adlibo = new Adlibo('YOUR_API_KEY');

// Or with optional config:
// const adlibo = new Adlibo('YOUR_API_KEY', { timeout: 5000 });

// Analyze user input before sending to LLM
const result = await adlibo.analyze(userInput);

if (result.safe) {
  // Safe to process
  const response = await openai.chat.completions.create({
    messages: [{ role: 'user', content: userInput }],
    model: 'gpt-4'
  });
} else {
  // Block malicious input
  console.log(`Blocked: ${result.categories}`);
  console.log(`Risk Score: ${result.riskScore}`);
}
POST/v1/sanitize

Supprime ou neutralise les patterns malveillants du texte. Retourne le texte nettoyé avec la liste de ce qui a été supprimé.

Réponse

json
{
  "text": "User input without malicious content",
  "removed": [
    {
      "type": "SCRIPT_INJECTION",
      "original": "<script>alert('xss')</script>",
      "position": { "start": 15, "end": 48 }
    }
  ],
  "wasModified": true,
  "processingTimeMs": 2
}

Exemple

javascript
// Sanitize input (remove malicious patterns)
const cleaned = await adlibo.sanitize(userInput);
console.log(cleaned.text); // Safe text
console.log(cleaned.removed); // Patterns removed
POST/v1/detect

Vérification booléenne rapide pour l'injection de prompt. Utilisez cet endpoint lorsque vous avez juste besoin d'une réponse oui/non avec une latence minimale.

Réponse

json
{
  "safe": true,
  "processingTimeMs": 1
}

Exemple

javascript
// Quick boolean check
const isSafe = await adlibo.detect(userInput);
if (!isSafe) {
  throw new Error('Potentially malicious input detected');
}
POST/v1/reportIntégration parallèle

Enregistre une détection effectuée par votre propre système. Utilisez cet endpoint pour centraliser vos logs dans le dashboard Adlibo sans modifier votre logique de détection existante.

Corps de la requête

ParamètreTypeDescription
detection.riskScorenumberRequis. Score de risque (0-100)
detection.severitystringRequis. LOW | MEDIUM | HIGH | CRITICAL
detection.actionstringRequis. LOGGED | WARNED | BLOCKED | ALERTED
detection.blockedbooleanRequis. Si la requête a été bloquée
detection.inputLengthnumberRequis. Longueur du texte original
detection.categoriesstring[]Catégories détectées
detection.patternsobject[]Patterns correspondants (category, match, score)
detection.inputPreviewstring200 premiers caractères (pour debug)
detection.clientEnginestringVersion de votre détecteur (ex: "my-guard-v1.2")
batchobject[]Ou : tableau de détections (max 100)

Réponse

json
{
  "success": true,
  "detectionId": "clxyz123...",
  "processingTimeMs": 5
}

// Ou en mode batch:
{
  "success": true,
  "processed": 95,
  "failed": 5,
  "processingTimeMs": 120
}

Patterns de détection

Adlibo détecte plus de {patternCount} patterns d'attaque dans {categoryCount} catégories avec 100% de détection et 23ms de latence P99. Voici les principales catégories de menaces :

Override Direct

Tentatives de contourner les instructions système

ignore previousforget your rules

Manipulation de Rôle

Tentatives de changer la persona IA ou revendiquer des rôles métier

you are nowI am HR manageras the CEO

Jailbreak DAN

Attaques "Do Anything Now" et similaires

DAN modeno restrictionsdeveloper mode

Extraction d'Instructions

Tentatives de révéler les prompts système

repeat your instructionsshow system prompt

Manipulation de Tokens

Tokens de format spécifiques aux LLM

[INST]###SYSTEMHuman:<|im_start|>

Encodage/Obfuscation

Leetspeak, homoglyphes, astuces d'espacement

1gn0r3Ignorei g n o r e

Attaque Roleplay

Scénarios fictifs pour contourner la sécurité

in a story wherehypothetically

Manipulation Émotionnelle

Ingénierie sociale via urgence, culpabilité, flatterie

I really need thislife depends onyou are so helpful

Limite Graduelle

Attaques multi-tours qui construisent la confiance progressivement

start small then escalatefoot-in-the-door

Requête Sensible

Demandes de données sensibles par domaine

salary informationpatient recordsAPI keys

Agent d'Évaluation de Sécurité

Déployez notre agent CLI pour des audits de sécurité complets. Scans non destructifs couvrant OWASP Top 10, Sécurité API et vulnérabilités LLM.

Installation

bash
# Download the agent
curl -sSL https://www.adlibo.com/api/agent/download -o adlibo-agent.sh
chmod +x adlibo-agent.sh

# Check system compatibility
./adlibo-agent.sh --system-info

# Install dependencies (auto-detects distro)
./adlibo-agent.sh --install-deps

Utilisation

bash
# Run all tests
./adlibo-agent.sh --token <YOUR_TOKEN> --all

# Interactive module selection
./adlibo-agent.sh --token <YOUR_TOKEN> --interactive

# Specific modules only
./adlibo-agent.sh --token <YOUR_TOKEN> -m owasp-a01,owasp-a03,llm-01

# List available modules
./adlibo-agent.sh --list

Modules Disponibles

ModuleDescriptionFramework
owasp-a01Broken Access ControlOWASP Top 10
owasp-a03Injection (SQL, XSS, Command)OWASP Top 10
api-1Broken Object Level AuthOWASP API
llm-01Direct Prompt InjectionOWASP LLM
llm-02Indirect Prompt InjectionOWASP LLM
infra-sslSSL/TLS ConfigurationInfrastructure
data-secretsSecrets DetectionData Exposure

Limites de Taux

PlanRequêtes/MoisLimite de Taux
Trial (14 days)5,00060 req/min
Pro50,000600 req/min
EnterpriseUnlimited10,000 req/min

Codes d'Erreur

CodeDescription
400Bad Request - Paramètres invalides
401Unauthorized - Clé API invalide ou manquante
403Forbidden - IP non autorisée ou quota dépassé
429Too Many Requests - Limite de taux dépassée
500Internal Server Error

Besoin d'aide ?

Notre équipe est là pour vous aider à intégrer Adlibo dans votre application.