LM Warden

Anthropic SDK auf Ihren eigenen GPUs.

Ihr Anthropic-API-Schlüssel bleibt in api_key; der Warden-Schlüssel wird in einem eigenen Header übertragen.

Wohin eine Anfrage des Anthropic SDK geht Das Anthropic SDK sendet seine Anfragen an LM Warden: base_url zeigt auf den Warden, X-LMWarden-Key enthält einen Warden-Schlüssel. LM Warden prüft den Schlüssel, unterstützt Anthropic Messages, reiht die Anfrage nach der Priorität des Schlüssels ein und übergibt sie an den Replikat-Router, der jede Sitzung auf dem Replikat hält, das ihren Cache bereits hat – eine Modellkopie pro GPU. Ein separater Weg führt zu api.anthropic.com: Regeln schicken andere Claude-Modelle dorthin, mit Ihrem eigenen API-Schlüssel. Anthropic SDK base_url points at the warden X-LMWarden-Key vw_…, in default headers POST /v1/messages LM Warden checks the key: one per app speaks Anthropic Messages scheduler, key priority usage, latency and live stats per key Replica router a session goes back to the replica that holds its cache one model copy per GPU your GPUs: vLLM or llama.cpp replica 0, GPU 0 replica 1, GPU 1 replica 2, GPU 2 a conversation stays on its replica api.anthropic.com rules send other Claude models here, on your own API key
Wohin eine Anfrage des Anthropic SDK geht Das Anthropic SDK sendet seine Anfragen an LM Warden: base_url zeigt auf den Warden, X-LMWarden-Key enthält einen Warden-Schlüssel. LM Warden prüft den Schlüssel, unterstützt Anthropic Messages, reiht die Anfrage nach der Priorität des Schlüssels ein und übergibt sie an den Replikat-Router, der jede Sitzung auf dem Replikat hält, das ihren Cache bereits hat – eine Modellkopie pro GPU. Ein separater Weg führt zu api.anthropic.com: Regeln schicken andere Claude-Modelle dorthin, mit Ihrem eigenen API-Schlüssel. Anthropic SDK base_url points at the warden X-LMWarden-Key vw_…, in default headers POST /v1/messages LM Warden checks the key: one per app speaks Anthropic Messages scheduler, key priority usage, latency, live stats per key Replica router a session goes back to the replica that holds its cache replica 0 GPU 0 replica 1 GPU 1 replica 2 GPU 2 your GPUs: vLLM or llama.cpp a conversation stays on its replica api.anthropic.com rules send other Claude models here, on your own API key
Wohin eine Anfrage des Anthropic SDK geht: die zwei Einstellungen, die Connect einträgt, der Warden in der Mitte, dann eine Kopie des Modells pro GPU.

Kurz gesagt: Das Anthropic SDK sendet seine Anfragen an LM Warden: base_url zeigt auf den Warden, X-LMWarden-Key enthält einen Warden-Schlüssel. LM Warden prüft den Schlüssel, unterstützt Anthropic Messages, reiht die Anfrage nach der Priorität des Schlüssels ein und übergibt sie an den Replikat-Router, der jede Sitzung auf dem Replikat hält, das ihren Cache bereits hat – eine Modellkopie pro GPU. Ein separater Weg führt zu api.anthropic.com: Regeln schicken andere Claude-Modelle dorthin, mit Ihrem eigenen API-Schlüssel.

Protokoll
Anthropic Messages
Unterstützung
Vollständig

Die in Ihren Regeln festgelegten Claude-Modelle laufen hier; jedes andere Modell und jeder andere /v1-Pfad geht mit Ihren eigenen Zugangsdaten an Anthropic. Der rein lokale Modus braucht kein Anthropic-Konto: Der Warden-Schlüssel ist der api_key, und das Modell ist ein bereitgestellter Name.

Voraussetzungen

  • Das Routing muss eingeschaltet sein, mit mindestens einer aktivierten Regel.
  • Der Schlüssel muss an Anthropic weiterleiten dürfen (May relay).

Einrichtung

In der Konsole erzeugt Connect diese Dateien mit der Adresse Ihres Wardens, Ihrem Schlüssel und dem gewählten Modell. Hier sehen Sie sie mit Platzhaltern.

Router: Anthropic-Schlüssel behalten

base_url ist dieser Warden; Ihr Anthropic-API-Schlüssel bleibt in api_key, und der Warden-Schlüssel kommt in die Standard-Header.

Python
import anthropic

# api_key is your own Anthropic key (ANTHROPIC_API_KEY), used for pass-through.
client = anthropic.Anthropic(
    base_url="https://your-warden",
    default_headers={"X-LMWarden-Key": "vw_YOUR_KEY"},
)
message = client.messages.create(
    model="claude-haiku-4-5",  # a model your rules serve here; others go to Anthropic
    max_tokens=256,
    messages=[{"role": "user", "content": "Reply with the single word OK."}],
)
print(message.content[0].text)
TypeScript
import Anthropic from "@anthropic-ai/sdk";

// apiKey is your own Anthropic key (ANTHROPIC_API_KEY), used for pass-through.
const client = new Anthropic({
  baseURL: "https://your-warden",
  defaultHeaders: { "X-LMWarden-Key": "vw_YOUR_KEY" },
});
const message = await client.messages.create({
  model: "claude-haiku-4-5", // a model your rules serve here; others go to Anthropic
  max_tokens: 256,
  messages: [{ role: "user", content: "Reply with the single word OK." }],
});
console.log(message.content);
curl
curl https://your-warden/v1/messages \
  -H "X-LMWarden-Key: vw_YOUR_KEY" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-haiku-4-5", "max_tokens": 256, "messages": [{"role": "user", "content": "Reply with the single word OK."}]}'

Nur lokal

Der Warden-Schlüssel ist der api_key, und das Modell ist ein bereitgestellter Name.

Python
import anthropic

client = anthropic.Anthropic(base_url="https://your-warden", api_key="vw_YOUR_KEY")
message = client.messages.create(
    model="your-served-model-name",
    max_tokens=256,
    messages=[{"role": "user", "content": "Reply with the single word OK."}],
)
print(message.content[0].text)
TypeScript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({ baseURL: "https://your-warden", apiKey: "vw_YOUR_KEY" });
const message = await client.messages.create({
  model: "your-served-model-name",
  max_tokens: 256,
  messages: [{ role: "user", content: "Reply with the single word OK." }],
});
console.log(message.content);
curl
curl https://your-warden/v1/messages \
  -H "x-api-key: vw_YOUR_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "your-served-model-name", "max_tokens": 256, "messages": [{"role": "user", "content": "Reply with the single word OK."}]}'

Offizielle Dokumentation: https://platform.claude.com/docs/en/api/sdks/python (abgerufen am 2026-10-04).