Use this file to discover all available pages before exploring further.
Blindfold is provider-agnostic. The pattern is always the same: tokenize sensitive data, send safe text to your AI provider, then detokenize the response to restore original values.
from blindfold import Blindfoldfrom openai import OpenAIbf = Blindfold() # Free local mode, or add api_key="..." for NLPopenai = OpenAI()# Tokenize PIIsafe = bf.tokenize("My name is John Smith, email john@acme.com")# Send to GPT — PII never reaches OpenAIresponse = openai.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": safe.text}])# Restore original dataresult = bf.detokenize(response.choices[0].message.content, safe.mapping)print(result.text)
import { Blindfold } from '@blindfold/sdk';import OpenAI from 'openai';const bf = new Blindfold(); // Free local modeconst openai = new OpenAI();// Tokenize PIIconst safe = await bf.tokenize("My name is John Smith, email john@acme.com");// Send to GPT — PII never reaches OpenAIconst response = await openai.chat.completions.create({ model: 'gpt-4o', messages: [{ role: 'user', content: safe.text }]});// Restore original dataconst result = bf.detokenize(response.choices[0].message.content, safe.mapping);console.log(result.text);
import dev.blindfold.sdk.Blindfold;Blindfold bf = new Blindfold(); // Free local mode// Tokenize PIIvar safe = bf.tokenize("My name is John Smith, email john@acme.com");// Send to GPT — PII never reaches OpenAIString aiResponse = callOpenAI(safe.getText());// Restore original datavar result = bf.detokenize(aiResponse, safe.getMapping());System.out.println(result.getText());
from blindfold import Blindfoldimport anthropicbf = Blindfold()client = anthropic.Anthropic()safe = bf.tokenize("My name is John Smith, email john@acme.com")response = client.messages.create( model="claude-sonnet-4-20250514", max_tokens=1024, messages=[{"role": "user", "content": safe.text}])result = bf.detokenize(response.content[0].text, safe.mapping)print(result.text)
import { Blindfold } from '@blindfold/sdk';import Anthropic from '@anthropic-ai/sdk';const bf = new Blindfold();const anthropic = new Anthropic();const safe = await bf.tokenize("My name is John Smith, email john@acme.com");const response = await anthropic.messages.create({ model: 'claude-sonnet-4-20250514', max_tokens: 1024, messages: [{ role: 'user', content: safe.text }]});const result = bf.detokenize(response.content[0].text, safe.mapping);console.log(result.text);
import dev.blindfold.sdk.Blindfold;Blindfold bf = new Blindfold();var safe = bf.tokenize("My name is John Smith, email john@acme.com");// Send to Claude via your preferred Anthropic Java clientString aiResponse = callClaude(safe.getText());var result = bf.detokenize(aiResponse, safe.getMapping());System.out.println(result.getText());
from blindfold import Blindfoldfrom google import genaibf = Blindfold()client = genai.Client()safe = bf.tokenize("My name is John Smith, email john@acme.com")response = client.models.generate_content( model="gemini-2.5-flash", contents=safe.text)result = bf.detokenize(response.text, safe.mapping)print(result.text)
import { Blindfold } from '@blindfold/sdk';import { GoogleGenAI } from '@google/genai';const bf = new Blindfold();const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });const safe = await bf.tokenize("My name is John Smith, email john@acme.com");const response = await ai.models.generateContent({ model: 'gemini-2.5-flash', contents: safe.text});const result = bf.detokenize(response.text, safe.mapping);console.log(result.text);
import { Blindfold } from '@blindfold/sdk';import { generateText } from 'ai';import { openai } from '@ai-sdk/openai';const bf = new Blindfold();const safe = await bf.tokenize("My name is John Smith, email john@acme.com");const { text } = await generateText({ model: openai('gpt-4o'), prompt: safe.text});const result = bf.detokenize(text, safe.mapping);console.log(result.text);
The pattern is always the same regardless of provider:
from blindfold import Blindfoldbf = Blindfold() # Free local mode, or add api_key="..." for NLP# 1. Tokenize PIIsafe = bf.tokenize(user_input)# "Hi, I'm John Smith" → "Hi, I'm <Person_1>"# 2. Send to any AI providerresponse = your_ai_provider.chat(safe.text)# 3. Restore original dataresult = bf.detokenize(response, safe.mapping)
Quickstart
Start protecting PII in 5 minutes — install the SDK, no signup required for local mode