Inicio / Prompt Shield / Spring AI
Prompt Shield ofusca datos sensibles (DNI, email, teléfonos, IBAN) y desde la versión 1.1.1 también claves de API de 16 servicios populares (OpenAI, Anthropic, AWS, GitHub, Stripe...) antes de enviarlos a la IA, y restaura los valores originales en la respuesta.
Input: "Mi DNI es 12345678A y mi email es juan@example.com"
→ Se envía a la IA: "Mi DNI es ~REDACTED:DNI#a1b2c3~ y mi email es ~REDACTED:EMAIL#d4e5f6~"
→ Respuesta IA: "El DNI ~REDACTED:DNI#a1b2c3~ es válido"
→ Respuesta final: "El DNI 12345678A es válido"
spring:
ai:
openai:
api-key: ${OPENAI_API_KEY}
chat:
options:
model: gpt-4o-mini
prompt-shield:
service-keys-enabled: true
advisor:
enabled: true
inject-system-prompt: true
restore-on-response: true @RestController
@RequestMapping("/api/ai")
public class AiController {
private final ChatClient chatClient;
public AiController(ChatClient.Builder builder, PromptShieldAdvisor advisor) {
this.chatClient = builder
.defaultAdvisors(advisor)
.build();
}
@PostMapping("/chat")
public AiResponse chat(@RequestBody AiRequest request) {
String response = chatClient.prompt()
.user(request.message())
.call()
.content();
return new AiResponse(response);
}
} export OPENAI_API_KEY=tu-api-key
cd prompt-shield-example
mvn spring-boot:run
# En otra terminal:
curl -X POST http://localhost:8080/api/ai/chat \
-H "Content-Type: application/json" \
-d '{"message": "Mi DNI es 12345678A"}' ¿Quieres el contexto completo (por qué existe, tipos de datos soportados, claves de API)? Lee el artículo completo de Prompt Shield.