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.
"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:
- MIT License
- Apache License 2.0
👨🏿🔬 Autor e Pesquisador
Desenvolvido por Kalluan Cley Fiuza.
- 🔬 Foco de Pesquisa: HealthTech, IA Simbólica, Nefrologia Computacional e Sistemas Críticos.
- 🏢 Mantenedor: Projeto incubado no ecossistema criativo Kalluan Cartoon™.
- 📧 Email: kalluancartoon@gmail.com
- 🔗 LinkedIn: Kalluan C. Fiuza
- 🆔 ORCID: 0009-0005-2693-6477
- 📚 Currículo Lattes: Acessar Lattes
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e18da4a75ef6ac590b6893288d28ddbbbcec109071ce82770ae6f99aa3821236
|
|
| MD5 |
dcb067adfae373c4ba3d0d8be508ba5c
|
|
| BLAKE2b-256 |
c8e77710c56cecc10a58426a9220efeb0159af37111f30b2987c42025d67ed3f
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
847882455f33b4197852a8f8f7b3b46c703097ba620c6f3606a7dd765468f662
|
|
| MD5 |
a6413a71aeca524b176158ab0f87f130
|
|
| BLAKE2b-256 |
f01ee7491fde396203cf40b7d5fd5d7d465b33fee62d8937b32257ed90764544
|