mindnet/app/main.py
Lars 93ceff7f17
All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 3s
app/main.py aktualisiert
2025-10-07 10:49:43 +02:00

103 lines
3.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
app/main.py — mindnet API bootstrap (WP-04 Hooks)
Zweck:
Startpunkt der FastAPI-Anwendung: Router-Registrierung und Healthcheck.
Ergänzt um optionale WP-04 Router (Graph/Retriever), falls vorhanden.
Kompatibilität:
Python 3.12+; FastAPI 0.110+ (getestet lokal)
Version:
0.4.0 (WP-04 Hooks: optionale Router, /admin/meta)
Stand:
2025-10-06
Bezug:
Handbuch & Knowledge Design (WP-03/04)
Umgebung:
Siehe app/config.py (QDRANT_URL, MINDNET_PREFIX, usw.)
Nutzung:
uvicorn app.main:app --reload --port 8000
Änderungsverlauf:
0.4.0 (2025-10-06) /admin/meta ergänzt; optionale Einbindung von graph/query/admin Routern.
0.3.x (vorher) Basisversion laut bereitgestellter Datei.
Hinweise:
Bestehende Routen/Funktionen bleiben unverändert.
"""
from __future__ import annotations
from fastapi import FastAPI
from .config import get_settings
from .routers.embed_router import router as embed_router
from .routers.qdrant_router import router as qdrant_router
# Optionale WP-04 Router dynamisch einbinden, ohne harte Abhängigkeit:
def _maybe_include_wp04(app: FastAPI) -> None:
try:
from .routers.graph import router as graph_router # type: ignore
app.include_router(graph_router, prefix="/graph", tags=["graph"])
except Exception:
pass
try:
from .routers.query import router as query_router # type: ignore
app.include_router(query_router, prefix="/query", tags=["query"])
except Exception:
pass
try:
from .routers.admin import router as admin_router # type: ignore
app.include_router(admin_router, prefix="/admin", tags=["admin"])
except Exception:
pass
def create_app() -> FastAPI:
app = FastAPI(title="mindnet API", version="0.1.0")
s = get_settings()
@app.get("/healthz")
def healthz():
return {"status": "ok", "qdrant": s.QDRANT_URL, "prefix": s.COLLECTION_PREFIX}
# Admin-Metadaten (WP-04)
@app.get("/admin/meta")
def admin_meta():
# Import lokal, damit fehlende Module nicht beim Start stören
meta = {}
try:
import app.main as _m
meta["main"] = getattr(_m, "__doc__", "").splitlines()[0:1]
except Exception:
pass
try:
import app.config as _c
meta["config"] = {
"QDRANT_URL": s.QDRANT_URL,
"COLLECTION_PREFIX": s.COLLECTION_PREFIX,
"VECTOR_SIZE": s.VECTOR_SIZE,
"DISTANCE": s.DISTANCE,
"MODEL_NAME": s.MODEL_NAME,
"RETRIEVER": {
"W_SEM": getattr(s, "RETRIEVER_W_SEM", 0.70),
"W_EDGE": getattr(s, "RETRIEVER_W_EDGE", 0.25),
"W_CENT": getattr(s, "RETRIEVER_W_CENT", 0.05),
"TOP_K": getattr(s, "RETRIEVER_TOP_K", 10),
"EXPAND_DEPTH": getattr(s, "RETRIEVER_EXPAND_DEPTH", 1),
},
}
except Exception:
pass
try:
import app.core.qdrant_points as _qp
meta["qdrant_points"] = getattr(_qp, "__doc__", "").splitlines()[0:1]
except Exception:
pass
return {"meta": meta}
app.include_router(embed_router)
app.include_router(qdrant_router)
_maybe_include_wp04(app)
return app
app = create_app()