Fluxos de trabalho · Pertinência probabilística de 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))
✳Armazene chaves de até 1024 bytes num filtro Bloom de um a 8192 bits.
✓ AlteraçõesRevise antes de aplicar ↗
Ilustração do ambiente
Projeto
Confira inserções duplicadas e chaves inseridas, demonstrando que um resultado positivo pode ser falso e não comprova pertinência.
Revise antes de aplicar
Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações.
Modelos
Configure um endpoint compatível com OpenAI ou Anthropic com a URL base e uma chave API, quando necessária. Teste a conexão. O servidor local precisa estar em execução; ferramentas remotas podem transmitir dados separadamente.
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))
Ambiente de programação com IA
Não transforme resultados incertos em decisões certas
Uma verificação preliminar rápida pode se tornar um erro quando o código chamador trata sua resposta como definitiva. BloomFjord é um ambiente de programação com IA para Windows para revisar esse limite com um modelo conectado. Traga a estrutura de dados e o código consumidor para a conversa do projeto e declare quais evidências a aplicação exige antes de agir.
Como tarefa concreta, peça ao assistente que examine um filtro de Bloom de pertinência usado antes de uma consulta à fonte definitiva. Descreva o que o código chamador deve fazer após uma possível correspondência e após uma ausência definitiva. Solicite uma proposta que preserve essa distinção em nomes, ramificações e testes, em vez de depender de um comentário junto a um booleano ambíguo.
Revise a integração com casos de teste controlados. Inclua chaves inseridas e ausentes e confira se uma possível correspondência ainda segue o fluxo de confirmação exigido. Examine as premissas de validação e configuração antes de aceitar mudanças na largura ou no hashing. Execute os testes do projeto para estabelecer o comportamento necessário em vez de tratar o filtro como garantia de pertinência exata.
BloomFjord suporta conexões a endpoints compatíveis com OpenAI ou da Anthropic. Um modelo de IA abliterado é uma opção selecionável onde o provedor o oferecer, com contexto, suporte a ferramentas e restrições determinados por essa configuração. O ambiente permite discutir e examinar a proposta enquanto o contrato da aplicação orienta sua decisão final.
Integrando uma verificação preliminar de pertinência
O que deve acontecer após uma possível correspondência?
Siga o fluxo de confirmação da fonte definitiva da aplicação quando a pertinência exata for importante. Peça ao assistente que mostre essa ramificação no código chamador. Um resultado probabilístico não deve se tornar silenciosamente permissão para pular a verificação ou tratar um registro como confirmado.
Um caso de teste com chave ausente prova que não há falsos positivos?
Não. Ele verifica esse caso, não todas as chaves possíveis. Use testes para verificar a integração e preservar a incerteza documentada. Evite mudar o nome da API ou a lógica do chamador de formas que impliquem que o filtro oferece pertinência exata.
Por que revisar a codificação de chaves junto com o filtro?
Inserções e consultas precisam representar a mesma chave lógica consistentemente. Inclua o código que converte valores da aplicação em bytes e examine diferenças de normalização ou serialização antes de alterar a própria implementação de pertinência.
A largura do filtro deve mudar durante uma correção do código chamador?
Mantenha alterações de configuração separadas, a menos que sejam necessárias para o problema relatado. Elas podem alterar o comportamento do filtro e o uso de recursos. Solicite uma explicação e verificações adequadas em vez de aceitar uma nova largura como melhoria incidental.