Aryan Gosaliya commited on
Commit
7046d04
·
1 Parent(s): fcbf46d

added logs for transcription

Browse files
Files changed (1) hide show
  1. app/core/orchestrator.py +63 -50
app/core/orchestrator.py CHANGED
@@ -16,62 +16,75 @@ os.environ.setdefault("OMP_NUM_THREADS", "1")
16
 
17
 
18
  def _norm_snippet(s: str) -> str:
19
- return re.sub(r"\s+", " ", (s or "").strip()).lower()
20
 
21
 
22
- def process_call(audio_path: Optional[str] = None, transcript: Optional[str] = None) -> CallReport:
23
- print("[orchestrator] START")
 
 
24
 
25
- segments = transcribe(audio_path) if audio_path else [
26
- {"start":0.0,"end":0.0,"speaker":"A","text": transcript or ""}]
 
 
 
27
 
28
- # 2) Claim extraction (IBM)
29
- claims: List[Claim] = extract_claims(segments)
30
- print(f"[orchestrator] Claims extracted: {len(claims)}")
31
- if not claims:
32
- print("[orchestrator] No claims found; building minimal report.")
33
- return make_report(segments, [], [], [], evidence_by_claim={})
34
 
35
- # 3) Evidence retrieval (IBM embeddings + optional rerank)
36
- claims, evmap = retrieve_evidence_for_claims(claims, k=8)
37
- ev_count = sum(len(v) for v in evmap.values())
 
 
 
38
 
39
- # Print evidence per claim (detailed)
40
- print("[orchestrator] Evidence per claim (top k):")
41
- for c in claims:
42
- evs = evmap.get(c.id, [])
43
- print(f" - Claim {c.id}: {c.text}")
44
- for i, e in enumerate(evs, 1):
45
- snippet_preview = _norm_snippet(e.snippet)[:200]
46
- meta_preview = ""
47
- try:
48
- meta_preview = json.dumps(e.metadata, ensure_ascii=False)[:160]
49
- except Exception:
50
- meta_preview = str(e.metadata)[:160]
51
- print(f" {i:02d}. {e.source or e.doc_id} id={e.doc_id} score={e.score:.2f}")
52
- print(f" {snippet_preview}")
53
- if e.metadata:
54
- print(f" meta: {meta_preview}")
55
 
56
- # Flatten and deduplicate global evidence by normalized snippet, keeping highest score
57
- flat: List[Evidence] = [e for lst in evmap.values() for e in lst]
58
- by_snippet: Dict[str, Evidence] = {}
59
- for e in flat:
60
- key = _norm_snippet(e.snippet)
61
- best = by_snippet.get(key)
62
- if not best or (e.score or 0.0) > (best.score or 0.0):
63
- by_snippet[key] = e
64
- evidence_flat = list(by_snippet.values())
 
 
 
 
 
 
 
 
 
65
 
66
- verdicts: List[Verdict] = verify(claims, evmap)
67
- print(f"[orchestrator] Verifier produced {len(verdicts)} verdicts")
68
- print("[orchestrator] Verdicts with citations:")
69
- for v in verdicts:
70
- cites = getattr(v, "citation_ids", [])
71
- print(f" - {v.claim_id}: {v.label} conf={v.confidence:.2f} best={v.best_evidence_id} cites={cites}")
 
 
 
72
 
73
- # 5) Summarize
74
- report = make_report(segments, claims, evidence_flat, verdicts, evidence_by_claim=evmap)
75
- print(report.call_summary)
76
- print("[orchestrator] DONE")
77
- return report
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
 
18
  def _norm_snippet(s: str) -> str:
19
+ return re.sub(r"\s+", " ", (s or "").strip()).lower()
20
 
21
 
22
+ def process_call(
23
+ audio_path: Optional[str] = None, transcript: Optional[str] = None
24
+ ) -> CallReport:
25
+ print("[orchestrator] START")
26
 
27
+ segments = (
28
+ transcribe(audio_path)
29
+ if audio_path
30
+ else [{"start": 0.0, "end": 0.0, "speaker": "A", "text": transcript or ""}]
31
+ )
32
 
33
+ print(f"[orchestrator] TRANSCRIPT: {segments}")
 
 
 
 
 
34
 
35
+ # 2) Claim extraction (IBM)
36
+ claims: List[Claim] = extract_claims(segments)
37
+ print(f"[orchestrator] Claims extracted: {len(claims)}")
38
+ if not claims:
39
+ print("[orchestrator] No claims found; building minimal report.")
40
+ return make_report(segments, [], [], [], evidence_by_claim={})
41
 
42
+ # 3) Evidence retrieval (IBM embeddings + optional rerank)
43
+ claims, evmap = retrieve_evidence_for_claims(claims, k=8)
44
+ ev_count = sum(len(v) for v in evmap.values())
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
+ # Print evidence per claim (detailed)
47
+ print("[orchestrator] Evidence per claim (top k):")
48
+ for c in claims:
49
+ evs = evmap.get(c.id, [])
50
+ print(f" - Claim {c.id}: {c.text}")
51
+ for i, e in enumerate(evs, 1):
52
+ snippet_preview = _norm_snippet(e.snippet)[:200]
53
+ meta_preview = ""
54
+ try:
55
+ meta_preview = json.dumps(e.metadata, ensure_ascii=False)[:160]
56
+ except Exception:
57
+ meta_preview = str(e.metadata)[:160]
58
+ print(
59
+ f" {i:02d}. {e.source or e.doc_id} id={e.doc_id} score={e.score:.2f}"
60
+ )
61
+ print(f" {snippet_preview}")
62
+ if e.metadata:
63
+ print(f" meta: {meta_preview}")
64
 
65
+ # Flatten and deduplicate global evidence by normalized snippet, keeping highest score
66
+ flat: List[Evidence] = [e for lst in evmap.values() for e in lst]
67
+ by_snippet: Dict[str, Evidence] = {}
68
+ for e in flat:
69
+ key = _norm_snippet(e.snippet)
70
+ best = by_snippet.get(key)
71
+ if not best or (e.score or 0.0) > (best.score or 0.0):
72
+ by_snippet[key] = e
73
+ evidence_flat = list(by_snippet.values())
74
 
75
+ verdicts: List[Verdict] = verify(claims, evmap)
76
+ print(f"[orchestrator] Verifier produced {len(verdicts)} verdicts")
77
+ print("[orchestrator] Verdicts with citations:")
78
+ for v in verdicts:
79
+ cites = getattr(v, "citation_ids", [])
80
+ print(
81
+ f" - {v.claim_id}: {v.label} conf={v.confidence:.2f} best={v.best_evidence_id} cites={cites}"
82
+ )
83
+
84
+ # 5) Summarize
85
+ report = make_report(
86
+ segments, claims, evidence_flat, verdicts, evidence_by_claim=evmap
87
+ )
88
+ print(report.call_summary)
89
+ print("[orchestrator] DONE")
90
+ return report