Yermek68 commited on
Commit
d6c810d
·
verified ·
1 Parent(s): 048caf2

added metrics tracking and logger

Browse files
Files changed (1) hide show
  1. app.py +52 -5
app.py CHANGED
@@ -1,20 +1,53 @@
1
  import gradio as gr
2
  from transformers import pipeline
3
  from fastapi import FastAPI
 
 
 
4
  from summarizer import summarize_via_hf
5
  from fastapi.middleware.cors import CORSMiddleware
6
  import os
7
 
 
 
 
 
 
 
 
 
8
  # 1. Модель суммаризации (ленивая загрузка)
9
  summarizer = None
10
 
11
  def summarize_text(text: str):
12
- """Функция суммаризации текста"""
 
13
  global summarizer
14
- if summarizer is None:
15
- summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
16
- result = summarizer(text, max_length=180, min_length=50, do_sample=False)
17
- return result[0]["summary_text"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  # 2. FastAPI-приложение (для REST API)
20
  app = FastAPI(title="Eroha Summarizer PRO")
@@ -41,6 +74,20 @@ async def analyze_text(data: dict):
41
  summary = summarize_via_hf(text)
42
  return {"summary": summary}
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  # 3. Gradio интерфейс (веб-интерфейс)
45
  iface = gr.Interface(
46
  fn=summarize_text,
 
1
  import gradio as gr
2
  from transformers import pipeline
3
  from fastapi import FastAPI
4
+ import time
5
+ from datetime import datetime
6
+ import logging
7
  from summarizer import summarize_via_hf
8
  from fastapi.middleware.cors import CORSMiddleware
9
  import os
10
 
11
+ # Настройка логирования
12
+ logging.basicConfig(
13
+ level=logging.INFO,
14
+ format="%(asctime)s | %(levelname)s | %(message)s",
15
+ )
16
+ logger = logging.getLogger("ErohaSummarizer")
17
+
18
+
19
  # 1. Модель суммаризации (ленивая загрузка)
20
  summarizer = None
21
 
22
  def summarize_text(text: str):
23
+ """Функция суммаризации текста с метриками"""
24
+ start_time = time.time()
25
  global summarizer
26
+ try:
27
+ if summarizer is None:
28
+ summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
29
+
30
+ result = summarizer(text, max_length=180, min_length=50, do_sample=False)
31
+ summary = result[0]["summary_text"]
32
+
33
+ # Метрики
34
+ elapsed = round(time.time() - start_time, 3)
35
+ metrics = {
36
+ "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
37
+ "input_length": len(text),
38
+ "summary_length": len(summary),
39
+ "processing_time_sec": elapsed,
40
+ "status": "success",
41
+ }
42
+
43
+ logger.info(f"[METRICS] {metrics}")
44
+ return summary
45
+
46
+ except Exception as e:
47
+ elapsed = round(time.time() - start_time, 3)
48
+ logger.error(f"[ERROR] {e} | time={elapsed}s")
49
+ return f"Ошибка: {e}"
50
+
51
 
52
  # 2. FastAPI-приложение (для REST API)
53
  app = FastAPI(title="Eroha Summarizer PRO")
 
74
  summary = summarize_via_hf(text)
75
  return {"summary": summary}
76
 
77
+ @app.get("/metrics/test")
78
+ def test_metrics():
79
+ """
80
+ Тестовый endpoint — показывает пример метрики.
81
+ """
82
+ example = {
83
+ "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
84
+ "input_length": 250,
85
+ "summary_length": 80,
86
+ "processing_time_sec": 1.23,
87
+ "status": "success"
88
+ }
89
+ return {"metrics_example": example}
90
+
91
  # 3. Gradio интерфейс (веб-интерфейс)
92
  iface = gr.Interface(
93
  fn=summarize_text,