FinSightAI / backend /services /summarizer.py
Aniket2003333333's picture
start
7248d39
Raw
History Blame Contribute Delete
1.04 kB
"""Financial document summarization service."""
from typing import Optional
from db.faiss_client import FaissDB
from models.llm import MiniCPMLLM
from utils.response_cleaner import clean_model_response
class SummarizerService:
def __init__(self, llm: MiniCPMLLM, db: FaissDB):
self.llm = llm
self.db = db
def summarize(
self,
document_id: Optional[str] = None,
text: Optional[str] = None,
summary_type: str = "financial",
) -> dict:
if text:
doc_text = text
elif document_id:
chunks = self.db.fetch_chunks_by_document_id(document_id)
if not chunks:
return {"error": f"No chunks found for document {document_id}"}
doc_text = "\n\n".join(c["text"] for c in chunks)
else:
return {"error": "Provide either document_id or text"}
summary = clean_model_response(self.llm.generate_summary(doc_text, summary_type))
return {"summary": summary, "type": summary_type}