VoxSum / src /server /services /summarization_service.py
Luigi's picture
Implement document title generation and UI improvements
d8028fb
from __future__ import annotations
from typing import Dict, Iterable
from fastapi import HTTPException
from src.summarization import summarize_transcript, generate_title
from ..models.summarization import SummaryRequest
def iter_summary_events(payload: SummaryRequest) -> Iterable[Dict[str, str]]:
try:
# Generate title if requested
title = None
if payload.generate_title:
title = generate_title(payload.transcript, payload.llm_model)
yield {"type": "title", "content": title}
# Generate summary
generator = summarize_transcript(
transcript=payload.transcript,
selected_gguf_model=payload.llm_model,
prompt_input=payload.prompt,
)
for chunk in generator:
yield {"type": "partial", "content": chunk}
yield {"type": "complete"}
except Exception as exc: # pragma: no cover
raise HTTPException(status_code=500, detail=f"Summary failed: {exc}")