Yermek68 commited on
Commit
71b5660
·
verified ·
1 Parent(s): ad5f036

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -66
app.py CHANGED
@@ -1,70 +1,41 @@
1
- from fastapi import FastAPI, UploadFile, File
2
- from typing import List
3
- from sentence_transformers import SentenceTransformer
4
- from transformers import pipeline
5
- import asyncio
6
-
7
- app = FastAPI(title="Eroha AgentAPI", version="2.1.1")
8
-
9
- embedder = None
10
- summarizer = None
11
-
12
- @app.get("/")
13
- def home():
14
- return {
15
- "message": "✅ Eroha AgentAPI is alive!",
16
- "routes": ["/check", "/summarize", "/ping"]
17
- }
18
-
19
- @app.get("/check")
20
- def check_health():
21
- return {"status": "ok", "version": "2.1.1"}
22
-
23
- @app.post("/summarize")
24
- async def summarize_text(files: List[UploadFile] = File(...)):
25
- global embedder, summarizer
26
-
27
- if embedder is None or summarizer is None:
28
- # Загружаем модели один раз (лениво)
29
- loop = asyncio.get_event_loop()
30
- embedder = await loop.run_in_executor(None, lambda: SentenceTransformer("all-MiniLM-L6-v2"))
31
- summarizer = await loop.run_in_executor(None, lambda: pipeline("summarization", model="facebook/bart-large-cnn"))
32
-
33
- texts = []
34
- for file in files:
35
- content = await file.read()
36
- texts.append(content.decode("utf-8", errors="ignore"))
37
-
38
- full_text = "\n".join(texts)
39
- summary = summarizer(full_text, max_length=200, min_length=50, do_sample=False)
40
- return {"summary": summary[0]["summary_text"]}
41
-
42
- @app.get("/ping")
43
- def ping():
44
- return {"status": "running"}
45
-
46
- if __name__ == "__main__":
47
- import uvicorn
48
- uvicorn.run("app:app", host="0.0.0.0", port=7860, reload=True)
49
-
50
  import gradio as gr
51
-
52
- def summarize_text_interface(text):
53
- from transformers import pipeline
54
- summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
55
- summary = summarizer(text, max_length=150, min_length=40, do_sample=False)
56
- return summary[0]['summary_text']
57
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  demo = gr.Interface(
59
- fn=summarize_text_interface,
60
- inputs=gr.Textbox(lines=10, label="Введите текст для суммаризации"),
61
- outputs=gr.Textbox(label="Резюме"),
62
- title="Eroha Agent Summarizer",
63
- description="Введите текст для краткого резюме с помощью модели."
64
  )
65
 
66
- if __name__ == "__main__":
67
- import threading
68
- import uvicorn
69
- threading.Thread(target=lambda: demo.launch(server_name="0.0.0.0", server_port=7860)).start()
70
- uvicorn.run(app, host="0.0.0.0", port=8000)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
+ from transformers import pipeline
3
+ import pdfplumber
4
+
5
+ # Загружаем модель для суммаризации текста
6
+ summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
7
+
8
+ # Функция обработки файла
9
+ def summarize_file(file):
10
+ if file is None:
11
+ return "⚠️ Пожалуйста, загрузите файл."
12
+
13
+ # Проверяем тип файла
14
+ if file.name.endswith(".pdf"):
15
+ text = ""
16
+ with pdfplumber.open(file.name) as pdf:
17
+ for page in pdf.pages:
18
+ text += page.extract_text() or ""
19
+ else:
20
+ text = file.read().decode("utf-8", errors="ignore")
21
+
22
+ # Проверяем размер текста
23
+ if len(text.strip()) < 50:
24
+ return "⚠️ Слишком короткий текст для суммаризации."
25
+
26
+ # Создаём резюме
27
+ summary = summarizer(text, max_length=200, min_length=50, do_sample=False)
28
+ return summary[0]["summary_text"]
29
+
30
+ # Создаём интерфейс Gradio
31
  demo = gr.Interface(
32
+ fn=summarize_file,
33
+ inputs=gr.File(label="Загрузите файл (.pdf или .txt)"),
34
+ outputs=gr.Textbox(label="Результат суммаризации"),
35
+ title="Eroha Summarizer 🧠",
36
+ description="Загрузите документ (PDF или TXT), и модель создаст краткое резюме.",
37
  )
38
 
39
+ # Запуск приложения
40
+ demo.launch(server_name="0.0.0.0", server_port=7860)
41
+