Spaces:
Sleeping
Sleeping
File size: 3,203 Bytes
31a1da0 b386020 31a1da0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
#!/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": "2",
"MKL_NUM_THREADS": "2",
"NUMEXPR_NUM_THREADS": "2",
"CPU_THREADS": "2",
}
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) |