LM Warden

Anthropic SDK, आपके अपने GPU पर।

आपकी Anthropic API कुंजी api_key में रहती है; warden कुंजी अपने अलग हेडर में जाती है।

Anthropic SDK का अनुरोध कहाँ जाता है Anthropic SDK अपने अनुरोध LM Warden को भेजता है, जिसमें base_url warden पर सेट है और X-LMWarden-Key में 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 warden पर सेट है और X-LMWarden-Key में 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 की लिखी दो सेटिंग, बीच में warden, फिर हर GPU पर मॉडल की एक कॉपी।

शब्दों में: Anthropic SDK अपने अनुरोध LM Warden को भेजता है, जिसमें base_url warden पर सेट है और X-LMWarden-Key में warden की कुंजी है। LM Warden कुंजी जाँचता है, Anthropic Messages समझता है, कुंजी की प्राथमिकता के हिसाब से अनुरोध को क़तार में रखता है और उसे रेप्लिका राउटर को सौंपता है। राउटर हर सेशन को उसी रेप्लिका पर भेजता है जिसके पास उसका कैश पहले से है; हर GPU पर मॉडल की एक अलग कॉपी चलती है। एक अलग रास्ता सीधे api.anthropic.com तक जाता है: नियम बाकी Claude मॉडल के अनुरोध आपकी अपनी API कुंजी से वहाँ भेजते हैं।

प्रोटोकॉल
Anthropic Messages
सपोर्ट
पूरा सपोर्ट

जिन Claude मॉडल के नाम आपके नियमों में हैं, वे यहीं चलते हैं; बाकी हर मॉडल और /v1 पाथ आपके अपने लॉगिन से Anthropic को जाता है। सिर्फ़-लोकल मोड के लिए Anthropic अकाउंट नहीं चाहिए: warden कुंजी ही api_key है, और मॉडल के लिए वही नाम दें जिससे warden उसे उपलब्ध कराता है।

आवश्यकताएँ

  • रूटिंग चालू होनी चाहिए, और कम से कम एक नियम सक्षम होना चाहिए।
  • कुंजी को Anthropic तक रिले करने की अनुमति होनी चाहिए (May relay)।

सेटअप

कंसोल में Connect ये फ़ाइलें आपके warden के पते, आपकी कुंजी और आपके चुने हुए मॉडल के साथ लिखता है। यहाँ ये प्लेसहोल्डर के साथ दी गई हैं।

Router: अपनी Anthropic कुंजी रखें

base_url यह warden है; आपकी Anthropic API कुंजी api_key में रहती है और 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."}]}'

सिर्फ़ लोकल

warden कुंजी ही api_key है, और मॉडल के लिए वही नाम दें जिससे warden उसे उपलब्ध कराता है।

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 की स्थिति)।