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