§ DOCUMENTATION
Erste Schritte
KI-Agent-Governance in unter 5 Minuten in Ihre Anwendung integrieren.
Voraussetzungen
https://api.execlave.comSDK auswählen
TypeScript/JavaScript und Python sind beide erstklassig unterstützt. Wählen Sie eines — der Rest dieser Anleitung passt sich automatisch an.
Soforteinrichtung mit einem KI-Assistenten
Kopieren Sie diesen Prompt in GitHub Copilot, Cursor oder einen beliebigen KI-Coding-Assistenten. Er installiert und verkabelt Execlave automatisch in Ihrem Projekt.
Integriere Execlave in mein Projekt mit dem JavaScript/TypeScript-SDK. Folgendes ist zu tun: 1. SDK installieren: npm install @execlave/sdk 2. Diese Umgebungsvariable in meine .env-Datei eintragen: EXECLAVE_API_KEY=<mein-api-schlüssel> 3. Eine Datei namens "execlave.ts" (oder .js) im lib/- oder utils/-Ordner meines Projekts anlegen und diesen Initialisierungscode einfügen: import { Execlave, AgentPausedError, PolicyBlockedError } from '@execlave/sdk'; export const ag = new Execlave({ apiKey: process.env.EXECLAVE_API_KEY!, baseUrl: process.env.EXECLAVE_BASE_URL || 'https://api.execlave.com', environment: process.env.NODE_ENV || 'development', debug: process.env.NODE_ENV !== 'production',}); // Agenten beim Start registrieren (idempotent — mehrfacher Aufruf ist sicher)export async function initAgent() { return ag.registerAgent({ agentId: 'my-agent', name: 'My AI Agent', type: 'chatbot', platform: 'custom', });} // Beliebigen LLM-Aufruf mit automatischem Tracing umhüllenexport function traceCall<T>(fn: (input: string) => Promise<T>, agentId = 'my-agent') { return ag.wrap(fn, { agentId });} // Fehlertypen für catch-Blöcke exportierenexport { AgentPausedError, PolicyBlockedError }; 4. Im Haupt-Einstiegspunkt der Anwendung (z. B. index.ts, app.ts oder server.ts) initAgent() aufrufen: import { initAgent } from './lib/execlave';await initAgent(); 5. LLM-Aufrufe SOWOHL mit vorgelagerter Richtlinienprüfung ALS AUCH mit Tracing umhüllen. Der Aufruf enforcePolicy() läuft synchron und MUSS vor dem LLM-Aufruf erfolgen — er wirft PolicyBlockedError, wenn eine Richtlinie im Blockiermodus ausgelöst wird (z. B. Prompt-Injection). import { ag, AgentPausedError, PolicyBlockedError } from './lib/execlave'; async function handleUserMessage(userMessage: string) { const trace = ag.startTrace({ agentId: 'my-agent' }); trace.setInput(userMessage); try { // Vorgelagerte Richtlinienprüfung — MUSS vor dem LLM-Aufruf ausgeführt werden. // Wirft PolicyBlockedError, wenn eine Richtlinie im Blockiermodus verletzt wird. await ag.enforcePolicy({ agentId: 'my-agent', input: userMessage }); const response = await myLLM.call(userMessage); trace.setOutput(response).setModel('gpt-4').finish(); return response; } catch (error) { if (error instanceof PolicyBlockedError) { trace.setOutput('[BLOCKED BY POLICY]').finish('error', error.message); // Entscheiden, was der Nutzer sieht — eine generische Ablehnung ist am sichersten: return 'Ihre Eingabe wurde von unseren Inhaltsrichtlinien blockiert.'; } if (error instanceof AgentPausedError) { trace.finish('error', error.message); return 'Dienst vorübergehend nicht verfügbar.'; } trace.finish('error', String(error)); throw error; }} 6. Graceful Shutdown hinzufügen, um den Prozessabbruch abzufangen: process.on('SIGTERM', async () => { await ag.shutdown(); process.exit(0);}); Das SDK hat keine Laufzeitabhängigkeiten und erledigt automatisch:- Traces puffern und im Hintergrund gebündelt versenden- Kill-Switch respektieren (wirft AgentPausedError, wenn Agent pausiert ist)- Entscheidungen zur Richtliniendurchsetzung cachen (60 s TTL)- Circuit Breaker implementieren (3 Fehler → 60 s Backoff) WICHTIG: Tracing allein blockiert KEINE LLM-Aufrufe. Trace-Ingestion erzeugt Vorfälle im Nachhinein. Um Anfragen zu blockieren, bevor sie den LLM erreichen, MUSS ag.enforcePolicy() aufgerufen und PolicyBlockedError wie oben beschrieben behandelt werden.Schritt-für-Schritt-Anleitung
SDK installieren
Das Execlave-SDK-Paket installieren (keine Laufzeitabhängigkeiten):
npm install @execlave/sdkAPI-Schlüssel abrufen
Gehen Sie zu Dashboard → Einstellungen → API-Schlüssel und generieren Sie einen neuen Schlüssel. Kopieren Sie den Schlüssel — er beginnt mit exe_prod_ oder exe_dev_.
Fügen Sie ihn Ihrer Umgebung hinzu:
# .envEXECLAVE_API_KEY=exe_prod_your_key_hereSDK initialisieren
Eine gemeinsame Client-Instanz erstellen:
// lib/execlave.tsimport { Execlave } from '@execlave/sdk'; export const ag = new Execlave({ apiKey: process.env.EXECLAVE_API_KEY!, baseUrl: 'https://api.execlave.com', // Ihre Execlave-API environment: process.env.NODE_ENV || 'development',});Agenten registrieren
Registrieren Sie Ihren KI-Agenten beim Start. Dies ist idempotent — der Aufruf kann bei jedem App-Start sicher wiederholt werden.
import { ag } from './lib/execlave'; // Einmalig während der App-Initialisierung aufrufenawait ag.registerAgent({ agentId: 'my-chatbot', // eindeutiger Bezeichner für Ihren Agenten name: 'Customer Support Bot', // Anzeigename im Dashboard type: 'chatbot', // chatbot | copilot | autonomous | workflow platform: 'custom', // custom | openai | anthropic | langchain});Richtlinien durchsetzen und ersten LLM-Aufruf tracen
enforcePolicy() ist das synchrone Tor, das LLM-Aufrufe blockiert, wenn eine Richtlinie im Blockiermodus (z. B. Prompt-Injection) ausgelöst wird. Es MUSS vor dem LLM-Aufruf ausgeführt werden. Tracing allein blockiert nicht — es erzeugt Vorfälle im Nachhinein.
import { ag, AgentPausedError, PolicyBlockedError } from './lib/execlave'; async function handleMessage(userMessage: string) { const trace = ag.startTrace({ agentId: 'my-chatbot', sessionId: 'user-session-123', // optional: gruppiert eine Konversation }); trace.setInput(userMessage); try { // Vorgelagerte Richtlinienprüfung — MUSS VOR dem LLM-Aufruf ausgeführt werden. // Wirft PolicyBlockedError, wenn eine Richtlinie im Blockiermodus verletzt wird. await ag.enforcePolicy({ agentId: 'my-chatbot', input: userMessage }); const response = await openai.chat.completions.create({ model: 'gpt-4', messages: [{ role: 'user', content: userMessage }], }); const answer = response.choices[0].message.content; trace .setOutput(answer) .setModel('gpt-4') .setTokens(response.usage?.prompt_tokens, response.usage?.completion_tokens) .setCost(0.03) .finish(); return answer; } catch (err) { if (err instanceof PolicyBlockedError) { trace.setOutput('[BLOCKED BY POLICY]').finish('error', err.message); return 'Ihre Eingabe wurde von unseren Inhaltsrichtlinien blockiert.'; } if (err instanceof AgentPausedError) { trace.finish('error', err.message); return 'Dienst vorübergehend nicht verfügbar.'; } trace.finish('error', String(err)); throw err; }}Im Dashboard überprüfen
Öffnen Sie das Execlave-Dashboard und prüfen Sie:
Sie sollten Ihren registrierten Agenten und eingehende Traces sehen.
Wie geht es weiter?
Fehlerbehandlung
Das SDK exportiert spezifische Fehlertypen, damit Sie Governance-Ereignisse kontrolliert behandeln können:
import { AgentPausedError, PolicyBlockedError } from '@execlave/sdk'; try { const result = await tracedCall('Process this order');} catch (err) { if (err instanceof AgentPausedError) { // Administrator hat diesen Agenten per Kill-Switch pausiert return 'Dienst vorübergehend nicht verfügbar.'; } if (err instanceof PolicyBlockedError) { // Eine blockierende Richtlinie wurde verletzt return 'Diese Anfrage wurde durch eine Sicherheitsrichtlinie blockiert.'; } throw err; // unerwartete Fehler weiterwerfen}SDK-Konfiguration
| Option | Standard | Beschreibung |
|---|---|---|
| apiKey | EXECLAVE_API_KEY env | Ihr API-Schlüssel (exe_prod_xxx oder exe_dev_xxx) |
| baseUrl | https://api.execlave.com | Execlave-API-URL |
| environment | production | Bezeichnung der Deployment-Umgebung |
| asyncMode | true | Traces puffern und im Hintergrund leeren |
| batchSize | 100 | Maximale Traces pro Flush-Batch |
| flushIntervalMs | 10000 | Hintergrund-Flush-Intervall (ms) |
| debug | false | Ausführliches Debug-Logging aktivieren |
| enableControlChannel | true | Kill-Switch-Statusänderungen abfragen |
| pollIntervalMs | 15000 | Polling-Intervall für den Status (ms) |
| enableInjectionScan | true | Clientseitiges Scoring, das Traces mit einem Injection-Score versieht. Blockiert KEINE LLM-Aufrufe — verwenden Sie enforcePolicy() mit einer Injection-Richtlinie im Blockiermodus zum Blockieren. |
| enforcementOnOutage | fail_open | Verhalten bei unerreichbarer API (fail_open oder fail_closed) |
Wichtige API-Endpunkte
Das SDK behandelt diese automatisch, hier sind sie jedoch zur direkten API-Nutzung aufgeführt:
| Endpunkt | Auth | Beschreibung |
|---|---|---|
| POST /api/v1/agents | X-API-Key | Agenten registrieren |
| POST /api/v1/traces/ingest | X-API-Key | Traces einreichen (bis zu 100 pro Batch) |
| POST /api/v1/policies | X-API-Key (admin) | Governance-Richtlinie erstellen |
| POST /api/v1/policies/enforce | X-API-Key | Vorgelagerte Richtlinienprüfung |
| PATCH /api/v1/agents/:id/pause | X-API-Key (admin) | Agenten pausieren (Kill-Switch) |
| PATCH /api/v1/agents/:id/resume | X-API-Key (admin) | Pausierten Agenten fortsetzen |
| GET /api/v1/agents/:id/status-poll | X-API-Key | Agentenstatus abfragen |
| POST /api/v1/agents/:id/grants | X-API-Key (admin) | Agent-zu-Agent-Zugriffsberechtigung erstellen |
| POST /api/v1/agents/authorize | X-API-Key | Prüfen, ob ein Agenten-Aufruf autorisiert ist |
Umgebungsvariablen
Ihre Anwendung benötigt nur eine einzige Umgebungsvariable:
EXECLAVE_API_KEY=exe_prod_your_key_hereWenn Sie die Execlave-Infrastruktur lokal betreiben, verwenden Sie diese Standardwerte:
# BackendDATABASE_URL=postgresql://postgres:postgres@localhost:5432/execlaveREDIS_URL=redis://localhost:6379PORT=4000 # FrontendNEXT_PUBLIC_API_URL=http://localhost:4000NEXT_PUBLIC_GRAPHQL_URL=http://localhost:4000/graphql # Infrastruktur startendocker compose up -d # PostgreSQL + Redis + MinIOcd backend && npm run dev # API-Server auf :4000cd frontend && npm run dev # Dashboard auf :3000Self-hosted Deployment
Betreiben Sie die vollständige Execlave-Plattform auf Ihrer eigenen Infrastruktur mit einem Lizenzschlüssel. Ihre Daten verlassen niemals Ihr Netzwerk. Lediglich ein 24-Stunden-Lizenz-Heartbeat (Fingerabdruck + Zeitstempel, keine Kundendaten) wird übertragen.
Schnellstart
curl -O https://get.execlave.com/docker-compose.ymlexport LICENSE_KEY=exe_lic_<your-key>docker compose up -dopen http://localhost:3000Lizenzschlüssel anfordern
Fordern Sie einen Schlüssel unter /get-license an. Lizenzen des kostenlosen Tarifs werden innerhalb einer Geschäftsstunde bereitgestellt. Die vollständige Self-hosted-Anleitung — Umgebungsvariablen, Lizenzsemantik, Backups, Air-Gapped-Modus, Fehlerbehebung — finden Sie in der Self-hosted-Deployment-Dokumentation.