|
|
""" |
|
|
Hugging Face Spaces entry point (Gradio). |
|
|
|
|
|
Run locally: |
|
|
python app.py --config config/default_config.yaml --host 0.0.0.0 --port 7860 |
|
|
""" |
|
|
|
|
|
from __future__ import annotations |
|
|
|
|
|
import argparse |
|
|
import logging |
|
|
import os |
|
|
from pathlib import Path |
|
|
|
|
|
from radiology_rag.gradio_compat import patch_gradio_predict_body_for_pydantic_v2 |
|
|
from radiology_rag.ui import RadiologyRAGApp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
import spaces |
|
|
|
|
|
@spaces.GPU |
|
|
def _zerogpu_noop() -> None: |
|
|
return None |
|
|
|
|
|
except Exception: |
|
|
|
|
|
def _zerogpu_noop() -> None: |
|
|
return None |
|
|
|
|
|
|
|
|
def _configure_logging() -> None: |
|
|
level = os.getenv("LOG_LEVEL", "INFO").upper() |
|
|
logging.basicConfig( |
|
|
level=getattr(logging, level, logging.INFO), |
|
|
format="%(asctime)s - %(levelname)s - %(message)s", |
|
|
) |
|
|
|
|
|
|
|
|
def _default_storage_dir() -> str: |
|
|
|
|
|
if Path("/data").exists(): |
|
|
return "/data/radiology_rag" |
|
|
return "./storage" |
|
|
|
|
|
|
|
|
def main() -> int: |
|
|
_configure_logging() |
|
|
|
|
|
parser = argparse.ArgumentParser(description="Radiology RAG (Spaces-ready)") |
|
|
parser.add_argument("--config", type=str, default="config/default_config.yaml", help="Path to config YAML") |
|
|
parser.add_argument("--host", type=str, default="0.0.0.0", help="Server host") |
|
|
parser.add_argument("--port", type=int, default=int(os.getenv("PORT", "7860")), help="Server port") |
|
|
args = parser.parse_args() |
|
|
|
|
|
|
|
|
if not os.getenv("RAG_STORAGE_DIR"): |
|
|
os.environ["RAG_STORAGE_DIR"] = _default_storage_dir() |
|
|
|
|
|
|
|
|
if patch_gradio_predict_body_for_pydantic_v2(): |
|
|
logging.getLogger(__name__).info("Applied Gradio/Pydantic v2 compatibility patch") |
|
|
|
|
|
app = RadiologyRAGApp(config_path=args.config) |
|
|
demo = app.create_interface() |
|
|
|
|
|
demo.launch( |
|
|
server_name=args.host, |
|
|
server_port=args.port, |
|
|
share=False, |
|
|
show_error=True, |
|
|
) |
|
|
return 0 |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
raise SystemExit(main()) |
|
|
|
|
|
|
|
|
|