LM Warden

Anthropic SDK на ваших власних GPU.

Ваш ключ API Anthropic лишається в api_key; ключ LM Warden передається в окремому заголовку.

Куди йде запит від Anthropic SDK Anthropic SDK надсилає запити до LM Warden: base_url вказує на LM Warden, а X-LMWarden-Key містить ключ LM Warden. LM Warden перевіряє ключ, приймає запит у форматі Anthropic Messages, ставить його в чергу за пріоритетом ключа й передає маршрутизатору реплік, який тримає кожен сеанс на тій репліці, де вже є його кеш (по одній копії моделі на кожен GPU). Окремий шлях веде до api.anthropic.com: туди правила надсилають інші моделі Claude, з вашим власним ключем API. 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
Куди йде запит від Anthropic SDK Anthropic SDK надсилає запити до LM Warden: base_url вказує на LM Warden, а X-LMWarden-Key містить ключ LM Warden. LM Warden перевіряє ключ, приймає запит у форматі Anthropic Messages, ставить його в чергу за пріоритетом ключа й передає маршрутизатору реплік, який тримає кожен сеанс на тій репліці, де вже є його кеш (по одній копії моделі на кожен GPU). Окремий шлях веде до api.anthropic.com: туди правила надсилають інші моделі Claude, з вашим власним ключем API. 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
Куди йде запит від Anthropic SDK: два налаштування, які записує Connect, LM Warden посередині, а далі по одній копії моделі на GPU.

Текстовий опис: Anthropic SDK надсилає запити до LM Warden: base_url вказує на LM Warden, а X-LMWarden-Key містить ключ LM Warden. LM Warden перевіряє ключ, приймає запит у форматі Anthropic Messages, ставить його в чергу за пріоритетом ключа й передає маршрутизатору реплік, який тримає кожен сеанс на тій репліці, де вже є його кеш (по одній копії моделі на кожен GPU). Окремий шлях веде до api.anthropic.com: туди правила надсилають інші моделі Claude, з вашим власним ключем API.

Протокол
Anthropic Messages
Підтримка
Повна підтримка

Моделі Claude, названі у ваших правилах, працюють тут; усі інші моделі й шляхи /v1 ідуть до Anthropic під вашим власним обліковим записом. Для режиму «лише локально» обліковий запис Anthropic не потрібен: ключ LM Warden — це api_key, а модель — назва моделі, що обслуговується.

Вимоги

  • Маршрутизацію має бути ввімкнено, і щонайменше одне правило має бути активним.
  • Ключ повинен мати дозвіл на пересилання до Anthropic (May relay).

Налаштування

У консолі Connect записує ці файли з адресою вашого LM Warden, вашим ключем і вибраною моделлю. Тут вони наведені із заповнювачами.

Router: залиште свій ключ Anthropic

base_url — це цей LM Warden; ваш ключ API Anthropic лишається в api_key, а ключ LM Warden іде в заголовках за замовчуванням.

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."}]}'

Лише локально

Ключ LM Warden — це api_key, а модель — назва моделі, що обслуговується.

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."}]}'

Офіційна документація: https://platform.claude.com/docs/en/api/sdks/python (переглянуто 2026-10-04).