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.1.tar.gz (15.0 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.1-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ikin_expert-2.0.1.tar.gz
  • Upload date:
  • Size: 15.0 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.1.tar.gz
Algorithm Hash digest
SHA256 53ecd84227e7a57fadbb8d574c545940d9310a7bbed8e4ed8a6336b0703662aa
MD5 e602344256b52ebb3940718f9444e934
BLAKE2b-256 c3560e4ed0172c2bdfee3eff13006671dbc5054e572d29963cbd8584a5c03217

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ikin_expert-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 13.1 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ca2c4f793303d89cc2f2af79aaa9cf2ce83faa750976fda9c2b963e1be779422
MD5 6ab51e97a3f5e21fa72dc1950db4f353
BLAKE2b-256 c9f461dad2c047ba79d1b582083cb8925f40928e5cdf18e3441f9e73cc860e70

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