Spaces:
Running
Running
| # Copia a backend/.env y rellena. NUNCA lo comitees (ver .gitignore). | |
| # En HF Spaces usa los "Secrets" del Space en vez de un archivo. | |
| # --- Entorno --- | |
| MORPHOS_ENTORNO=dev # dev | prod | |
| # --- Orígenes CORS permitidos (lista separada por comas vía JSON en prod) --- | |
| # MORPHOS_ORIGENES_PERMITIDOS=["https://tu-espacio.hf.space"] | |
| # --- Sesión (OBLIGATORIO en prod: >=32 chars) --- | |
| MORPHOS_SESSION_SECRET= | |
| MORPHOS_COOKIE_SECURE=false # true en prod (HTTPS) | |
| # --- Base de datos de usuarios (SQLite fuera del webroot por defecto) --- | |
| # MORPHOS_DB_PATH=/ruta/fuera/webroot/morphos.db | |
| # --- Ruta IA por defecto --- | |
| MORPHOS_IA_BACKEND_DEFECTO=medgemma # medgemma | claude | |
| # Dentro de la ruta 'medgemma': con MORPHOS_HF_SPACE_URL definida se usa el HF Space (Gradio, | |
| # devuelve PROSA); vaciándola se cae a Ollama, que da salida estructurada y no consume cuota | |
| # de ZeroGPU. Ver "Ruta auto-alojada con Ollama" en el README. | |
| # MORPHOS_HF_SPACE_URL= | |
| MORPHOS_MEDGEMMA_BASE_URL=http://localhost:11434 | |
| MORPHOS_MEDGEMMA_MODEL=medgemma:latest | |
| # Modelos locales que el usuario puede ELEGIR en la UI (lista blanca; vacía = selector oculto). | |
| # Formato `nombre[=prosa|=estructurado]`; sin sufijo se asume estructurado. Ponle `=prosa` al | |
| # modelo que acepta el `format` de Ollama pero devuelve los campos estructurados en hueco. | |
| # El modelo elegido recibe el mismo RAG, prompt y suelos de seguridad que el HF Space, y manda | |
| # sobre él. NO hay variable de URL por petición a propósito: la base_url es la de arriba, del | |
| # lado servidor (aceptar una del cliente convertiría /api/interpret en un SSRF). Déjala vacía | |
| # donde no haya un Ollama alcanzable desde el servidor, como el HF Space. | |
| # MORPHOS_MODELOS_LOCALES=medgemma1.5:latest,qwen2.5:7b=prosa | |
| # Claude (ruta híbrida opcional). NO usar claude-fable-5: cuesta el doble, exige retención de | |
| # datos de 30 días y sus clasificadores pueden rechazar trabajo clínico legítimo. Ver el | |
| # comentario en app/config.py. | |
| MORPHOS_ANTHROPIC_API_KEY= | |
| MORPHOS_CLAUDE_MODEL=claude-opus-5 | |
| # --- Juez de evals (sin clave de API; sólo lo lee evals/, no el servicio) --- | |
| # Por defecto usa el CLI de Claude Code si está instalado, y si no un modelo local en Ollama. | |
| # MORPHOS_JUEZ_CLI_MODELO=sonnet # modelo del juez CLI (opus para auditorías) | |
| # MORPHOS_JUEZ_MODELO=qwen2.5:7b # modelo del juez local | |
| # MORPHOS_JUEZ_BASE_URL=http://localhost:11434 | |
| # Si cada hallazgo lleva su etiqueta de gravedad (leve/moderado/grave) en el prompt. La gravedad | |
| # es un juicio del motor, no un dato de laboratorio, y el modelo es muy sensible a ella. Medido el | |
| # 2026-07-31: quitarla EMPEORA (recall 1.00->0.80; anemia-ferropenica pierde el diagnostico). | |
| MORPHOS_PROMPT_INCLUIR_GRAVEDAD=true | |
| # --- RAG --- | |
| MORPHOS_RAG_HABILITADO=true | |
| MORPHOS_RAG_EMBED_MODEL=BAAI/bge-m3 | |
| MORPHOS_RAG_TOP_K=6 | |
| # Una consulta de recuperación por patrón, fusionadas con RRF, en vez de una sola cadena | |
| # concatenada. OFF: el A/B del 2026-07-31 con juez heurístico la puntúa peor (ver | |
| # evals/resultados/2026-07-31/). Repetir con juez LLM antes de activarla. | |
| MORPHOS_RAG_MULTICONSULTA=false | |
| # Preferencia (no límite duro) de fragmentos por libro, para no gastar el presupuesto del | |
| # prompt en varias páginas del mismo capítulo. 0 la desactiva. | |
| MORPHOS_RAG_MAX_POR_LIBRO=2 | |
| # Suelo de relevancia del cross-encoder: por debajo se descarta el fragmento en vez de | |
| # rellenar TOP_K. Vacío = desactivado (los logits del reranker no están calibrados: fijar el | |
| # umbral a ojo puede vaciar la recuperación). Calibrar con evals/run_retrieval_eval.py. | |
| # MORPHOS_RAG_SCORE_MINIMO= | |
| # --- Rate limiting --- | |
| MORPHOS_LIMITE_INTERPRET=10/minute | |
| MORPHOS_LIMITE_LOGIN=5/minute | |
| MORPHOS_LIMITE_PAPERS=30/minute | |