Yermek68 commited on
Commit
999bcea
·
verified ·
1 Parent(s): f692008

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -24
app.py CHANGED
@@ -4,10 +4,8 @@ from sentence_transformers import SentenceTransformer
4
  from transformers import pipeline
5
  import asyncio
6
 
7
- # --- FastAPI app ---
8
  app = FastAPI(title="Eroha AgentAPI", version="2.1.1")
9
 
10
- # --- Lazy initialization ---
11
  embedder = None
12
  summarizer = None
13
 
@@ -15,47 +13,32 @@ summarizer = None
15
  def home():
16
  return {
17
  "message": "✅ Eroha AgentAPI is alive!",
18
- "routes": ["/check", "/summarize"]
19
  }
20
 
21
  @app.get("/check")
22
  def check_health():
23
- return {
24
- "status": "ok",
25
- "version": "2.1.1",
26
- "components": ["lazy embedding", "lazy summarizer"]
27
- }
28
 
29
  @app.post("/summarize")
30
  async def summarize_text(files: List[UploadFile] = File(...)):
31
  global embedder, summarizer
32
 
33
- # Lazy load models (only on first call)
34
  if embedder is None or summarizer is None:
35
- embedder = SentenceTransformer("all-MiniLM-L6-v2")
36
- summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
 
 
37
 
38
- # Collect text from uploaded files
39
  texts = []
40
  for file in files:
41
  content = await file.read()
42
  texts.append(content.decode("utf-8", errors="ignore"))
43
 
44
- # Combine into one large string
45
  full_text = "\n".join(texts)
46
-
47
- # Create embedding (optional — for debugging)
48
- embedding = embedder.encode(full_text[:512]) # just preview embedding
49
-
50
- # Summarize
51
  summary = summarizer(full_text, max_length=200, min_length=50, do_sample=False)
 
52
 
53
- return {
54
- "summary": summary[0]["summary_text"],
55
- "embedding_preview": embedding[:5].tolist() if hasattr(embedding, "tolist") else [],
56
- }
57
-
58
- # --- Health endpoint ---
59
  @app.get("/ping")
60
  def ping():
61
  return {"status": "running"}
 
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
 
 
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"}