Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -2,29 +2,30 @@ from fastapi import FastAPI, UploadFile, File
|
|
| 2 |
from typing import List
|
| 3 |
import gradio as gr
|
| 4 |
from transformers import pipeline
|
| 5 |
-
import uvicorn
|
| 6 |
|
| 7 |
-
|
|
|
|
| 8 |
|
| 9 |
-
#
|
| 10 |
summarizer = None
|
| 11 |
|
| 12 |
@app.get("/")
|
| 13 |
def home():
|
| 14 |
return {"message": "✅ Eroha Summarizer PRO работает!"}
|
| 15 |
|
|
|
|
| 16 |
@app.post("/summarize")
|
| 17 |
async def summarize(files: List[UploadFile] = File(...)):
|
| 18 |
global summarizer
|
| 19 |
if summarizer is None:
|
| 20 |
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
|
| 21 |
-
|
| 22 |
texts = [await f.read() for f in files]
|
| 23 |
full_text = "\n".join([t.decode("utf-8") for t in texts])
|
| 24 |
summary = summarizer(full_text, max_length=180, min_length=50, do_sample=False)
|
| 25 |
return {"summary": summary[0]["summary_text"]}
|
| 26 |
|
| 27 |
-
|
|
|
|
| 28 |
def gradio_summary(text):
|
| 29 |
global summarizer
|
| 30 |
if summarizer is None:
|
|
@@ -32,6 +33,8 @@ def gradio_summary(text):
|
|
| 32 |
result = summarizer(text, max_length=180, min_length=50, do_sample=False)
|
| 33 |
return result[0]["summary_text"]
|
| 34 |
|
|
|
|
|
|
|
| 35 |
iface = gr.Interface(
|
| 36 |
fn=gradio_summary,
|
| 37 |
inputs=gr.Textbox(lines=10, label="Введите текст для суммаризации"),
|
|
@@ -40,12 +43,8 @@ iface = gr.Interface(
|
|
| 40 |
description="AI-система для анализа и суммаризации текстов."
|
| 41 |
)
|
| 42 |
|
| 43 |
-
# Запуск FastAPI + Gradio (на Hugging Face)
|
| 44 |
-
@app.on_event("startup")
|
| 45 |
-
async def startup_event():
|
| 46 |
-
print("✅ Запуск Gradio интерфейса...")
|
| 47 |
-
iface.launch(share=False, server_name="0.0.0.0", server_port=7860, inbrowser=False, prevent_thread_lock=True)
|
| 48 |
|
| 49 |
-
#
|
| 50 |
if __name__ == "__main__":
|
| 51 |
-
|
|
|
|
|
|
| 2 |
from typing import List
|
| 3 |
import gradio as gr
|
| 4 |
from transformers import pipeline
|
|
|
|
| 5 |
|
| 6 |
+
# --- FastAPI app ---
|
| 7 |
+
app = FastAPI(title="Eroha Summarizer PRO", version="3.7")
|
| 8 |
|
| 9 |
+
# --- Lazy loading model ---
|
| 10 |
summarizer = None
|
| 11 |
|
| 12 |
@app.get("/")
|
| 13 |
def home():
|
| 14 |
return {"message": "✅ Eroha Summarizer PRO работает!"}
|
| 15 |
|
| 16 |
+
|
| 17 |
@app.post("/summarize")
|
| 18 |
async def summarize(files: List[UploadFile] = File(...)):
|
| 19 |
global summarizer
|
| 20 |
if summarizer is None:
|
| 21 |
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
|
|
|
|
| 22 |
texts = [await f.read() for f in files]
|
| 23 |
full_text = "\n".join([t.decode("utf-8") for t in texts])
|
| 24 |
summary = summarizer(full_text, max_length=180, min_length=50, do_sample=False)
|
| 25 |
return {"summary": summary[0]["summary_text"]}
|
| 26 |
|
| 27 |
+
|
| 28 |
+
# --- Gradio Interface ---
|
| 29 |
def gradio_summary(text):
|
| 30 |
global summarizer
|
| 31 |
if summarizer is None:
|
|
|
|
| 33 |
result = summarizer(text, max_length=180, min_length=50, do_sample=False)
|
| 34 |
return result[0]["summary_text"]
|
| 35 |
|
| 36 |
+
|
| 37 |
+
# создаем интерфейс, но не запускаем его сразу
|
| 38 |
iface = gr.Interface(
|
| 39 |
fn=gradio_summary,
|
| 40 |
inputs=gr.Textbox(lines=10, label="Введите текст для суммаризации"),
|
|
|
|
| 43 |
description="AI-система для анализа и суммаризации текстов."
|
| 44 |
)
|
| 45 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
|
| 47 |
+
# --- Запуск только Gradio, без FastAPI run() ---
|
| 48 |
if __name__ == "__main__":
|
| 49 |
+
# Hugging Face Spaces требует, чтобы работал один порт 7860
|
| 50 |
+
iface.launch(server_name="0.0.0.0", server_port=7860)
|