Funciones nuevas en python/functions/datascience/:
- gliner_load_model: carga + cachea modelo GLiNER por (name, device).
device='auto' resuelve a cuda/cpu segun torch.cuda.is_available, sin
fallar si torch no esta instalado. ImportError claro si falta gliner.
- extract_entities_gliner: contrato drop-in de extract_entities_llm
(mismo entity_schema, mismo list[EntityCandidate]). El caller inyecta
el modelo (cargado UNA vez por proceso). Anota offsets start/end en
attributes para reconciliar con extract_iocs (issue 0040).
Diferencias vs LLM extractor:
- 50-200x mas rapido en GPU, 0 USD/token.
- Malo con IoCs tecnicos (lo cubre 0037).
- Threshold y flat_ner ajustables por dominio.
pyproject.toml: gliner como extra opcional `[nlp]` para no inflar el
.venv de quien no use NER. Instalacion: `uv pip install -e '.[nlp]'`.
Refs #0038 — Desbloquea 0039 (GLiREL) y 0040 (pipeline hibrido).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>