Policy
L'oggetto policy che decide cosa un'organizzazione può chiamare, dove può essere eseguita e quanto può spendere, campo per campo.
Una policy è memorizzata per organizzazione e letta a ogni richiesta di inferenza. I valori predefiniti sono quelli sicuri: hosting di proprietà UE o in regione UE, retention zero, solo dati pubblici e interni, una traccia obbligatoria.
Campi
| Campo | Archiviazione | Predefinito | Cosa decide |
|---|---|---|---|
| residency_allowed | JSON array | ["eu_owned_eu_operated","eu_region_of_non_eu_parent"] | Quali classi di hosting può avere un endpoint. Un filtro, non una preferenza: un endpoint fuori dalla lista non viene mai scelto. |
| providers_allow | JSON array | [] — any | Vuoto significa qualsiasi fornitore. Una lista non vuota diventa una lista di autorizzati. |
| providers_deny | JSON array | [] | Fornitori che non possono mai essere usati, controllati prima della lista di autorizzati. |
| models_allow | JSON array | [] — any | Vuoto significa qualsiasi modello. Una lista non vuota diventa una lista di autorizzati. |
| models_deny | JSON array | [] | Modelli che non possono mai essere usati. |
| max_usd_per_1m | REAL, nullable | null — no cap | Prezzo misto massimo per milione di token che un endpoint può costare. Al di sopra, l'endpoint viene rifiutato. |
| max_usd_per_day | REAL, nullable | null — no cap | Tetto di spesa giornaliero per l'organizzazione. Raggiungendolo, risponde 402 budget_exceeded. |
| retention | TEXT | zero | Retention consentita dei prompt. Solo zero è implementato: qualsiasi altro valore consentito dalla policy fa fallire la richiesta invece di memorizzare qualcosa. |
| data_classes_allowed | JSON array | ["public","internal"] | Classi di dati che una richiesta può dichiarare. Una classe fuori da questa lista viene rifiutata. |
| require_trace | INTEGER 0/1 | 1 | Se ogni chiamata di inferenza lascia una riga di traccia. Con retention zero una traccia contiene metadati, mai il corpo del prompt. |
| allow_partner_endpoints | INTEGER 0/1 | 0 | Se possono essere usati endpoint gestiti da una capogruppo non UE. Disattivato per impostazione predefinita. |
| json_logic | JSON, nullable | null | Riservato a una futura regola personalizzata. Nessuno lo legge oggi, quindi non cambia alcuna decisione. |
Quale policy si applica
Una richiesta può indicarne una con llmeu.policy_id. Senza di essa, si applica la policy predefinita dell'organizzazione. Un policy_id che appartiene a un'altra organizzazione viene rifiutato con policy_not_found, perché la ricerca è sempre limitata all'organizzazione a cui appartiene la chiave.
"llmeu": { "policy_id": "the-uuid-from-the-console" }
Poiché la policy predefinita si applica a ogni chiave, la promessa di residenza di un'organizzazione non è qualcosa da cui un chiamante può sottrarsi omettendo un campo.
L'ordine in cui vengono eseguite le regole
Prima il tipo di endpoint — una voce solo catalogo viene rifiutata prima di ogni altra cosa — poi lo stato, poi la classe di residenza e la regione, poi le liste di fornitori e modelli, poi la regola partner, visione, dimensione del contesto e prezzo. La sequenza completa, con il codice di errore prodotto da ogni passo, è nella pagina di routing.
Modifica
Nella console, o con PUT /platform/v1/policies/{id} usando una chiave che ha platform_write. Una modifica si applica alla richiesta successiva; una richiesta già in corso mantiene la policy con cui è iniziata.