Spaces:
Paused
Paused
| from __future__ import annotations | |
| from typing import Dict, Iterable | |
| 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: | |
| # Response already started (HTTP 200 + NDJSON); surface failures as a | |
| # terminal error event instead of a raise that truncates the stream. | |
| yield {"type": "error", "message": f"Summary failed: {exc}"} | |