Migrering af Anthropic SDK
Ret Anthropic SDK eller Claude Code mod Stav. Claude-modeller sendes videre til Anthropic uændret; alle andre modeller i kataloget oversættes, og ræsonnering følger med.
Stav betjener Anthropic Messages-API'et på POST /v1/messages samt POST /v1/messages/count_tokens.
Skift to linjer
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["STAV_API_KEY"], # sk_stav_live_...
base_url="https://api.stav.ai", # ingen /v1 — SDK'et tilføjer det
)
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.STAV_API_KEY,
baseURL: "https://api.stav.ai",
});
En base-URL, der slutter på /v1, sender forespørgsler til /v1/v1/messages, hvilket giver en 404-fejl.
Stav accepterer nøglen som x-api-key (det, som SDK'et sender) eller Authorization: Bearer.
Modelnavne
Brug anthropic/claude-sonnet-4-5 eller blot claude-sonnet-4-5. Tidsstemplede modelversioner (claude-sonnet-4-5-20250929) og -latest-navne virker også. auto, en router (@acme/eu-only) og alle andre modeller i kataloget kan også bruges.
To veje, ét endepunkt
Claude-modeller — sendes videre til Anthropic. Forespørgslen sendes til Anthropics API præcis som modtaget: thinking, cache_control, serverværktøjer, betafunktioner og nye felter fungerer alle. Dette gælder, når du navngiver en Claude-model, og når auto eller en router vælger en.
Alle andre modeller — oversættes til chat completions og sendes videre som /v1/chat/completions.
| Funktion | På en model, der ikke er fra Claude |
|---|---|
tools med input_schema, tool_choice, tool_result | Følger med |
| Billeder | Følger med; med auto eller en router medtages kun modeller med billedforståelse |
thinking | Oversættes til et reasoning_effort-niveau |
cache_control | Fjernes, angives i X-Stav-Dropped-Params |
Serverværktøjer (web_search_20250305, bash_20250124, …) | Fjernes, hver type angives i X-Stav-Dropped-Params (og tool_choice, hvis den pegede på et) |
At fjerne cache_control koster penge, men påvirker ikke resultatet, så kaldet lykkes stadig. Hvis dit arbejde afhænger af promptcaching, skal du bruge en Claude-model og holde øje med den header.
En Claude-model er ikke suveræn. Den kører hos Anthropic. For inferens drevet i EU skal du bruge en model, der ikke er fra Claude, eller en router med et minimumskrav til suverænitet. Se Suverænitet.## Udvidet ræsonnering
msg = client.messages.create(
model="anthropic/claude-sonnet-4-5",
max_tokens=8192,
thinking={"type": "enabled", "budget_tokens": 4096},
messages=[{"role": "user", "content": "Plan a Postgres 14 → 17 migration."}],
)
for block in msg.content:
if block.type == "thinking":
print("[reasoning]", block.thinking)
På Claude-modeller validerer Anthropic budget_tokens (mindst 1024, under max_tokens), og Stav returnerer deres fejl, som den er. Se Ræsonnering.
Promptcaching
msg = client.messages.create(
model="anthropic/claude-sonnet-4-5",
max_tokens=1024,
system=[{
"type": "text",
"text": LONG_SYSTEM_PROMPT,
"cache_control": {"type": "ephemeral"},
}],
messages=messages,
)
print(msg.usage.cache_read_input_tokens)
Optælling af tokens
count = client.messages.count_tokens(
model="anthropic/claude-sonnet-4-5",
system=LONG_SYSTEM_PROMPT,
tools=TOOLS,
messages=messages,
)
print(count.input_tokens)
Trækkes ikke fra saldoen. For Claude-modeller foretager Anthropic optællingen. For andre modeller er det et lokalt estimat fra modellens tokenizer.
Adgange
En nøgle uden adgange kan kalde alt. En nøgle med begrænset adgang skal bruge inference:messages til begge endepunkter.
Claude Code
export ANTHROPIC_BASE_URL="https://api.stav.ai"
export ANTHROPIC_AUTH_TOKEN="sk_stav_live_..."
Claude Code sender derefter hver runde til /v1/messages på Stav, og det trækkes fra din Stav-tegnebog. Med en Claude-model fungerer alt som før. Med en model, der ikke er fra Claude, fungerer værktøjer, streaming og ræsonnering; cache_control fjernes som beskrevet ovenfor.
Tjekliste til migrering
- Opret en
sk_stav_test_-nøgle. - Sæt
base_urltilhttps://api.stav.ai— uden/v1. - Kør dine test mod en Claude-model. De bør gå igennem uden ændringer.
- Prøv en model, der ikke er fra Claude, eller
auto, og tjekX-Stav-Dropped-Params. - Sæt et minimum for suverænitetsniveau i dit arbejdsområde.
- Rul ud med en
sk_stav_live_-nøgle.
Ikke tilgængeligt
- Files API, Message Batches API, Models API på Anthropic-stien. Brug
GET /v1/modelsmed en klient i OpenAI-stil for at se listen over modeller. - Serverværktøjer og computerbrug på modeller, der ikke er fra Claude.