/
Soldier327
/
LLM_AI
Обзор
Документация
Войти
/
Soldier327
/
LLM_AI
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
main.py
110 строк
3 KB
Soldier-327
Initial commit
24 май 2026, 17:24
24 май 2026, 17:24
dae6bc3
Код
Авторство
О чём код?
import logging import sys from contextlib import asynccontextmanager from pathlib import Path from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware # Настройка логирования def setup_logging(): """Настройка логирования в файл и консоль""" # Создание директории для логов log_dir = Path("logs") log_dir.mkdir(exist_ok=True) # Формат логирования log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" date_format = "%Y-%m-%d %H:%M:%S" # Конфигурация корневого логгера root_logger = logging.getLogger() root_logger.setLevel(logging.INFO) # Очистка существующих хендлеров root_logger.handlers.clear() # Консольный хендлер console_handler = logging.StreamHandler(sys.stdout) console_handler.setLevel(logging.INFO) console_format = logging.Formatter(log_format, date_format) console_handler.setFormatter(console_format) root_logger.addHandler(console_handler) # Файловый хендлер file_handler = logging.FileHandler(log_dir / "app.log", encoding="utf-8") file_handler.setLevel(logging.DEBUG) file_format = logging.Formatter(log_format, date_format) file_handler.setFormatter(file_format) root_logger.addHandler(file_handler) # Отдельный файл для ошибок error_handler = logging.FileHandler(log_dir / "error.log", encoding="utf-8") error_handler.setLevel(logging.ERROR) error_format = logging.Formatter(log_format, date_format) error_handler.setFormatter(error_format) root_logger.addHandler(error_handler) logging.info("Логирование настроено: консоль (INFO), файлы (logs/app.log, logs/error.log)") @asynccontextmanager async def lifespan(app: FastAPI): """Управление жизненным циклом приложения""" logging.info("Запуск сервиса LLM...") yield logging.info("Остановка сервиса LLM...") # Создание приложения FastAPI app = FastAPI( title="LLM Service API", description="Сервис для работы с большими языковыми моделями", version="1.0.0", lifespan=lifespan ) # Настройка CORS app.add_middleware( CORSMiddleware, allow_origins=["*"], # В продакшене ограничить allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Настройка логирования setup_logging() # Импорт роутеров from api.chat import router as chat_router app.include_router(chat_router) @app.get("/") async def root(): """Корневой эндпоинт""" return { "service": "LLM Service", "version": "1.0.0", "endpoints": { "chat": "/api/chat (POST)", "health": "/api/health (GET)", "clear_cache": "/api/cache/clear (POST)" } } if __name__ == "__main__": import uvicorn logging.info("Запуск сервера...") uvicorn.run( "main:app", host="0.0.0.0", port=8000, reload=True, log_level="info" )