Håndhev et minimumsnivå for suverenitet
Et trinnvis oppsett for et regulert system – Reach-regler for arbeidsområdet, en dedikert router, tester som beviser at forespørsler avvises, og forespørselsloggen som dokumentasjon.
Kravet lyder vanligvis slik: inferens for dette systemet skal ikke være underlagt utlevering til tredjeland, og du må kunne dokumentere det per forespørsel. Det er to oppgaver: stopp trafikken, og bevis deretter at den ble stoppet.
Lagene
| Lag | Hvor | Gjelder for |
|---|---|---|
| Minimumsnivå for arbeidsområdet, region, ZDR, ingen trening | Arbeidsområdet ditt → Styr → Nøkkelpolicyer → Reach | Hver forespørsel, rutet eller låst |
| Blokkerte leverandørland | Arbeidsområdet ditt → Koble til → Routere (innstillinger for standardrouteren) | Arbeidsområdet |
| Blokkerte inferensleverandører | Arbeidsområdet ditt → Styr → Nøkkelpolicyer → Reach | Hver forespørsel i hvert API; en låst eller navngitt forespørsel avvises med provider_blocked |
| Minimumsnivå for routeren, region, ZDR, ingen trening, tillatte modeller | Arbeidsområdet ditt → Koble til → Routere → en navngitt router | Forespørsler til den routeren |
X-Stav-Sovereignty-Level + forespørselslogg | Svar, Arbeidsområdet ditt → Overvåk → Forespørselslogg | Hver forespørsel |
Innstillinger kan bare strammes inn. En router kan aldri gi løsere regler enn arbeidsområdet.
Trinn 1 – Velg nivået
| Krav | Minimumsnivå |
|---|---|
| Inferens i EU/EØS | L1 |
| Pluss sertifisert drift i EU/EØS | L2 |
| Ingen tredjelandskontroll over operatøren | L3 |
| Full suverenitet | L4 |
De fleste regulerte oppgaver havner på L3. Se Suverenitet. Sjekk Arbeidsområdet ditt → Koble til → Inferensleverandører for å se hva som er tilgjengelig på det nivået før du forplikter deg til det i en kontrakt.
Trinn 2 – Sett grensen for arbeidsområdet
I Arbeidsområdet ditt → Styr → Nøkkelpolicyer → Reach:
- Minimumsnivå for suverenitet: nivået ditt.
- Beregningsregion: bare EU, eller EU + EØS, hvis inferens må skje der.
- Bare ingen datalagring: på hvis leverandøren ikke skal beholde noe. Dette begrenser kandidatgruppen til endepunkter med bekreftet ZDR.
- Ingen trening på dataene våre: la stå på (standardverdien).
- Blokkerte inferensleverandører: legg til selskaper som aldri skal betjene deg. Rutete forespørsler går utenom; en låst forespørsel avvises.
I Arbeidsområdet ditt → Koble til → Routere, under innstillinger for standardrouteren, legger du til land du ikke kan godta, i Blokkerte leverandørland.
Dette gjelder også for låste modeller. En låst modell uten endepunkt på minimumsnivået får 403 model_below_sovereignty_floor.
Trinn 3 – Gi arbeidsbelastningen sin egen router
Opprett en router under Arbeidsområdet ditt → Koble til → Routere:
- Nedre grense, region, ZDR, ingen trening på dataene dine: samme eller strengere enn for arbeidsområdet.
- Tillatte modeller: de få du har godkjent.
Bruk den via adressen:
resp = client.chat.completions.create(
model="@acme/regulated",
messages=[{"role": "user", "content": case_text}],
)
Å endre hvilke modeller som er godkjent, er nå en endring i arbeidsområdet ditt, ikke en ny utrulling.
Trinn 4 – Test begge retninger
Positiv test – nivået er som forventet:
raw = client.chat.completions.with_raw_response.create(
model="@acme/regulated",
messages=[{"role": "user", "content": "ping"}],
)
assert raw.headers.get("X-Stav-Sovereignty-Level") in ("L3", "L4")
Negativ test – reglene avviser forespørselen. På en midlertidig router setter du nedre grense til L4 med en liste over tillatte modeller som ingen modeller på L4 oppfyller:
import openai
try:
client.chat.completions.create(
model="@acme/floor-test",
messages=[{"role": "user", "content": "ping"}],
)
raise AssertionError("expected the floor to refuse")
except openai.NotFoundError as e:
assert e.body["error"]["code"] == "no_eligible_models"
En blokkert leverandør avviser på samme måte. Lås et endepunkt til den:
try:
client.chat.completions.create(
model="mistral/mistral-large/azure", # an endpoint on a provider you blocked
messages=[{"role": "user", "content": "ping"}],
)
raise AssertionError("expected the provider block to refuse")
except openai.PermissionDeniedError as e:
assert e.body["error"]["code"] == "provider_blocked"
Behold den positive testen i produksjonskoden. Reglene leses bak en kortvarig buffer. Hvis denne lesingen svikter, avviser Stav forespørselen med 503 policy_unavailable. Kravene til nedre grense, region og ZDR fjernes aldri for å slippe en forespørsel gjennom (forespørselen avvises). Headeren er beviset for hver forespørsel. Behandle en manglende header, L0 eller UNCLASSIFIED som en feil.
Trinn 5 – Legg frem bevisene
Hver rad i forespørselsloggen under Arbeidsområdet ditt → Overvåk → Forespørselslogg registrerer modellen, inferensleverandøren, suverenitetsnivået, beregningsland og -region, fakta om ZDR og trening, token og kostnad. Faktaene stemples når forespørselen kjører, slik at senere endringer i katalogen ikke skriver om historien. Avvisninger loggføres også, med navnet på regelen, for eksempel Blocked by workspace policy: sovereignty floor L3.
Bruk én API-nøkkel per arbeidsbelastning, slik at filtrering på nøkkel filtrerer på arbeidsbelastning.
Begrensninger
- Ikke en databehandleravtale. Region, ZDR og trening er leverandørens uttalelser med en lagret kilde. Behold din egen databehandleravtale og liste over underdatabehandlere.
- Et ukjent faktum holder et endepunkt utenfor. Et endepunkt der fakta mangler kilde, brukes ikke, så færre modeller kan bli godkjent. Hvis en modell mangler, sjekk endepunktene dens på modellsiden.
- Nivåene er Stavs daterte vurdering, ikke en regulatorisk godkjenning.