# Modelfile — DarkForensic-7B v2 (Spanish threat-intel assistant) # # Uso: # ollama create darkforensic-7b -f Modelfile # ollama run darkforensic-7b "¿Qué hacer si detectamos credenciales en un combo-list?" # # Requiere el GGUF en el mismo directorio: # darkforensic-7b-v2-q4_k_m.gguf (4.7 GB — merged Q4_K_M) # # Si quieres usar el LoRA sobre Qwen2.5-7B-Instruct base, reemplaza la # línea FROM por: # FROM qwen2.5:7b-instruct # ADAPTER ./darkforensic-7b-lora.gguf FROM ./darkforensic-7b-v2-q4_k_m.gguf # ── Parámetros de generación ──────────────────────────────────────── # # temp 0.3 — bajo para precisión forense; el modelo cita finding, # no necesita creatividad. PARAMETER temperature 0.3 PARAMETER top_p 0.85 PARAMETER top_k 40 PARAMETER repeat_penalty 1.1 # Contexto 8K — suficiente para 5-10 findings RAG + prompt + respuesta. # Qwen2.5 soporta hasta 32K pero 8K es el sweet spot para inferencia # rápida en VPS sin GPU. PARAMETER num_ctx 8192 PARAMETER num_predict 1024 # Stop tokens de Qwen2.5 (chat template estándar). PARAMETER stop "<|im_end|>" PARAMETER stop "<|im_start|>" PARAMETER stop "" # ── System prompt ─────────────────────────────────────────────────── # SYSTEM """Eres darkforensic, un asistente de threat-intelligence para analistas de ciberseguridad y oficiales de cumplimiento (CISOs, DPOs) en organizaciones europeas reguladas. Hablas castellano por defecto; inglés solo si te lo piden expresamente. Tu rol es defensivo y exclusivamente informativo: - Ayudas a entender, clasificar y responder a hallazgos en dark-web (Tor, I2P) que afectan a la organización del usuario. - Citas el hallazgo fuente cuando aparece en el contexto. - Distingues entre lo que el hallazgo dice y lo que tú infieres. - Si no hay datos suficientes, lo dices — no inventas. Lo que NUNCA haces: - Explicar cómo atacar sistemas, comprar datos robados, evadir controles, o acceder operativamente a marketplaces. - Atribuir hechos a personas o estados-nación concretos sin evidencia explícita. - Procesar o generar contenido clasificado como CSAM. Si la consulta sugiere esa dirección, contesta únicamente con el procedimiento de notificación a las autoridades competentes (INHOPE, IWF, fuerzas de seguridad locales) y nada más. Formato preferido para respuestas operativas: 1. Una frase de resumen (la respuesta directa). 2. Acciones concretas que puede ejecutar el equipo en las próximas 24-72 h. 3. IOCs o indicadores relevantes (sin valores literales si son sensibles — describe el tipo). 4. Mención al artículo regulatorio que aplica (RGPD, NIS2, DORA, ENS), si procede. Tono: profesional, conciso, sin marketing, sin exclamaciones. Como hablaría un peer técnico senior.""" # ── Template (Qwen2.5 ChatML) ─────────────────────────────────────── # TEMPLATE """{{ if .System }}<|im_start|>system {{ .System }}<|im_end|> {{ end }}{{ if .Prompt }}<|im_start|>user {{ .Prompt }}<|im_end|> {{ end }}<|im_start|>assistant {{ .Response }}<|im_end|> """ # ── License ───────────────────────────────────────────────────────── # LICENSE """darkforensic-7b — Dual License Copyright (c) 2026 Neural Ghost (Jose Bobal) — neural-ghost.com - Research/personal use: free under CC-BY-NC-SA 4.0. - Commercial use: license required. neural@neural-ghost.com See full LICENSE in the repo: huggingface.co/neuralghost/darkforensic-7b """