File size: 1,495 Bytes
3d99217
 
 
bf808a4
cec4ed4
01728a1
cec4ed4
01728a1
bf808a4
7735398
bf808a4
7735398
 
 
01728a1
bf808a4
 
cec4ed4
bf808a4
 
 
 
cec4ed4
3d99217
 
 
 
 
01728a1
3d99217
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cec4ed4
 
bf808a4
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
45
46
47
48
49
from fastapi import FastAPI
from pydantic import BaseModel
from transformers import pipeline, AutoTokenizer
import os
import uvicorn

app = FastAPI()

# Safe local cache directory for HF models
os.environ["HF_HOME"] = "/app/cache"
os.environ["TRANSFORMERS_CACHE"] = "/app/cache"
os.environ["HF_DATASETS_CACHE"] = "/app/cache"
os.environ["XDG_CACHE_HOME"] = "/app/cache"


# Read Hugging Face token from environment
HF_AUTH_TOKEN = os.getenv("HF_TOKEN")

# Load model and tokenizer using auth token
MODEL_NAME = "VincentMuriuki/legal-summarizer"
summarizer = pipeline("summarization", model=MODEL_NAME, use_auth_token=HF_AUTH_TOKEN)
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, use_auth_token=HF_AUTH_TOKEN)

class SummarizeInput(BaseModel):
    text: str

class ChunkInput(BaseModel):
    text: str
    max_tokens: int = 512

@app.post("/summarize")
def summarize_text(data: SummarizeInput):
    summary = summarizer(data.text, max_length=150, min_length=30, do_sample=False)
    return {"summary": summary[0]["summary_text"]}

@app.post("/chunk")
def chunk_text(data: ChunkInput):
    tokens = tokenizer.encode(data.text, truncation=False)
    chunks = []

    for i in range(0, len(tokens), data.max_tokens):
        chunk_tokens = tokens[i:i + data.max_tokens]
        chunk_text = tokenizer.decode(chunk_tokens, skip_special_tokens=True)
        chunks.append(chunk_text.strip())

    return {"chunks": chunks}

if _name_ == "_main_":
    uvicorn.run(app, host="0.0.0.0", port=7860)