RateLoop SDK
Das SDK verbindet Ihre Anwendung mit eingeladenen Workspace-Prüfungen und deren Nachweisen.
Diese Beispiele verwenden die noch unveröffentlichte API von @rateloop/sdk 0.3.0. Das veröffentlichte Paket 0.1.0 kann sie nicht ausführen. Verwenden Sie für Agentenprüfungen Workspace-MCP, bis ein kompatibles SDK veröffentlicht ist.
Sie können die Workspace-MCP-Verbindung für Agentenprüfungen oder das Prüfprogramm für Belege im Browser. Das Anwendungs-Repository ist privat; ein Quellcode-Checkout ist kein öffentlicher Installationsweg.
Ablauf der eingeladenen Prüfung
Für verbundene Agenten folgt createInvitedReviewClient der gespeicherten Richtlinie über getPolicy, evaluate, ask, wait und result. Das folgende Beispiel bereitet Material vor; es versendet keine Prüfaufträge.
Verwenden Sie ein Projekt, eine Integration, ein Anfrageprofil und eine Gruppe, die der Eigentümer für eingeladene Prüfende konfiguriert hat.
import { createTokenlessRateLoopClient } from "@rateloop/sdk";
const client = createTokenlessRateLoopClient({
apiBaseUrl: process.env.RATELOOP_API_BASE_URL!,
apiKey: process.env.RATELOOP_AGENT_API_KEY!, // server-side workspace key
});
const { projects } = await client.assurance.listProjects();
const projectId = process.env.RATELOOP_PROJECT_ID!; // owner-configured project
if (!projects.some(project => project.projectId === projectId)) throw new Error("Project is not available");
const sourceText = "Customer asks whether an invoice can be split.";
const replyText = "Yes. Here are the split-billing steps.";
const review = await client.assurance.createPrivateReview({
idempotencyKey: "reply-0001",
integrationId: process.env.RATELOOP_INTEGRATION_ID!,
projectId,
requestProfile: {
id: process.env.RATELOOP_REQUEST_PROFILE_ID!,
version: Number(process.env.RATELOOP_REQUEST_PROFILE_VERSION!),
hash: process.env.RATELOOP_REQUEST_PROFILE_HASH! as `sha256:${string}`,
},
cohortId: process.env.RATELOOP_COHORT_ID!,
dataClassification: "internal",
source: { contentType: "text/plain; charset=utf-8", bytesBase64: Buffer.from(sourceText).toString("base64") },
suggestion: { contentType: "text/plain; charset=utf-8", bytesBase64: Buffer.from(replyText).toString("base64") },
});
console.log(review.privateReviewId, review.status, review.responseDeadline);
const { runs } = await client.assurance.getProject({ projectId });
for (const run of runs) {
const status = await client.assurance.getRunStatus({ runId: run.runId });
console.log(status.runId, status.runStatus);
}Wenn Sie zunächst ein Projekt erstellen möchten, rufen Sie client.assurance.createProject mit Name, Datenklasse und Aufbewahrungsdauer auf und schließen Sie danach die Prüfeinrichtung in RateLoop ab. Die Antwort der privaten Prüfung enthält eine eigene ID, Bindungen und Frist; sie verspricht keine sofortige Projektlauf-ID. Projektläufe werden getrennt aufgeführt. createPrivateReview sendet den Idempotenzschlüssel als Header, sodass ein identischer Wiederholungsversuch dieselbe Prüfung zurückgibt. Die Quell- und Antworttexte sind für den Transport base64-kodierte Bytes; RateLoop verschlüsselt die dekodierten Artefakte vor der Speicherung.
Mit Modell-Routing generieren
Aktivieren Sie die API-Generierung in den Einstellungen eines verbundenen Agenten mit API-Schlüssel. Diese Berechtigung ist von der Kostenoptimierung und dem Prüfzugriff getrennt. Die erste Version verarbeitet Text und verwendet die gespeicherte Prüffrage.
Die API-Generierung sendet übermittelte Eingaben, Nachrichten und Systemanweisungen über Vercel AI Gateway an den konfigurierten OpenAI-Anbieter. Verwenden Sie in dieser Alpha nur öffentliche, synthetische oder sicher geschwärzte Inhalte.
import { createGenerationClient, createInvitedReviewClient } from "@rateloop/sdk";
const options = {
apiBaseUrl: "https://www.rateloop.ai",
apiKey: process.env.RATELOOP_AGENT_API_KEY!,
};
const draft = await createGenerationClient(options).generate({
agentId: process.env.RATELOOP_AGENT_ID!,
clientRequestId: "reply-0001",
workflowKey: "support-reply",
messages: [{ role: "user", content: "Draft a concise reply to this synthetic request." }],
maxOutputTokens: 1024,
});
if (!draft.review || !draft.opportunityId) {
// Repair setup and retry the identical request; keep this draft unapproved.
throw new Error(draft.reviewSetup.errorCode ?? "review_setup_required");
}
let review = draft.review;
if (review.continuation) {
review = await createInvitedReviewClient(options).wait({
opportunityId: draft.opportunityId,
cursor: review.continuation.cursor,
});
}
console.log(draft.model, draft.usage, review.lifecycle.state);POST /api/agent/v1/generations erstellt einen Entwurf mit seiner normalen Prüfung. Das SDK sendet clientRequestId als Idempotency-Key; ein identischer Wiederholungsversuch verwendet beides 24 Stunden lang erneut. Danach folgt HTTP 410 ohne neue Generierung. Geben Sie draft.text erst gemäß der gespeicherten Freigaberegel frei: Eine ausstehende, uneindeutige oder fehlgeschlagene Prüfung ist keine Freigabe. Warten Sie bei Bedarf weiter auf dieselbe Prüfung.
Wenn die Prüfeinrichtung nach der Generierung fehlschlägt, liefert die API den gespeicherten Entwurf ohne Prüfung zurück und zeigt an, dass die Einrichtung erneut versucht werden muss. Beheben Sie die gemeldete Ursache und wiederholen Sie dieselbe Anfrage, um die Prüfung ohne erneute Generierung fortzusetzen. Der Abruf eines Entwurfs ist keine Freigabe.
Integrationsregeln
- Verwenden Sie einen Idempotenzschlüssel nur für dieselbe Prüfungsnutzlast erneut.
- Bewahren Sie Workspace-API-Schlüssel auf Ihrem Server auf und widerrufen Sie nicht mehr benötigte Zugangsdaten.
- Warten Sie auf die ursprüngliche Prüfung; eine Zeitüberschreitung ist keine Freigabe und kein Grund, ein Duplikat zu erstellen.
Autorisierung
Erstellen Sie widerrufbare Workspace-API-Schlüssel mit begrenztem Zugriff unter Einstellungen → Integrationen. RateLoop leitet Workspace und Projektzugriff aus dem Schlüssel ab. Browser-Clients verwenden die HttpOnly-RateLoop-Sitzung. Eine vom Aufrufer übermittelte Konto- oder Workspace-ID gewährt keinen Zugriff.
Belegexporte
Workspace-Mitglieder mit der erforderlichen Rolle können das Paket eines abgeschlossenen Prüfdurchlaufs, den Verlauf der adaptiven Abdeckung, die Workspace-Auditkette und den Verlauf vertrauenswürdiger Schlüssel exportieren.
GET /api/account/workspaces/{workspaceId}/assurance/runs/{runId}/evidence
GET /api/account/workspaces/{workspaceId}/assurance/coverage/export
GET /api/account/workspaces/{workspaceId}/audit/export
GET /api/evidence/trusted-keys
GET /api/account/workspaces/{workspaceId}/assurance/trusted-keys
GET /api/account/workspaces/{workspaceId}/assurance/trusted-keys?format=spki&keyId=ed25519:…Lesende eines Pakets benötigen kein RateLoop-Konto, um dessen aktuellen oder ausgemusterten SPKI-Pin vom öffentlichen, cachefähigen Endpunkt für Prüfschlüssel. Workspace-Mitglieder können ihn auch aus dem authentifizierten Schlüsselverlauf herunterladen. Führen Sie den herunterladbaren Paketprüfer mit einer ausdrücklich angegebenen Schlüsselkennung aus, statt dem Schlüssel im Paket zu vertrauen:
curl --fail --show-error --output verify-rateloop-evidence.mjs https://www.rateloop.ai/docs/verify-rateloop-evidence.mjs
node verify-rateloop-evidence.mjs ./packet.json --public-key ./trusted-evidence-key.txt --key-id ed25519:…Prüfprogramme für die Audit-Kette und Attestierungen stehen noch nicht öffentlich zum Download bereit. Lesen Sie die Belegreferenz für Prüfgrenzen oder Agenten und MCP für den verbundenen Workspace-Pfad.