Vælg, hvor en forespørgsel kører
Send `provider` med en forespørgsel for at beholde den i EU, i ét land eller hos de inferensleverandører, du navngiver — på alle API'er, inklusive automatisk skift.
Reglerne for dit arbejdsområde gælder for hver forespørgsel. Nogle gange har en enkelt forespørgsel brug for strammere regler. Et eksempel: Din egen kunde i Tyskland har brug for beregning i EU, mens en kunde et andet sted ikke har. Objektet provider sætter den regel for én forespørgsel.
De tre felter
| Felt | Værdi | Effekt |
|---|---|---|
runs_in | "eu", "eea", en landekode ("NO") eller en liste af landekoder (["NO", "SE"]) | Kun endepunkter, der kører der, betjener |
only | Slugs for inferensleverandører | Kun disse leverandørers endepunkter betjener |
ignore | Slugs for inferensleverandører | Disse leverandørers endepunkter betjener aldrig |
region er et andet navn for runs_in med samme betydning. Det er ikke en leverandørs regionskode. For at vælge en af en leverandørs regioner skal du skrive den i model-id'et: creator/model/provider:<code>.
Brug de slugs, som GET /v1/models/{model}/endpoints viser for modellen.
Hvad det garanterer
- Det indsnævrer kun. Forespørgslen kører inden for reglerne for dit arbejdsområde og inden for filteret. Den kan aldrig nå et endepunkt, som reglerne for dit arbejdsområde udelukker.
- Det gælder for endepunktet, ikke modellen.
only: ["ovhcloud-ai-endpoints"]bruger OVHclouds endepunkt, uanset hvilket selskab der er angivet som modellens leverandør. - Korte navne virker også. Nogle leverandører tager også imod et kort navn, for eksempel
ovhforovhcloud-ai-endpoints. Det er det samme korte navn, som bruges ved fastgørelse (baai/bge-m3/ovh), og forespørgselsloggen viser den fulde slug. - Automatisk skift bliver indenfor. Hvis det første endepunkt svigter, prøver Stav modellens næste endepunkt, der passer til filteret. Hvis intet endepunkt passer, får du Stavs egen fejlmeddelelse. Forespørgslen sendes aldrig uden for filteret for at redde den.
- Intet sendes, når intet passer. Du får en afvisning, og forespørgslen når ikke frem til nogen leverandør.
Chat
from openai import OpenAI
client = OpenAI(base_url="https://api.stav.ai/v1", api_key="sk_stav_live_...")
resp = client.chat.completions.create(
model="mistralai/mistral-small-4-119b-2603",
messages=[{"role": "user", "content": "Opsummer denne kontraktbestemmelse."}],
extra_body={"provider": {"runs_in": "eu"}},
)
Dette fungerer på samme måde med model="auto" og med en router. Smart Router skårer kun endepunkter inde i filteret.
Beskeder (Anthropic SDK)
import anthropic
client = anthropic.Anthropic(base_url="https://api.stav.ai", api_key="sk_stav_live_...")
msg = client.messages.create(
model="mistralai/mistral-small-4-119b-2603",
max_tokens=512,
messages=[{"role": "user", "content": "Hej!"}],
extra_body={"provider": {"runs_in": "NO"}},
)
De fleste Claude-endepunkter er global. global ligger ikke i nogen region, så runs_in: "eu" afviser dem, indtil der findes et EU-endepunkt for den model.
Svar
resp = client.responses.create(
model="openai/gpt-5",
input="Hello",
extra_body={"provider": {"ignore": ["azure"]}},
)
Stav fjerner provider fra bodyen. Det bliver aldrig sendt til leverandøren.
Embeddings
emb = client.embeddings.create(
model="baai/bge-m3",
input=["Hovedstaden i Norge er Oslo."],
extra_body={"provider": {"runs_in": "eu"}},
)
Rerank
curl https://api.stav.ai/v1/rerank \
-H "Authorization: Bearer $STAV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "baai/bge-reranker-v2-m3", "query": "Hvor ligger Stavanger?",
"documents": ["Stavanger ligger i Norge.", "Paris ligger i Frankrig."],
"provider": {"runs_in": "eu"}}'
Tale og beslutninger
/v1/audio/speech og /v1/decisions tager imod det samme provider-objekt i JSON-bodyen.
Transskriptioner
/v1/audio/transcriptions bruger en multipart-formular. Send provider som ét formularfelt, der indeholder et JSON-objekt:
curl https://api.stav.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $STAV_API_KEY" \
-F file=@moede.wav \
-F model=mistralai/voxtral-mini-2602 \
-F 'provider={"runs_in": "eu"}'
Felter, der kun gælder for chat
max_price og quantizations filtrerer endepunkterne for en chat-forespørgsel ligesom felterne ovenfor: max_price er en pris per million tokens, og embeddings, rerank, lyd og beslutninger afregnes ikke alle på den måde. sort sorterer en navngiven models endepunkter på chat-API'erne (se Routing hints). Stav afviser alle tre her med 400 unsupported_parameter.## Når forespørgslen afvises
| Du får | Fordi | Hvad du skal gøre |
|---|---|---|
400 invalid_value, param: provider.runs_in | Værdien er ikke eu, eea eller en landekode, eller den blander en region og lande i én liste | Send én region eller en liste over lande |
400 invalid_value, param: provider.only (eller ignore) | En slug er ikke en inferensleverandør | Brug en slug fra GET /v1/models/{model}/endpoints |
400 unsupported_parameter, param: provider.<field> | Feltet understøttes ikke på dette API | Fjern det |
400 invalid_value, param: provider | Model-id'et fastgør en leverandør, som filtret udelukker | Fjern leverandøren fra model-id'et, eller skift filtret |
403 endpoint_not_admissible | Intet endepunkt for modellen passer til filtret sammen med dit arbejdsområdes regler | Skift filtret, eller vælg en model med et endepunkt indeni |
403 provider_blocked | Alle modellens endepunkter er hos en leverandør, som ignore nævner | Fjern den fra ignore |
Kontrollér det i svaret
Hvert svar fortæller, hvor det kørte, så din kode kan kontrollere et runs_in: "eu"-kald uden en ekstra forespørgsel.
| Hvor | Værdi |
|---|---|
X-Stav-Compute-Region header | eu, eea, us, global eller unknown. Sendes altid |
X-Stav-Compute-Countries header | Alle lande, forespørgslen kan have kørt i, f.eks. FI,FR. Sendes når et land er kendt |
usage.compute_region, usage.compute_countries i bodyen | De samme to værdier. Ved streaming på den sidste frame, der indeholder usage |
global betyder, at inferensleverandøren ikke fastgør nogen dataplacering. unknown betyder, at Stav ikke har oplysninger om, hvor endepunktet kører. Det er to forskellige værdier.
Et kald kørte i EU, når regionen er eu, eller når hvert land er et EU-land. Tale svarer med lyd, så det har kun headerne. En transskription i text, srt eller vtt har også kun headerne.
Se hvad der skete
Hver forespørgsel med et filter vises i Dit arbejdsområde → Overvåg → Forespørgselslog. Åbn forespørgslen for at se filtret, det endepunkt der betjente den, og det land den kørte i.## Næste skridt
- Håndhæv et bundniveau for suverænitet — reglen for arbejdsområdet, som dette indsnævrer
- Suverænitet
- Routing-hints