antonypamo commited on
Commit
df23f1a
·
verified ·
1 Parent(s): 546991b

Upload 4 files

Browse files
Files changed (4) hide show
  1. Dockerfile +42 -0
  2. README.md +22 -9
  3. main.py +49 -0
  4. requirements.txt +8 -0
Dockerfile ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ============================
2
+ # Dockerfile – Savant RRF Φ12.0 API
3
+ # ============================
4
+
5
+ FROM python:3.11-slim
6
+
7
+ # Evitar prompts interactivos
8
+ ENV DEBIAN_FRONTEND=noninteractive \
9
+ PYTHONUNBUFFERED=1
10
+
11
+ # Crear directorio de trabajo
12
+ WORKDIR /app
13
+
14
+ # Instalar dependencias del sistema mínimas
15
+ RUN apt-get update && apt-get install -y --no-install-recommends \
16
+ build-essential \
17
+ git \
18
+ && rm -rf /var/lib/apt/lists/*
19
+
20
+ # Copiar requirements
21
+ COPY requirements.txt /app/requirements.txt
22
+
23
+ # Instalar dependencias Python
24
+ RUN pip install --no-cache-dir -r /app/requirements.txt
25
+
26
+ # Copiar código de la API
27
+ # Asumimos que main.py contiene:
28
+ # - carga del encoder
29
+ # - carga del meta-logit desde HF
30
+ # - definición de "app = FastAPI(...)"
31
+ COPY main.py /app/main.py
32
+
33
+ # Variables de entorno opcionales
34
+ # HF_TOKEN: token para descargar modelos de Hugging Face
35
+ ENV HF_TOKEN=""
36
+
37
+ # Exponer el puerto donde correrá uvicorn
38
+ EXPOSE 8000
39
+
40
+ # Comando por defecto: lanzar la API
41
+ CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
42
+
README.md CHANGED
@@ -1,11 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
- title: APISAvant
3
- emoji: ⚡
4
- colorFrom: yellow
5
- colorTo: gray
6
- sdk: docker
7
- pinned: false
8
- license: other
9
- ---
10
 
11
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
1
+ # Savant RRF Φ12.0 – Dirac-Resonant Conceptual Quality API
2
+
3
+ Savant RRF Φ12.0 es una API de evaluación conceptual resonante para texto generado por modelos de lenguaje (LLMs).
4
+
5
+ Dado un `prompt` y una `answer`, la API devuelve:
6
+
7
+ - **SRRF** – Resonant Quality Score (probabilidad de “respuesta buena” según meta-logit).
8
+ - **CRRF** – Coherent Resonant Score (SRRF modulado por alineación semántica).
9
+ - **E_phi** – Resonant Health Score (promedio entre SRRF y entropía resonante normalizada).
10
+ - **p_good** – probabilidad directa del meta-logit binario.
11
+ - Features físicos: entropía, energía, chirality de una **shell de Dirac icosaédrica**.
12
+
13
+ El encoder principal es `antonypamo/RRFSAVANTMADE` y el meta-logit se carga desde el repo de HF `antonypamo/RRFSavantMetaLogit` (por defecto `logreg_rrf_savant_v2.joblib`).
14
+
15
  ---
 
 
 
 
 
 
 
 
16
 
17
+ ## Estructura del repo
18
+
19
+ ```text
20
+ .
21
+ ├── main.py # Código de la API (FastAPI + Savant RRF Φ12.0 core)
22
+ ├── requirements.txt # Dependencias Python
23
+ └── Dockerfile # Imagen Docker de la API
24
+
main.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from sentence_transformers import SentenceTransformer
2
+ from huggingface_hub import hf_hub_download
3
+ import joblib, os
4
+ from fastapi import FastAPI
5
+ from pydantic import BaseModel
6
+ from typing import Optional, Dict, Any
7
+ import numpy as np
8
+ # + resto de imports (scipy, etc.)
9
+
10
+ ENCODER_MODEL_ID = "antonypamo/RRFSAVANTMADE"
11
+ META_LOGIT_REPO = "antonypamo/RRFSavantMetaLogit"
12
+ META_LOGIT_FILENAME = "logreg_rrf_savant_v2.joblib"
13
+
14
+ encoder = SentenceTransformer(ENCODER_MODEL_ID)
15
+
16
+ meta_logit_path = hf_hub_download(
17
+ repo_id=META_LOGIT_REPO,
18
+ filename=META_LOGIT_FILENAME,
19
+ token=os.environ.get("HF_TOKEN")
20
+ )
21
+ meta_logit = joblib.load(meta_logit_path)
22
+
23
+ class EvaluateRequest(BaseModel):
24
+ prompt: str
25
+ answer: str
26
+ model_label: Optional[str] = None
27
+
28
+ class EvaluateResponse(BaseModel):
29
+ scores: Dict[str, float]
30
+ features: Dict[str, float]
31
+ sim_summary: Dict[str, Any]
32
+
33
+ app = FastAPI(
34
+ title="Savant RRF Φ12.0 API",
35
+ description="Dirac-Resonant conceptual quality layer for LLM-generated text.",
36
+ version="1.0.0",
37
+ )
38
+
39
+ @app.post("/evaluate", response_model=EvaluateResponse)
40
+ def evaluate(req: EvaluateRequest):
41
+ scores, feats = compute_scores_srff_crff_ephi(req.prompt, req.answer)
42
+ # opcional: sim_summary con entropía/energía/chirality
43
+ sim_summary = {...}
44
+ return EvaluateResponse(
45
+ scores=scores,
46
+ features=feats,
47
+ sim_summary=sim_summary,
48
+ )
49
+
requirements.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ fastapi==0.115.0
2
+ uvicorn[standard]==0.30.6
3
+ sentence-transformers==3.0.1
4
+ huggingface_hub==0.24.6
5
+ joblib==1.4.2
6
+ scipy==1.13.1
7
+ numpy==1.26.4
8
+