File size: 1,003 Bytes
ba4a241 d8028fb ba4a241 d8028fb ba4a241 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
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}")
|