Documentation

Placez Sluis devant vos appels de modèles.

Sluis est un proxy compatible OpenAI. Changez une seule ligne, votre base_url, et chaque requête se met à passer par votre politique de résidence avant d'entrer dans le registre infalsifiable. Aucun SDK à apprendre, aucun payload à réécrire. Cinq étapes ci-dessous ; la référence complète se trouve dans la barre latérale.

Premier appel scellé : ~2 minutes. Si votre code parle déjà à OpenAI, vous gardez votre client, vos modèles et votre format de messages tels quels.

Obtenir une clé

Créez une clé dans la Console, section API keys. Chaque clé porte une politique de résidence et un budget : vous pouvez réserver eu-only à la production et eu-uk-us à un bac à sable de recherche sans changer une ligne de code.

# keep it in your environment, never in source
export SLUIS_KEY="sk_live_a91c…"

Pointer base_url vers Sluis

Changez l'hôte. Tout le reste (modèles, streaming, outils, function calling) fonctionne à l'identique, car Sluis expose la même surface d'API.

from openai import OpenAI

client = OpenAI(
    base_url="https://api.sluis.ai/v1",
    api_key=os.environ["SLUIS_KEY"],
)

Envoyer une requête

Appelez-le exactement comme vous appelleriez le fournisseur. Sluis inspecte la requête, la route selon votre politique et renvoie la réponse du modèle avec deux en-têtes supplémentaires qui indiquent où elle a tourné et comment elle a été scellée.

# Anthropic Claude, served from Google's EU multi-region
resp = client.chat.completions.create(
    model="vertex/claude-opus-4-8",
    messages=[{"role": "user", "content": "Summarise this chart…"}],
)
print(resp.choices[0].message.content)
200 OK · scellé en 3 ms
{
  "x-sluis-region": "eu multi-region",
  "x-sluis-provider": "vertex · claude-opus-4-8",
  "x-sluis-decision": "in-region",
  "x-sluis-seal": "#4f9c2a",
  "x-sluis-prev": "#e1b7d9"
}

Définir la résidence par requête

La politique de la clé est le défaut. Surchargez-la pour un appel unique avec un en-tête, utile quand un endpoint traite une classe de données plus stricte que le reste de la clé.

resp = client.chat.completions.create(
    model="mistral/mistral-large-latest",
    messages=msgs,
    extra_headers={"X-Sluis-Residency": "eu-only"},
)
# PHI in the prompt? Sluis routes EU-only and
# blocks with 451 if no EU provider is available.

L'en-tête ne peut que rendre une requête plus stricte que la politique de la clé, jamais plus permissive. Une requête ne peut jamais élargir sa propre résidence. Pour étendre où vos données peuvent aller (par exemple autoriser des fournisseurs américains ou chinois) modifiez la politique de base dans la Console.

Vous souhaitez garder les données personnelles entièrement hors du modèle, pour utiliser n'importe quel modèle sans laisser fuir le moindre nom, numéro ou secret ? Activez Politiques → Protection des données : Sluis remplace les PII et les secrets détectés par des tokens typés stables (ex. «EMAIL_1»), ne transmet que les tokens au fournisseur et restaure les valeurs d'origine dans la réponse. La correspondance n'est jamais persistée. C'est ce qui rend un modèle américain ou chinois sûr à appeler. La bibliothèque de détecteurs complète et la détection des noms sont présentées dans la Référence protection des données ci-dessous.

Vérifier le sceau

Chaque appel ajoute une entrée à la chaîne de hachage. Récupérez la chaîne et revérifiez-la hors ligne, le hash de chaque entrée est sha256(prev_hash + record) : tout champ modifié casse tous les maillons suivants.

curl https://api.sluis.ai/v1/audit/export?from=genesis \
  -H "Authorization: Bearer $SLUIS_KEY" | sluis verify -

# → 18,442 entries · chain intact · head #4f9c2a ✓