Ponga Sluis delante de sus llamadas a modelos.
Sluis es un proxy compatible con OpenAI. Cambie una sola línea, su base_url, y cada petición empieza a fluir por su política de residencia hacia el registro a prueba de manipulaciones. Sin SDK que aprender, sin payloads que reescribir. Cinco pasos a continuación; la referencia completa está en la barra lateral.
Tiempo hasta la primera llamada sellada: ~2 minutos. Si su código ya habla con OpenAI, conserva su cliente, sus modelos y su formato de mensajes exactamente como están.
Obtener una clave
Cree una clave en la Consola, en API keys. Cada clave lleva una política de residencia y un presupuesto, así que puede reservar eu-only para todo lo personal y eu-uk-us para redacción general sin cambiar nada de código.
# keep it in your environment, never in source export SLUIS_KEY="sk_live_a91c…"
Apuntar base_url a Sluis
Cambie el host. Todo lo demás (modelos, streaming, herramientas, function calling) funciona igual, porque Sluis hace de proxy de la misma superficie de API.
from openai import OpenAI client = OpenAI( base_url="https://api.sluis.ai/v1", api_key=os.environ["SLUIS_KEY"], )
import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.sluis.ai/v1", apiKey: process.env.SLUIS_KEY, });
// no SDK required — reqwest = { version = "0.12", features = ["json"] } let client = reqwest::Client::new(); let base = "https://api.sluis.ai/v1"; // ← the only change let key = std::env::var("SLUIS_KEY")?;
curl https://api.sluis.ai/v1/chat/completions \ -H "Authorization: Bearer $SLUIS_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "mistral/mistral-large-latest", "messages": [...] }'
Enviar una petición
Llame exactamente como llamaría al proveedor. Sluis inspecciona la petición, la enruta según su política, la sella en la cadena de auditoría y devuelve la respuesta del modelo sin cambios. Las llamadas a un alias sluis/* divulgan la ruta concreta en cabeceras de respuesta x-sluis.
# 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)
// Anthropic Claude, served from Google's EU multi-region const resp = await client.chat.completions.create({ model: "vertex/claude-opus-4-8", messages: [{ role: "user", content: "Summarise this chart…" }], }); console.log(resp.choices[0].message.content);
// Anthropic Claude, served from Google's EU multi-region let resp: serde_json::Value = client .post(format!("{base}/chat/completions")) .bearer_auth(&key) .json(&serde_json::json!({ "model": "vertex/claude-opus-4-8", "messages": [{ "role": "user", "content": "Summarise this chart…" }] })) .send().await? .json().await?; println!("{}", resp["choices"][0]["message"]["content"]);
# response headers on a sluis/* alias call { "x-sluis-route": "sluis/auto", "x-sluis-model": "vertex/claude-opus-4-8" }
Fijar la residencia
La residencia es política de la organización, fijada en la Consola (Políticas → Residencia) y aplicada en el despacho de cada petición. El valor por defecto solo permite la jurisdicción UE: una petición que alcanzaría un proveedor fuera del conjunto permitido se rechaza con 451 antes de que salga un solo byte, ya sea PHI en un flujo regulado por HIPAA o categorías especiales del RGPD.
# default policy is EU-only — a US provider is refused at dispatch curl https://api.sluis.ai/v1/chat/completions \ -H "Authorization: Bearer $SLUIS_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "openai/gpt-5.6", "messages": [...] }' # → 451 permission_error # "blocked by residency policy: provider jurisdiction US is not in the allowed set [EU]"
Ampliar adónde pueden ir los datos es siempre una decisión explícita y registrada: la Consola exige reconocer las condiciones de transferencia antes de desbloquear proveedores de EE. UU. o China, y el cambio queda en el registro de auditoría.
¿Necesita mantener los datos personales completamente fuera del modelo, para usar cualquier modelo sin filtrar ni un solo nombre, número o secreto? Active Políticas → Protección de datos: Sluis reemplaza los PII y secretos detectados con tokens tipados estables (p. ej. «EMAIL_1»), reenvía solo los tokens al proveedor y restaura los valores originales en la respuesta. La correspondencia nunca se persiste. Eso es lo que hace seguro llamar a cualquier modelo de terceros. La biblioteca completa de detectores y la detección de nombres se tratan en la referencia de Protección de datos más abajo.
Verificar el sello
Cada llamada añade una entrada a la cadena de hashes. Descargue la cadena y vuelva a verificarla sin conexión, el hash de cada entrada es sha256(prev_hash + record), de modo que cualquier campo alterado rompe todos los eslabones posteriores.
curl https://api.sluis.ai/v1/audit/export?from=genesis \ -H "Authorization: Bearer $SLUIS_KEY" | sluis verify - # → 18,442 entries · chain intact · head #4f9c2a ✓