Mayank14's picture
Setup for Hugging Face Spaces deployment
0a148ee
Raw
History Blame Contribute Delete
2.66 kB
from flask import Flask, render_template, request, jsonify
from flask_cors import CORS
from transformers import T5ForConditionalGeneration, T5Tokenizer
import torch
import logging
import os
app = Flask(__name__)
CORS(app)
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# Load model from Hugging Face Hub
try:
logger.info("Loading model from Hugging Face Hub...")
model_id = "Mayank14/t5-simplifier-model"
tokenizer = T5Tokenizer.from_pretrained(model_id)
model = T5ForConditionalGeneration.from_pretrained(model_id)
logger.info("Model loaded successfully!")
except Exception as e:
logger.error(f"Failed to load model: {e}")
raise
@app.route('/')
def index():
return render_template('index.html')
@app.route('/simplify', methods=['POST'])
def simplify():
try:
data = request.get_json()
if not data or 'text' not in data:
return jsonify({'error': 'No text provided'}), 400
text = data['text'].strip()
if not text:
return jsonify({'error': 'Empty text provided'}), 400
if len(text) > 2000:
return jsonify({'error': 'Text too long. Please limit to 2000 characters.'}), 400
# Prepare input
input_text = "simplify: " + text
inputs = tokenizer.encode(
input_text,
return_tensors="pt",
max_length=512,
truncation=True,
padding=True
)
# Generate simplified text
with torch.no_grad():
outputs = model.generate(
inputs,
max_length=512,
num_beams=4,
early_stopping=True,
do_sample=False,
temperature=0.7
)
simplified_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
# Clean up output
if simplified_text.lower().startswith("simplify:"):
simplified_text = simplified_text[9:].strip()
return jsonify({
'simplified_text': simplified_text,
'original_length': len(text),
'simplified_length': len(simplified_text)
})
except Exception as e:
logger.error(f"Error in simplify endpoint: {e}")
return jsonify({'error': 'Internal server error'}), 500
@app.route('/health')
def health():
return jsonify({
'status': 'healthy',
'model_loaded': True
})
if __name__ == '__main__':
# Get port from environment variable for Hugging Face Spaces
port = int(os.environ.get('PORT', 7860))
app.run(host='0.0.0.0', port=port)