scr / DEPLOY_HF.md
greeta's picture
Upload 8 files
4e285d0 verified

🚀 Деплой на Hugging Face Spaces

Инструкция по запуску

Шаг 1: Создайте Space

  1. Перейдите на https://huggingface.co/spaces
  2. Нажмите "Create new Space"
  3. Заполните:
    • Name: fipi-parser-ege (или любое другое)
    • License: MIT
    • SDK: Docker
    • Visibility: Public (или Private)
  4. Нажмите "Create Space"

Шаг 2: Загрузите файлы

Вариант A: Через Git

cd refined
git init
git add .
git commit -m "Initial commit"
git remote add origin https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE
git push -u origin main

Вариант B: Через веб-интерфейс

  1. Откройте ваш Space на Hugging Face
  2. Перейдите в "Files"
  3. Нажмите "Add file""Upload files"
  4. Загрузите все файлы из проекта

Шаг 3: Настройте переменные окружения

  1. В панели Space перейдите в "Settings"
  2. Найдите "Variables and secrets"
  3. Добавьте:
    • SUPABASE_URL: https://your-project.supabase.co
    • SUPABASE_KEY: your-anon-key

Шаг 4: Запуск

Space автоматически соберётся и запустится!

Время сборки: 5-10 минут (загружается ruBERT модель)

Шаг 5: Использование API

После запуска ваш API будет доступен по адресу:

https://YOUR_USERNAME-YOUR_SPACE.hf.space

📡 API Эндпоинты

1. Проверка сочинения

curl -X POST "https://YOUR_USERNAME-YOUR_SPACE.hf.space/grade" \
  -H "Content-Type: application/json" \
  -d '{
    "essay": "В тексте поднимается проблема...",
    "source": "Исходный текст..."
  }'

Ответ:

{
  "total_score": 8,
  "max_score": 9,
  "percentage": 89,
  "criteria": {
    "k1": {"score": 1, "comment": "..."},
    "k2": {"score": 3, "comment": "..."},
    "k3": {"score": 2, "comment": "..."},
    "k4": {"score": 1, "comment": "..."},
    "k5": {"score": 1, "comment": "..."}
  }
}

2. Получить задания из Supabase

curl "https://YOUR_USERNAME-YOUR_SPACE.hf.space/tasks"

3. Запустить парсер

curl -X POST "https://YOUR_USERNAME-YOUR_SPACE.hf.space/parse" \
  -H "Content-Type: application/json" \
  -d '{"max_pages": 3}'

🏠 Главная страница

Откройте в браузере:

https://YOUR_USERNAME-YOUR_SPACE.hf.space/docs

Там будет Swagger UI с документацией API!

📊 Структура проекта для HF

refined/
├── Dockerfile              # Конфигурация Docker
├── app.py                  # Основное API (FastAPI + ruBERT)
├── requirements.txt        # Python зависимости
├── .env.example            # Пример переменных
├── fipi_ai_scraper.py     # Парсер ФИПИ
├── supabase_client.py     # Клиент Supabase
└── README_HF.md           # Эта инструкция

⚙️ Конфигурация

Dockerfile

  • Python 3.10
  • FastAPI + Uvicorn
  • transformers (ruBERT)
  • Порт: 7860

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

SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-anon-key
TRANSFORMERS_CACHE=/tmp/transformers
HF_HOME=/tmp/huggingface

💰 Тарифы

Бесплатный план:

  • ✅ CPU (2 vCPU)
  • ✅ 16GB RAM
  • ✅ 500MB хранилище
  • ⚠️ Засыпает через 48 часов без активности

Pro план ($9/мес):

  • ✅ Не засыпает
  • ✅ Больше ресурсов
  • ✅ Приватные Spaces

🔧 Troubleshooting

Space не запускается

  1. Проверьте логи в панели "Logs"
  2. Убедитесь, что Dockerfile корректен
  3. Проверьте зависимости в requirements.txt

Ошибка памяти

ruBERT требует ~2GB RAM. Если не хватает:

  • Используйте Pro план
  • Или уберите transformers из requirements.txt

Supabase не подключается

  1. Проверьте переменные в Settings → Variables
  2. Убедитесь, что таблица tasks создана
  3. Проверьте URL и ключ

📝 Примеры использования

Python клиент

import requests

API_URL = "https://YOUR_USERNAME-YOUR_SPACE.hf.space"

# Проверка сочинения
response = requests.post(
    f"{API_URL}/grade",
    json={
        "essay": "В тексте поднимается проблема...",
        "source": "Исходный текст..."
    }
)
print(response.json())

# Получить задания
response = requests.get(f"{API_URL}/tasks")
print(response.json())

JavaScript клиент

const API_URL = "https://YOUR_USERNAME-YOUR_SPACE.hf.space";

// Проверка сочинения
const response = await fetch(`${API_URL}/grade`, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    essay: "В тексте поднимается проблема...",
    source: "Исходный текст..."
  })
});

const result = await response.json();
console.log(result);

🎉 Готово!

Ваш сервис для проверки сочинений ЕГЭ и парсинга заданий ФИПИ работает на Hugging Face Spaces!


Ссылки: