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}")