Skip to main content

High-Performance Rete Engine with Hash Joins for Python.

Project description

Ikin-Expert 🧠 v2.0

A High-Performance Rete Engine with Hash Joins for Python.

Python License Code Style Architecture

"A ciência é feita de dados, mas a sabedoria é feita de inferências."


🚀 O que há de novo na v2.0?

A versão 2.0 introduz o Algoritmo Rete Completo (Alpha + Beta Networks) com otimização de Hash Joins.

  • Antes (v0.1): Apenas filtros simples em fatos isolados.
  • Agora (v2.0): Capacidade de cruzar dados (JOINS) entre fatos diferentes com performance $O(1)$ (tempo constante), utilizando a nova sintaxe MATCH.

Isso permite criar sistemas complexos (como Monitoramento de Saúde ou Detecção de Fraude) que processam milhares de eventos em tempo real sem degradação de performance.


📋 Sobre o Projeto

O Ikin-Expert é uma biblioteca de Sistemas Especialistas projetada para preencher a lacuna deixada por ferramentas legadas no ecossistema Python.

Diferente de antecessores que utilizavam estruturas de dados lentas ou loops aninhados (Produto Cartesiano), o Ikin-Expert implementa Indexação Automática nas regras de junção.

Principais Diferenciais

  • ⚡ Hash Joins (O(1)): Se você cruzar 10.000 Pacientes com 10.000 Exames, o sistema não faz 100 milhões de comparações. Ele usa Tabelas Hash para encontrar o par exato instantaneamente.
  • 🛡️ Type Safety: Integração nativa com Pydantic. Dados inválidos são rejeitados antes de entrar no motor.
  • 🔗 Variáveis de Ligação (MATCH): Sintaxe declarativa e elegante para conectar regras.
  • 🧠 Saliência: Prioridade de execução real para sistemas críticos (Emergência > Rotina).

🛠 Instalação

git clone [https://github.com/kalluancartoon/ikin-expert.git](https://github.com/kalluancartoon/ikin-expert.git)
cd ikin-expert
pip install -e .

Requisitos: Python 3.10 ou superior.


💻 Exemplo de Uso (v2.0)

Veja como criar um sistema de Detecção de Fraude que cruza dados do Cliente com Transações em tempo real:

from ikin_expert import KnowledgeEngine, Rule, Fact, Pattern, MATCH

# 1. Definindo os Dados (Pydantic)
class Cliente(Fact):
    id: int
    nome: str
    status: str  # "VIP" ou "Comum"

class Transacao(Fact):
    cliente_id: int # Foreign Key
    valor: float

# 2. Criando o Especialista
class AntiFraudeIA(KnowledgeEngine):

    # REGRA DE JOIN (Complexa):
    # "Se o Cliente é VIP (Fato 1) E fez transação acima de 5k (Fato 2)..."
    # O uso de MATCH.cid cria um índice Hash automático entre os dois fatos.
    @Rule(
        Pattern(Cliente, id=MATCH.cid, status="VIP"),
        Pattern(Transacao, cliente_id=MATCH.cid, valor__gt=5000.0),
        salience=100
    )
    def alerta_vip(self, c: Cliente, t: Transacao):
        print(f"🚨 ALERTA VIP: {c.nome} tentou gastar R$ {t.valor}!")

    # REGRA SIMPLES:
    @Rule(Pattern(Transacao, valor__gt=10000.0), salience=50)
    def alerta_geral(self, t: Transacao):
        print(f"⚠️ ALERTA GERAL: Transação suspeita de R$ {t.valor}")

# 3. Execução
engine = AntiFraudeIA()
engine.reset()

# O sistema indexa os clientes na memória (Beta Network)
engine.declare(Cliente(id=1, nome="Kalluan", status="VIP"))
engine.declare(Cliente(id=2, nome="Visitante", status="Comum"))

# Ao receber a transação, o sistema encontra o "Kalluan" instantaneamente (O(1))
engine.declare(Transacao(cliente_id=1, valor=6000.0))

engine.run()

🆚 Comparativo de Performance (Join)

Imagine um cenário cruzando 1.000 Clientes com 1.000 Transações.

Tecnologia Método de Junção Operações Realizadas Resultado
Legado / Naive Loop Aninhado (Nested Loop) 1.000.000 (1 Milhão) 🐌 Lento / Trava
Ikin-Expert v2.0 Hash Join Indexado ~2.000 🚀 Instantâneo

⚖️ Licenciamento Duplo (Dual License)

Este projeto é distribuído sob um modelo de licenciamento duplo para garantir segurança jurídica:

  1. MIT License
  2. Apache License 2.0

👨🏿‍🔬 Autor e Pesquisador

Desenvolvido por Kalluan Cley Fiuza.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ikin_expert-2.0.0.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ikin_expert-2.0.0-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file ikin_expert-2.0.0.tar.gz.

File metadata

  • Download URL: ikin_expert-2.0.0.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for ikin_expert-2.0.0.tar.gz
Algorithm Hash digest
SHA256 e18da4a75ef6ac590b6893288d28ddbbbcec109071ce82770ae6f99aa3821236
MD5 dcb067adfae373c4ba3d0d8be508ba5c
BLAKE2b-256 c8e77710c56cecc10a58426a9220efeb0159af37111f30b2987c42025d67ed3f

See more details on using hashes here.

File details

Details for the file ikin_expert-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: ikin_expert-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for ikin_expert-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 847882455f33b4197852a8f8f7b3b46c703097ba620c6f3606a7dd765468f662
MD5 a6413a71aeca524b176158ab0f87f130
BLAKE2b-256 f01ee7491fde396203cf40b7d5fd5d7d465b33fee62d8937b32257ed90764544

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page