Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """ | |
| Hugging Face Spacesμ© Lily LLM API μλ² μ§μ μ | |
| """ | |
| import os | |
| import sys | |
| import logging | |
| import asyncio | |
| import uvicorn | |
| from pathlib import Path | |
| # νλ‘μ νΈ λ£¨νΈλ₯Ό Python pathμ μΆκ° | |
| project_root = Path(__file__).parent | |
| sys.path.insert(0, str(project_root)) | |
| # νκ²½ λ³μ μ€μ | |
| os.environ.setdefault("PYTHONPATH", str(project_root)) | |
| os.environ.setdefault("HOST", "0.0.0.0") | |
| os.environ.setdefault("PORT", "7860") | |
| # λ‘κΉ μ€μ | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' | |
| ) | |
| logger = logging.getLogger(__name__) | |
| def setup_huggingface_environment(): | |
| """Hugging Face Spaces νκ²½ μ€μ """ | |
| # νμν λλ ν 리 μμ± | |
| directories = [ | |
| "data", "logs", "models", "uploads", | |
| "vector_stores", "temp", "cache", | |
| "cache/transformers", "cache/huggingface", | |
| "cache/easyocr", "cache/ocr_models" | |
| ] | |
| for dir_name in directories: | |
| dir_path = project_root / dir_name | |
| dir_path.mkdir(exist_ok=True, parents=True) | |
| logger.info(f"π λλ ν 리 μμ±: {dir_path}") | |
| # νκ²½ λ³μ μ€μ | |
| env_vars = { | |
| "TRANSFORMERS_CACHE": str(project_root / "cache" / "transformers"), | |
| "HF_HOME": str(project_root / "cache" / "huggingface"), | |
| "TORCH_HOME": str(project_root / "cache" / "torch"), | |
| "EASYOCR_MODULE_PATH": str(project_root / "cache" / "easyocr"), | |
| "OCR_MODELS_PATH": str(project_root / "cache" / "ocr_models"), | |
| "TOKENIZERS_PARALLELISM": "false", | |
| "OMP_NUM_THREADS": "1", | |
| "MKL_NUM_THREADS": "1" | |
| } | |
| for key, value in env_vars.items(): | |
| os.environ[key] = value | |
| logger.info(f"π§ νκ²½λ³μ μ€μ : {key}={value}") | |
| async def main(): | |
| """λ©μΈ μ€ν ν¨μ""" | |
| logger.info("π Hugging Face Spacesμ© Lily LLM API μλ² μμ") | |
| # νκ²½ μ€μ | |
| setup_huggingface_environment() | |
| try: | |
| # FastAPI μ± import | |
| from lily_llm_api.app_v2 import app | |
| # μλ² μ€μ | |
| host = os.getenv("HOST", "0.0.0.0") | |
| port = int(os.getenv("PORT", "7860")) | |
| logger.info(f"π μλ² μμ: {host}:{port}") | |
| # Uvicorn μλ² μ€ν | |
| config = uvicorn.Config( | |
| app=app, | |
| host=host, | |
| port=port, | |
| log_level="info", | |
| access_log=True, | |
| loop="asyncio" | |
| ) | |
| server = uvicorn.Server(config) | |
| await server.serve() | |
| except Exception as e: | |
| logger.error(f"β μλ² μμ μ€λ₯: {e}") | |
| import traceback | |
| logger.error(f"π μμΈ μ€λ₯:\n{traceback.format_exc()}") | |
| sys.exit(1) | |
| if __name__ == "__main__": | |
| # Python 3.7+ νΈνμ±μ μν asyncio μ€ν | |
| try: | |
| asyncio.run(main()) | |
| except KeyboardInterrupt: | |
| logger.info("π μλ² μ’ λ£") | |
| except Exception as e: | |
| logger.error(f"β μ€ν μ€λ₯: {e}") | |
| sys.exit(1) | |
| logger.error(f"β μ€ν μ€λ₯: {e}") | |
| sys.exit(1) |