Dokumentacja

Postaw Sluis przed swoimi wywołaniami modeli.

Sluis to proxy zgodne z OpenAI. Zmień jedną linijkę, swoje base_url, a każde żądanie zaczyna płynąć przez Twoją politykę rezydencji do rejestru odpornego na manipulacje. Żadnego SDK do nauki, żadnych payloadów do przepisywania. Pięć kroków poniżej; pełna referencja znajduje się w pasku bocznym.

Czas do pierwszego zapieczętowanego wywołania: ~2 minuty. Jeśli Twój kod już rozmawia z OpenAI, zachowujesz swojego klienta, swoje modele i format wiadomości dokładnie takimi, jakie są.

Zdobądź klucz

Utwórz klucz w Konsoli, w sekcji API keys. Każdy klucz niesie politykę rezydencji i budżet, więc możesz przypisać eu-only wszystkiemu, co osobowe, a eu-uk-us ogólnemu redagowaniu, bez zmiany ani linijki kodu.

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

Wskaż base_url na Sluis

Podmień host. Wszystko dalej (modele, streaming, narzędzia, function calling) działa bez zmian, bo Sluis proxuje tę samą powierzchnię API.

from openai import OpenAI

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

Wyślij żądanie

Wywołaj dokładnie tak, jak wywołujesz dostawcę. Sluis sprawdza żądanie, routuje je przez Twoją politykę i zwraca odpowiedź modelu z dodatkowymi nagłówkami x-sluis, które mówią, gdzie działało i jak zostało zapieczętowane.

# 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 · zapieczętowane w 3 ms
{
  "x-sluis-route": "vertex/claude-opus-4-8",
  "x-sluis-model": "vertex/claude-opus-4-8",
  "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"
}

Ustaw rezydencję na poziomie żądania

Polityka klucza jest domyślna. Nadpisz ją dla pojedynczego wywołania nagłówkiem, przydatne, gdy jeden endpoint obsługuje bardziej rygorystyczną klasę danych niż reszta klucza, czy to PHI w procesie objętym HIPAA, czy szczególne kategorie danych w rozumieniu RODO.

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.

Nagłówek może uczynić żądanie tylko bardziej rygorystycznym niż polityka klucza, nigdy luźniejszym. Żądanie nigdy nie może poszerzyć własnej rezydencji. By rozszerzyć, dokąd mogą trafiać dane (na przykład zezwolić na dostawców z USA lub Chin) zmień politykę bazową w Konsoli.

Chcesz całkowicie odseparować dane osobowe od modelu, by używać dowolnego modelu bez ujawnienia ani jednego nazwiska, numeru czy sekretu? Włącz Zasady → Ochrona danych: Sluis zastępuje wykryte PII i sekrety stabilnymi typizowanymi tokenami (np. «EMAIL_1»), przekazuje do dostawcy wyłącznie tokeny, a w odpowiedzi przywraca oryginalne wartości. Mapowanie nie jest nigdy utrwalane. To właśnie sprawia, że wywołanie dowolnego modelu zewnętrznego dostawcy jest bezpieczne. Pełną bibliotekę detektorów oraz wykrywanie nazwisk opisano w Referencji ochrony danych poniżej.

Zweryfikuj pieczęć

Każde wywołanie dopisuje wpis do łańcucha hashy. Pobierz łańcuch i zweryfikuj go ponownie offline, hash każdego wpisu to sha256(prev_hash + record), więc każde zmienione pole łamie wszystkie kolejne ogniwa.

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

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