File size: 8,677 Bytes
cf52a55 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | # Roadmap do modelo de LLM completo
**Status:** As sete pendências abaixo foram implementadas (config, KB, L5, unificação com agente, avaliação, chat, API).
---
# O que falta para um modelo de LLM completo (itens implementados)
Este documento lista o que já existe no projeto e o que ainda falta programar para se ter um **modelo de LLM completo** (inferência + geração de texto + RAG + avaliação + entrega).
---
## O que já existe
| Componente | Arquivo(s) | Estado |
|------------|------------|--------|
| Pipeline epistemológico L1→L4 | `pipeline.py`, `l1_concept_table.py`, `l2_kantian_judgments.py`, `syllogism_module.py`, `l3_paraconsistent.py`, `l4_synthesis.py` | ✅ Completo (raciocínio simbólico) |
| Regras paraconsistentes (Fuzzy.txt) | `paraconsistent_rules.py`, `train_truth_model.py` | ✅ L3 treinável por regras |
| Base teórica L4 (Russell) | `l4_russell_equivalence.py`, `train_l4_russell.py` | ✅ Síntese por equivalência |
| Modelo de verdade neural (μ, λ) | `neural_truth_model.py` | ✅ Opcional na L3 |
| LM customizado (TransformerEncoder) | `custom_lm_model.py`, `custom_tokenizer.py`, `pretrain_custom_lm.py` | ✅ Existe mas **não está ligado ao pipeline** |
| Agente de pesquisa (Groq + Chroma + DuckDuckGo) | `agente_busca_web.py` | ✅ Funcional, **separado** do pipeline L1–L4 |
| Banco de conhecimento | `SEED_KNOWLEDGE_BASE` em `pipeline.py` | ⚠️ Estático, dicionário fixo |
| Geração de “resposta” na L4 | `l4_synthesis._generate_response` | ⚠️ Só monta texto a partir da melhor hipótese (template), **não gera texto livre** |
---
## O que falta programar
### 1. **Geração de texto integrada ao pipeline (resposta livre)**
**Problema:** Hoje a L4 devolve um texto do tipo:
`"Com alta confiança (v=0.85): [melhor proposição] [KB: ...]"` — é um template, não geração token a token.
**O que falta:**
- **Opção A (rápida):** Usar um LLM externo (Groq/OpenAI) na etapa 8:
- Montar um **prompt estruturado** com: conceitos (L1), juízos filtrados (L2/SYL), valores μ/λ e estado (L3), síntese (L4) e a pergunta do usuário.
- Chamar o LLM com esse prompt e usar a saída como **resposta final** do pipeline.
- **Opção B (end-to-end):** Integrar o `EpistemicLanguageModel` (ou um decoder pequeno) como gerador:
- O contexto L1–L4 vira “condição” (ex.: embedding ou texto serializado).
- O decoder gera a resposta autoregressivamente (`generate_text` já existe em `custom_lm_model.py`).
- Exige definir formato de contexto (ex.: texto plano com juízos + valores) e treino/ajuste para esse cenário.
**Arquivos a criar/alterar:**
Novo módulo, ex.: `l5_generation.py` (ou extensão em `l4_synthesis.py`) que recebe `SynthesisResult` + prompt e chama LLM ou `generate_text`; `pipeline.py` passa a usar essa camada na etapa 8.
---
### 2. **Unificar pipeline L1–L4 com o agente de pesquisa**
**Problema:** O pipeline híbrido e o `agente_busca_web.py` são independentes. O pipeline não usa RAG nem busca web.
**O que falta:**
- **Caminho 1:** O pipeline usar o agente como “fonte de fatos”:
- Antes ou durante L3/L4, chamar o agente (busca local Chroma + DuckDuckGo) com a pergunta ou com as proposições filtradas.
- Inserir os trechos recuperados no KB ou num contexto extra para a síntese/geração.
- **Caminho 2:** O agente usar o pipeline como “motor de raciocínio”:
- Após a busca, passar os documentos + pergunta pelo pipeline L1–L4 e usar a `SynthesisResult` para montar o prompt final do LLM do agente.
**Arquivos a criar/alterar:**
Um orquestrador (ex.: `pipeline_rag.py` ou opções em `pipeline.py`) que instancia tanto `HybridLLMPipeline` quanto o agente e define quando chamar cada um e como combinar saídas.
---
### 3. **Base de conhecimento escalável (KB + RAG)**
**Problema:** O KB é um dicionário fixo em código (`SEED_KNOWLEDGE_BASE`). Não há carregamento a partir de dados nem RAG dentro do pipeline.
**O que falta:**
- Carregar o KB a partir de arquivo(s) (JSON/CSV) ou de um banco.
- Opcional: popular uma base vetorial (ex.: Chroma em `meu_vector_db`) com os mesmos conceitos/evidências e, no pipeline, usar **retrieval** (como no agente) para enriquecer L3/L4 com trechos relevantes à pergunta.
- Manter a interface atual (termo → grau de evidência) para não quebrar L3/L4.
**Arquivos a criar/alterar:**
Módulo `knowledge_base.py` (ou estender `pipeline.py`) para: carregar KB de disco; opcionalmente conectar a Chroma e expor uma função que, dada a pergunta, retorna um dicionário termo→peso ou trechos para contexto.
---
### 4. **Avaliação e métricas**
**Problema:** Não há como medir qualidade das respostas nem comparar versões do modelo.
**O que falta:**
- Dataset de avaliação: pares (pergunta, resposta_referência) ou (pergunta, valor_verdade_esperado).
- Script de avaliação que:
- Roda o pipeline (e, se existir, o gerador) em cada pergunta.
- Calcula métricas, por exemplo:
- Coerência com L3 (ex.: valor de verdade médio, ausência de trivialização).
- Se houver referência: similaridade semântica (embedding), BLEU/ROUGE, ou métricas de QA.
- Opcional: relatório (JSON/Markdown) com médias e exemplos.
**Arquivos a criar:**
`eval_pipeline.py`, pasta `data/eval/` com conjuntos de teste e, se quiser, `metrics.py` com funções de métrica reutilizáveis.
---
### 5. **API ou serviço para uso em produção**
**Problema:** Só existe REPL (`python pipeline.py --repl`). Não há endpoint HTTP nem CLI estável para integração.
**O que falta:**
- **API REST (recomendado):** FastAPI (ou Flask) expondo, por exemplo:
- `POST /process` — recebe `{"prompt": "..."}` e devolve a resposta do pipeline (e, no futuro, do gerador).
- Opcional: `POST /agent` — repassa para o agente de pesquisa.
- **CLI:** `python -m pipeline --prompt "..."` (ou similar) que imprime só a resposta final, para uso em scripts.
- Configuração por variáveis de ambiente ou arquivo (YAML/JSON) para modelo, paths do KB, Chroma, etc.
**Arquivos a criar:**
`api.py` (FastAPI) e/ou entrypoint em `pipeline.py` com `argparse`; opcional `config.yaml`.
---
### 6. **Histórico de diálogo (chat multi-turno)**
**Problema:** O pipeline processa um único prompt. Não há memória de conversa.
**O que falta:**
- Manter uma lista de (role, content) para o usuário e o assistente.
- Para cada nova mensagem: montar contexto (ex.: últimas N trocas ou resumo) e passar ao pipeline (e ao gerador, quando existir).
- Definir se L1–L4 usam só a última pergunta ou o contexto resumido (para não estourar tamanho e custo).
**Arquivos a criar/alterar:**
Classe ou módulo `chat_session.py` (ou dentro do pipeline) que mantém histórico e chama `process`/gerador com contexto; REPL e API passam a usar essa sessão.
---
### 7. **Persistência e configuração**
**Problema:** Caminhos e opções estão espalhados (hardcoded ou env). Não há um “estado” do sistema salvo de forma única.
**O que falta:**
- Arquivo de configuração (YAML/JSON) para:
- Caminho do KB, Chroma, modelo L3 (truth_scoring_model.pt), base Russell (l4_russell_concepts.json).
- Flags: usar agente ou não, usar gerador externo ou LM interno, etc.
- Carregar essa config no arranque do pipeline e da API.
- Documentar onde ficam os artefatos treinados (L3, L4, LM customizado) e como recarregá-los.
**Arquivos a criar/alterar:**
`config.yaml` (ou `.json`) e função `load_config()` usada em `pipeline.py` e `api.py`.
---
## Priorização sugerida
| Ordem | Item | Impacto | Esforço |
|-------|------|--------|--------|
| 1 | Geração de texto integrada (LLM externo no pipeline) | Alto — resposta natural em vez de template | Médio |
| 2 | Base de conhecimento escalável (carregar KB + opcional RAG) | Alto — dados reais | Médio |
| 3 | Unificar pipeline com agente (RAG no fluxo L1–L4) | Alto — um único sistema | Alto |
| 4 | API REST (FastAPI) | Médio — uso em produção | Baixo |
| 5 | Avaliação (dataset + script + métricas) | Médio — evolução guiada | Médio |
| 6 | Histórico de diálogo | Médio — experiência de chat | Médio |
| 7 | Configuração centralizada e persistência | Baixo — organização | Baixo |
---
## Resumo em uma frase
Hoje você tem um **motor de raciocínio epistemológico (L1–L4)** e um **agente de pesquisa** separado; para um **modelo de LLM completo** falta: **integrar um gerador de texto (LLM externo ou LM interno) ao pipeline**, **conectar o pipeline ao agente e ao KB/RAG**, **avaliar respostas** e **expor tudo via API e configuração clara**.
|