| from fastapi import FastAPI, HTTPException |
| from pydantic import BaseModel |
| from multiprocessing import Process, Queue |
| from transformers import pipeline |
| import uvicorn |
|
|
| app = FastAPI() |
|
|
| summarization_pipeline = pipeline("summarization", model="facebook/bart-large-cnn") |
|
|
| class SummaryRequest(BaseModel): |
| text: str |
|
|
| def generate_summary_response(request, queue): |
| try: |
| summary = summarization_pipeline(request.text) |
| queue.put(summary[0]['summary_text']) |
| except Exception as e: |
| queue.put(f"Error: {str(e)}") |
|
|
| @app.post("/generate_summary") |
| async def generate_summary(request: SummaryRequest): |
| queue = Queue() |
| p = Process(target=generate_summary_response, args=(request, queue)) |
| p.start() |
| p.join() |
| response = queue.get() |
| if "Error" in response: |
| raise HTTPException(status_code=500, detail=response) |
| return {"summary": response} |
|
|
| if __name__ == "__main__": |
| uvicorn.run(app, host="0.0.0.0", port=7860) |
|
|