File size: 1,534 Bytes
7d41bbc
ef215a0
fb0ab55
 
b758f58
fb0ab55
7d41bbc
bfcaca7
05039dd
fb0ab55
7d41bbc
 
 
b1a1fe2
 
bfcaca7
fb0ab55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7d41bbc
 
05039dd
 
 
067221c
7d41bbc
980abe2
fb0ab55
067221c
bf42b73
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import gradio as gr
from transformers import pipeline
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

# 1. Модель суммаризации
summarizer = None

def summarize_text(text: str):
    """Функция суммаризации текста"""
    global summarizer
    if summarizer is None:
        summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
    result = summarizer(text, max_length=180, min_length=50, do_sample=False)
    return result[0]["summary_text"]

# 2. FastAPI-приложение (для REST API)
app = FastAPI()
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_methods=["*"],
    allow_headers=["*"],
)

@app.post("/api/summarize")
async def summarize_api(data: dict):
    """REST API для суммаризации"""
    text = data.get("text", "")
    return {"summary": summarize_text(text)}

# 3. Gradio интерфейс (веб-интерфейс)
iface = gr.Interface(
    fn=summarize_text,
    inputs=gr.Textbox(lines=10, label="Введите текст для суммаризации"),
    outputs=gr.Textbox(label="Результат"),
    title="Eroha Summarizer PRO",
    description="AI-инструмент для анализа и суммаризации текста (рус/англ)."
)

# 4. Запуск сервера (чтобы контейнер Hugging Face не завершался)
if __name__ == "__main__":
    iface.launch(server_name="0.0.0.0", server_port=7860, share=False)