File size: 1,236 Bytes
cce29c9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from fastapi import FastAPI, UploadFile, File
from fastapi.staticfiles import StaticFiles
from transformers import pipeline
from tika import parser
import os

app = FastAPI()

# Mount static folder for frontend
app.mount("/static", StaticFiles(directory="static"), name="static")

# Define a writable cache directory inside the container
CACHE_DIR = "/app/cache"
os.makedirs(CACHE_DIR, exist_ok=True)  # Create the directory if it doesn’t exist

# Load models with custom cache directory
summarizer = pipeline("summarization", model="facebook/bart-large-cnn", cache_dir=CACHE_DIR)
image_captioner = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base", cache_dir=CACHE_DIR)

@app.get("/")
async def root():
    return {"message": "Welcome to AI Web App"}

@app.post("/summarize")
async def summarize_document(file: UploadFile = File(...)):
    content = parser.from_buffer(await file.read())["content"]
    summary = summarizer(content, max_length=130, min_length=30, do_sample=False)
    return {"summary": summary[0]["summary_text"]}

@app.post("/caption")
async def caption_image(file: UploadFile = File(...)):
    caption = image_captioner(await file.read())
    return {"caption": caption[0]["generated_text"]}