Fluxuri de lucru · Apartenență probabilistică Bloom ×
from hashlib import sha256
class Bloom:
def __init__(self, width):
if type(width) is not int or not 1 <= width <= 8192:
raise ValueError("width.range")
self.width, self.bits = width, 0
def positions(self, key):
if not isinstance(key, bytes) or len(key) > 1024:
raise ValueError("key.bytes")
digest = sha256(key).digest()
return [int.from_bytes(digest[i:i+4], "big") % self.width
for i in (0, 4, 8, 12)]
def add(self, key):
for position in self.positions(key):
self.bits |= 1 << position
def maybe_contains(self, key):
return all(self.bits & (1 << p) for p in self.positions(key))
✳Păstrează chei de maximum 1024 octeți într-un filtru Bloom de unu până la 8192 biți.
✓ ModificăriVerifică înainte de aplicare ↗
Ilustrarea spațiului de lucru
Proiect
Verifică inserarea repetată și cheile inserate, demonstrând că rezultatul pozitiv poate fi fals și nu dovedește apartenența.
Verifică înainte de aplicare
Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.
Modele
Configurează un endpoint compatibil OpenAI sau Anthropic cu URL-ul de bază și cheia API, dacă este necesară. Testează conexiunea. Serverul local trebuie să ruleze; instrumentele externe pot transmite date separat.
from hashlib import sha256
class Bloom:
def __init__(self, width):
if type(width) is not int or not 1 <= width <= 8192:
raise ValueError("width.range")
self.width, self.bits = width, 0
def positions(self, key):
if not isinstance(key, bytes) or len(key) > 1024:
raise ValueError("key.bytes")
digest = sha256(key).digest()
return [int.from_bytes(digest[i:i+4], "big") % self.width
for i in (0, 4, 8, 12)]
def add(self, key):
for position in self.positions(key):
self.bits |= 1 << position
def maybe_contains(self, key):
return all(self.bits & (1 << p) for p in self.positions(key))
Spațiu de programare cu AI
Nu lăsa rezultate incerte să devină decizii certe
O verificare preliminară rapidă poate deveni o eroare când apelantul îi tratează răspunsul ca definitiv. BloomFjord este un spațiu de lucru Windows pentru programare cu IA, destinat analizei acestei limite cu un model conectat. Adu structura de date și codul consumator în conversația proiectului, apoi precizează dovezile necesare aplicației înainte de a acționa.
Ca sarcină concretă, cere asistentului să inspecteze un filtru Bloom de apartenență folosit înaintea unei căutări în sursa de referință. Descrie ce trebuie să facă apelantul după o potrivire posibilă și după o absență certă. Cere o propunere care păstrează distincția în nume, ramuri și teste, fără a se baza pe un comentariu lângă un boolean ambiguu.
Verifică integrarea cu cazuri controlate. Include chei inserate și chei absente și verifică dacă o potrivire posibilă urmează în continuare fluxul necesar de confirmare. Inspectează ipotezele validării și configurării înainte de a accepta modificări ale dimensiunii sau calculului hash. Rulează testele proiectului pentru a stabili comportamentul necesar, fără a trata filtrul ca pe o garanție de apartenență exactă.
BloomFjord acceptă conexiuni la endpointuri compatibile OpenAI sau Anthropic. Un model IA cu cenzura eliminată este o opțiune selectabilă unde furnizorul îl oferă, cu contextul, instrumentele acceptate și restricțiile determinate de acea configurație. Spațiul de lucru permite discutarea și inspectarea propunerii, în timp ce contractul aplicației ghidează decizia finală.
Integrarea unei verificări preliminare de apartenență
Ce trebuie să se întâmple după o potrivire posibilă?
Urmează fluxul aplicației de confirmare în sursa de referință când apartenența exactă contează. Cere asistentului să arate ramura în apelant. Un rezultat probabilistic nu trebuie să devină tacit permisiunea de a omite verificarea sau de a trata o înregistrare drept confirmată.
Un caz cu o cheie absentă poate demonstra lipsa rezultatelor fals pozitive?
Nu. Verifică acel caz, nu toate cheile posibile. Folosește testele pentru comportamentul integrării și păstrează incertitudinea documentată. Evită schimbarea numelui API-ului sau a logicii apelantului în moduri care implică apartenență exactă.
De ce să verific codificarea cheilor împreună cu filtrul?
Inserările și căutările trebuie să reprezinte consecvent aceeași cheie logică. Include codul care convertește valorile aplicației în octeți și inspectează diferențele de normalizare sau serializare înainte de a schimba implementarea apartenenței.
Dimensiunea filtrului trebuie schimbată la corectarea apelantului?
Păstrează modificările de configurare separate, dacă nu sunt necesare problemei raportate. Ele pot modifica comportamentul filtrului și consumul de resurse. Cere o explicație și verificări adecvate, fără a accepta o dimensiune nouă ca îmbunătățire incidentală.