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))
✳En fazla 1024 baytlık anahtarları bir ile 8192 bit arasındaki Bloom filtresinde saklayın.
✓ DeğişikliklerUygulamadan önce inceleyin ↗
Çalışma alanı çizimi
Proje
Tekrarlı eklemeyi ve eklenmiş anahtarları sınayın; olumlu sonucun yanlış olabileceğini ve üyeliği kanıtlamadığını gösterin.
Uygulamadan önce inceleyin
Gerçek davranışı beklenen sonuçla karşılaştırın. Bir kontrol başarısız olursa yeni değişikliklerden önce nedenini araştırın.
Modeller
Temel URL ve gerekiyorsa API anahtarıyla OpenAI uyumlu veya Anthropic endpoint yapılandırın. Bağlantıyı test edin. Yerel model sunucusu çalışıyor olmalıdır; uzak araçlar ayrıca veri aktarabilir.
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))
Yapay zekâ ile kod çalışma alanı
Belirsiz sonuçların kesin kararlara dönüşmesini önleyin
Çağıran kod yanıtını nihai saydığında hızlı bir ön kontrol hataya dönüşebilir. BloomFjord, bağlı modelle bu sınırı incelemek için bir Windows yapay zekâ kodlama çalışma alanıdır. Veri yapısını ve onu kullanan kodu proje görüşmesine getirin; ardından uygulamanın eylemden önce hangi kanıta ihtiyaç duyduğunu belirtin.
Somut görev olarak asistandan kesin sonuç veren aramadan önce kullanılan Bloom üyelik filtresini incelemesini isteyin. Olası eşleşmeden ve kesin yokluktan sonra çağıran kodun ne yapacağını açıklayın. Belirsiz bir boole değerinin yanındaki yoruma dayanmak yerine adlarda, dallarda ve testlerde ayrımı koruyan öneri isteyin.
Bütünleştirmeyi kontrollü test verileriyle inceleyin. Eklenmiş ve bulunmayan anahtarları ekleyin; aday eşleşmenin hâlâ gerekli doğrulama yolunu izlediğini kontrol edin. Genişlik veya karma işlemindeki değişiklikleri kabul etmeden önce doğrulama ve yapılandırma varsayımlarını inceleyin. Filtreyi kesin üyelik garantisi saymak yerine gereken davranışı belirlemek için proje testlerini çalıştırın.
BloomFjord, OpenAI uyumlu veya Anthropic uç noktası bağlantılarını destekler. Sağlayıcınızın sunduğu yerde abliterated bir yapay zekâ modeli seçilebilir; bağlamı, araç desteğini ve kısıtlamaları bu yapılandırma belirler. Uygulama sözleşmesi son kararınıza rehberlik ederken çalışma alanı öneriyi tartışıp incelemenizi sağlar.
Ön üyelik kontrolünü bütünleştirme
Olası eşleşmeden sonra ne olmalı?
Kesin üyelik önemliyse uygulamanın kesin doğrulama yolunu izleyin. Asistandan çağıran koddaki bu dalı göstermesini isteyin. Olasılıksal sonuç sessizce doğrulamayı atlama veya kaydı doğrulanmış sayma iznine dönüşmemelidir.
Bulunmayan anahtar testi yanlış pozitif olmadığını kanıtlar mı?
Hayır. Tüm olası anahtarları değil, o test verisini kontrol eder. Bütünleştirme davranışını doğrulamak ve belgelenmiş belirsizliği korumak için testleri kullanın. API adını veya çağıran mantığı filtrenin kesin üyelik sağladığını ima edecek biçimde değiştirmeyin.
Anahtar kodlaması neden filtreyle birlikte incelenmeli?
Eklemeler ve aramalar aynı mantıksal anahtarı tutarlı göstermelidir. Uygulama değerlerini baytlara dönüştüren kodu ekleyin; üyelik uygulamasını değiştirmeden önce normalleştirme veya serileştirme farklarını inceleyin.
Çağıran kod düzeltmesinde filtre genişliği değişmeli mi?
Bildirilen sorun için gerekli olmadıkça yapılandırma değişikliklerini ayrı tutun. Filtre davranışını ve kaynak kullanımını değiştirebilirler. Yeni genişliği tesadüfi iyileştirme olarak kabul etmek yerine açıklama ve uygun kontroller isteyin.