Doninha / ROADMAP_LLM_COMPLETO.md
0danielfonseca's picture
Upload 42 files
cf52a55 verified
# 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**.