CoolFace
Apppublic

hellower/diary-predictor

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
App README

Diary Predictor - Health Forecast API

Production-ready Flask приложение для прогнозирования состояния здоровья на основе исторических данных с использованием LSTM нейронных сетей.

Возможности

  • —🤖 AI-прогнозирование состояния здоровья с использованием LSTM
  • —🚨 Автоматическое обнаружение критических состояний
  • —📊 Анализ трендов по множественным параметрам
  • —🔍 Health check endpoints для мониторинга
  • —📝 Структурированное логирование
  • —📚 Swagger/OpenAPI документация с интерактивным UI

Технологии

  • —Flask - веб-фреймворк
  • —TensorFlow/Keras - LSTM нейронные сети
  • —Pandas/NumPy - обработка данных
  • —Scikit-learn - предобработка данных
  • —Gunicorn - WSGI сервер для production
  • —Docker - контейнеризация
  • —Flasgger - Swagger/OpenAPI документация

API Документация

Swagger UI

Интерактивная документация API доступна по адресу:

  • —Локально: http://localhost:5000/docs или http://localhost:7860/docs
  • —Hugging Face Spaces: https://<your-username>-diary-predictor.hf.space/docs

Swagger UI предоставляет:

  • —Полное описание всех эндпоинтов
  • —Интерактивное тестирование API
  • —Примеры запросов и ответов
  • —Схемы данных

API Endpoints

Health Check

bash
GET /health

Ответ:

json
{
  "status": "healthy",
  "service": "diary_predictor",
  "version": "1.0.0"
}

Health Forecast

bash
POST /api/v1/health/forecast
Content-Type: application/json

Запрос:

json
{
  "history": [
    {
      "date": "2024-01-01",
      "systolic_pressure": 120,
      "diastolic_pressure": 80,
      "pulse": 70,
      "temperature": 36.6,
      "weight": 70.0,
      "wellbeing": 5,
      "sleep_hours": 8
    },
    {
      "date": "2024-01-02",
      "systolic_pressure": 125,
      "diastolic_pressure": 82,
      "pulse": 72,
      "temperature": 36.7,
      "weight": 70.1,
      "wellbeing": 5,
      "sleep_hours": 7.5
    }
  ]
}

Успешный ответ:

json
{
  "status": "OK",
  "risk_level": "LOW",
  "forecast_date": "2024-01-08",
  "forecast": {
    "systolic_pressure": 122.5,
    "diastolic_pressure": 81.0,
    "pulse": 71.0,
    "temperature": 36.6,
    "weight": 70.2,
    "wellbeing": 5.0,
    "sleep_hours": 7.8
  },
  "alerts": [],
  "recommendation": "Тренды в норме."
}

Критическое состояние:

json
{
  "status": "CRITICAL",
  "alerts": [
    "CRITICAL: systolic_pressure is 165.0 (Call Doctor!)"
  ],
  "forecast": null,
  "recommendation": "Немедленно обратитесь за медицинской помощью."
}

Развертывание на Hugging Face Spaces

Шаг 1: Создание Space

  1. 1.Перейдите на Hugging Face Spaces
  2. 2.Нажмите "Create new Space"
  3. 3.Заполните форму:
  4. 4.Space name: diary-predictor (или любое другое)
  5. 5.SDK: выберите Docker
  6. 6.Hardware: выберите подходящий вариант (CPU Basic бесплатно)
  7. 7.Visibility: Public или Private

Шаг 2: Загрузка кода

После создания Space, загрузите код:

bash
# Клонируйте ваш Space репозиторий
git clone https://huggingface.co/spaces/<your-username>/diary-predictor
cd diary-predictor

# Скопируйте все файлы проекта в эту директорию:
# - app.py
# - config.py
# - requirements.txt
# - Dockerfile
# - services/ (папка с ai_engine.py)
# - README.md

# Закоммитьте и запушьте
git add .
git commit -m "Initial commit: Diary Predictor API"
git push

Шаг 3: Автоматическая сборка

Hugging Face Spaces автоматически:

  • —Соберет Docker образ из Dockerfile (5-10 минут)
  • —Установит все зависимости из requirements.txt
  • —Запустит приложение на порту 7860
  • —Проксирует трафик через HTTPS

Шаг 4: Проверка работы

После успешной сборки, проверьте:

bash
# Health check
curl https://<your-username>-diary-predictor.hf.space/health

# Swagger документация (откройте в браузере)
# https://<your-username>-diary-predictor.hf.space/docs

# Тестовый запрос прогноза
curl -X POST https://<your-username>-diary-predictor.hf.space/api/v1/health/forecast \
  -H "Content-Type: application/json" \
  -d '{
    "history": [
      {
        "date": "2024-01-01",
        "systolic_pressure": 120,
        "diastolic_pressure": 80,
        "pulse": 70,
        "temperature": 36.6,
        "weight": 70.0,
        "wellbeing": 5,
        "sleep_hours": 8
      },
      {
        "date": "2024-01-02",
        "systolic_pressure": 125,
        "diastolic_pressure": 82,
        "pulse": 72,
        "temperature": 36.7,
        "weight": 70.1,
        "wellbeing": 5,
        "sleep_hours": 7.5
      }
    ]
  }'

Важные замечания

  • —Порт: Приложение автоматически использует порт 7860 (стандарт для Spaces)
  • —Логи: Доступны в интерфейсе Spaces в разделе "Logs"
  • —Обновления: Просто делайте git push - Spaces пересоберет автоматически
  • —Таймауты: Запросы должны завершаться за 60 секунд (для бесплатных Spaces)

Troubleshooting

Ошибка сборки:

  • —Проверьте логи в интерфейсе Spaces
  • —Убедитесь, что Dockerfile корректен
  • —Проверьте requirements.txt

Приложение не отвечает:

  • —Убедитесь, что приложение слушает на 0.0.0.0:7860
  • —Проверьте health endpoint: /health
  • —Посмотрите логи в интерфейсе Spaces

Медленная работа:

  • —TensorFlow может быть медленным на CPU
  • —Рассмотрите GPU Space (требует подписки)
  • —Оптимизируйте модель

Структура проекта

diary-predictor/
├── app.py                 # Главный файл приложения
├── config.py              # Конфигурация
├── requirements.txt       # Python зависимости
├── Dockerfile             # Docker образ для Spaces
├── README.md              # Документация
└── services/
    ├── __init__.py
    └── ai_engine.py       # AI сервис для прогнозирования

Переменные окружения

ПеременнаяОписаниеПо умолчанию
DEBUGРежим отладкиFalse
PORTПорт приложения7860 (для Spaces)
HOSTХост приложения0.0.0.0
LOOK_BACK_DAYSКоличество дней для анализа7
LOG_LEVELУровень логированияINFO

Локальная разработка

bash
# Установите зависимости
pip install -r requirements.txt

# Запустите в режиме разработки
export DEBUG=True
python app.py

Безопасность

  • —✅ Приложение запускается от непривилегированного пользователя в Docker
  • —✅ Валидация входных данных
  • —✅ Обработка ошибок
  • —✅ Структурированное логирование
  • —⚠️ Для production добавьте:
  • —Rate limiting
  • —Authentication/Authorization
  • —HTTPS/TLS
  • —CORS настройки

Лицензия

MIT