feat(classifier): implement Tier 3 LLM fallback adapter and boundary disambiguation test suite

This commit is contained in:
2026-08-21 10:50:57 -03:00
parent cb33dafac1
commit 31152d5031
25 changed files with 2997 additions and 1404 deletions
+9 -5
View File
@@ -118,7 +118,7 @@ flowchart TD
* **Tier 1 (Determinístico / NLP Leve)**: Análise de frequência de termos, detecção de âncoras temáticas no primeiro terço do documento, contagem de aliases e penalização por âncoras negativas.
* **Tier 2 (Vetorial / Embeddings)** *(Opcional: `--enable-embeddings`)*: Projeção vetorial e cálculo de cosseno entre o perfil da entidade e os parágrafos do documento.
* **Tier 3 (LLM Fallback)** *(Opcional: `--enable-llm`)*: Consulta a modelo de linguagem para desambiguação de casos limiares e sutilezas semânticas.
* **Tier 3 (LLM Fallback)** *(Opcional: `--enable-llm`)*: Adaptador de desambiguação inteligente (`src/adapters/llm.py`) acionado exclusivamente para casos limiares e ambíguos (ex: menção isolada `TANGENTIAL` ou confiança `< 0.60`). Casos claros não chamam o LLM para economizar custos e latência; em caso de falha de conexão com a API, degrada graciosamente mantendo o resultado do Tier 1 com aviso registrado em `warnings`.
### Categorias de Decisão
@@ -499,7 +499,8 @@ TextNLPClassifierApp/
│ ├── test_extract_google_news.py
│ ├── test_extract_article_contents.py
│ ├── test_select_article_extractor.py
│ └── test_convert_article_to_markdown.py # Testes da conversão para Markdown
│ ├── test_convert_article_to_markdown.py # Testes da conversão para Markdown
│ └── test_llm_fallback.py # Testes do Tier 3 LLM Fallback
├── requirements.txt # Dependências do projeto
├── pyproject.toml # Configurações de ferramentas (pytest, ruff, mypy)
└── README.md # Documentação principal
@@ -509,12 +510,15 @@ TextNLPClassifierApp/
## 🧪 Testes e Qualidade de Código
O repositório possui **187 testes automatizados** com 100% de aprovação cobrindo testes unitários, de regressão, de integração, Golden Fixtures exatas, testes de sensibilidade de mutação e testes End-to-End (E2E) via CLI subprocess:
O repositório possui **196 testes automatizados** com 100% de aprovação cobrindo testes unitários, de regressão, de integração, Golden Fixtures exatas, testes de sensibilidade de mutação, testes de fallback para LLM (Tier 3) e testes End-to-End (E2E) via CLI subprocess:
```bash
# Executar toda a suíte de testes do projeto (187 testes)
# Executar toda a suíte de testes do projeto (196 testes)
pytest -v
# Executar os testes do Fallback para LLM (Tier 3)
pytest tests/test_llm_fallback.py -v
# Executar os testes de Conversão de Artigo para Markdown (67 testes)
pytest tests/test_convert_article_to_markdown.py -v
@@ -531,7 +535,7 @@ pytest tests/test_extract_google_news.py -v
ruff check .
# Verificação estática de tipos com Mypy
mypy scripts/convert_article_to_markdown.py
mypy src/ scripts/ tests/
```
---