Velg hvor en forespørsel skal kjøre
Send `provider` med en forespørsel for å beholde den i EU, i ett enkelt land eller hos de inferensleverandørene du oppgir — på alle API-er, inkludert ved automatisk bytte.
Reglene i arbeidsområdet ditt gjelder for hver forespørsel. Noen ganger trenger én enkelt forespørsel strengere regler. Et eksempel: din egen kunde i Tyskland krever beregning i EU, mens en kunde et annet sted ikke gjør det. Objektet provider setter den regelen for én forespørsel.
De tre feltene
| Felt | Verdi | Effekt |
|---|---|---|
runs_in | "eu", "eea", en landskode ("NO") eller en liste med landskoder (["NO", "SE"]) | Bare endepunkter som kjører der, betjener forespørselen |
only | Sluger for inferensleverandører | Bare endepunkter fra disse leverandørene betjener forespørselen |
ignore | Sluger for inferensleverandører | Endepunkter fra disse leverandørene brukes aldri |
region er et annet navn for runs_in, med samme betydning. Det er ikke en av leverandørens egne regionkoder. For å velge en av en leverandørs regioner, legger du den inn i modell-ID-en: creator/model/provider:<code>.
Bruk slugene som GET /v1/models/{model}/endpoints viser for modellen.
Hva det garanterer
- Det kan bare snevre inn. Forespørselen kjører innenfor både reglene for arbeidsområdet ditt og filteret du setter. Den kan aldri nå et endepunkt som er ekskludert i arbeidsområdets policy.
- Det gjelder for endepunktet, ikke modellen.
only: ["ovhcloud-ai-endpoints"]bruker OVHclouds endepunkt, uavhengig av hvilket selskap som er oppført som modellens leverandør. - Kortnavn fungerer også. Noen leverandører har også et kortnavn, for eksempel
ovhforovhcloud-ai-endpoints. Dette er det samme kortnavnet som brukes når du låser en modell (baai/bge-m3/ovh), og forespørselsloggen viser den fulle slugen. - Automatisk bytte skjer innenfor filteret. Hvis det første endepunktet svikter, prøver Stav modellens neste endepunkt som treffer filteret. Hvis ingen endepunkter treffer, får du en feilmelding fra Stav selv. Forespørselen sendes aldri utenfor filteret for å redde den.
- Ingenting sendes når ingenting treffer. Forespørselen avvises, og den når aldri noen 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": "Oppsummer dette kontraktsvilkåret."}],
extra_body={"provider": {"runs_in": "eu"}},
)
Dette fungerer på samme måte med model="auto" og med en router. Smart Router skårer bare endepunkter som er innenfor filteret.
Messages (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": "Hei!"}],
extra_body={"provider": {"runs_in": "NO"}},
)
De fleste Claude-endepunkter er global. global tilhører ingen region, så runs_in: "eu" avviser dem til det finnes et endepunkt i EU for den modellen.
Responses
resp = client.responses.create(
model="openai/gpt-5",
input="Hello",
extra_body={"provider": {"ignore": ["azure"]}},
)
Stav fjerner provider fra forespørselen. Det sendes aldri 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": "Where is Stavanger?",
"documents": ["Stavanger is in Norway.", "Paris is in France."],
"provider": {"runs_in": "eu"}}'
Tale og beslutninger
/v1/audio/speech og /v1/decisions tar imot det samme provider-objektet i JSON-innholdet.
Transkripsjoner
/v1/audio/transcriptions bruker et multipart-skjema. Send provider som ett felt i skjemaet som inneholder et JSON-objekt:
curl https://api.stav.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $STAV_API_KEY" \
-F file=@meeting.wav \
-F model=mistralai/voxtral-mini-2602 \
-F 'provider={"runs_in": "eu"}'
Felt som bare gjelder for chat
max_price og quantizations filtrerer endepunktene for en chat-forespørsel, på samme måte som feltene over: max_price er en pris per million token, og det er ikke alle embeddings, rerank, lyd og beslutninger som faktureres på den måten. sort sorterer endepunktene til en navngitt modell bare i Chat Completions-APIet (se Ruting-hint). Stav avviser alle disse tre der med 400 unsupported_parameter.## Når forespørselen avvises
| Du får | Fordi | Dette gjør du |
|---|---|---|
400 invalid_value, param: provider.runs_in | Verdien er ikke eu, eea eller en landskode, eller den blander en region og land i samme liste | Send én region eller en liste med land |
400 invalid_value, param: provider.only (eller ignore) | En slug er ikke en inferensleverandør | Bruk en slug fra GET /v1/models/{model}/endpoints |
400 unsupported_parameter, param: provider.<field> | Feltet støttes ikke i dette API-et | Fjern det |
400 invalid_value, param: provider | Modell-ID-en låser en leverandør som filteret ekskluderer | Fjern leverandøren fra modell-ID-en, eller endre filteret |
403 endpoint_not_admissible | Ingen av modellens endepunkter slipper gjennom filteret sammen med reglene for arbeidsområdet ditt | Endre filteret, eller velg en modell som har et endepunkt som treffer det |
403 provider_blocked | Alle modellens endepunkter tilhører en leverandør som er oppgitt i ignore | Fjern den fra ignore |
Kontroller i svaret
Hvert svar oppgir hvor det ble kjørt, slik at koden din kan kontrollere et runs_in: "eu"-kall uten en ekstra forespørsel.
| Gjelder for | Verdi |
|---|---|
X-Stav-Compute-Region-header | eu, eea, us, global eller unknown. Sendes alltid |
X-Stav-Compute-Countries-header | Alle land forespørselen kan ha blitt kjørt i, f.eks. FI,FR. Sendes når landet er kjent |
usage.compute_region, usage.compute_countries i body | De samme to verdiene. Ved strømming sendes de i den siste rammen som inneholder usage |
global betyr at inferensleverandøren ikke har låst noen datalokasjon. unknown betyr at Stav ikke har informasjon om hvor endepunktet drives. Dette er to forskjellige verdier.
Et kall ble kjørt i EU når regionen er eu, eller når alle landene er EU-stater. Tale svarer med lyd, så der finnes bare headerne. En transkripsjon i text, srt eller vtt har også bare headerne.
Se hva som skjedde
Alle forespørsler med et filter vises i Arbeidsområdet ditt → Overvåk → Forespørselslogg. Åpne forespørselen for å se filteret, endepunktet som betjente den, og landet den ble kjørt i.
Neste steg
- Slik setter du et suverenitetsgulv – regelen for arbeidsområdet som dette filteret snevrer inn
- Suverenitet
- Ruting-hint