|
|
@@ -152,16 +152,23 @@ class LlmConfig:
|
|
|
"Output only the summary."
|
|
|
)
|
|
|
triage_system_prompt: str = (
|
|
|
- "You maintain a living brief of a business conversation. Given the current brief "
|
|
|
- "(your previous reply, if any) and a new transcript segment, return the UPDATED "
|
|
|
- "brief as plain text only, with no markdown fences and no JSON. Open with a Summary "
|
|
|
- "section: a rolling overview of the conversation so far, one to a few sentences for "
|
|
|
- "a short session and growing to a short paragraph or two as the session extends. "
|
|
|
- "Preserve prior content unless the new segment contradicts it; merge duplicates; "
|
|
|
- "prune stale items; keep owners, responsibilities, and deadlines explicit. Use short "
|
|
|
- "sections: Summary, Opportunities, Blockers/Risks, Responsibilities, Decisions, "
|
|
|
- "Action Items, Deadlines, Open Questions. Output the brief text directly; never "
|
|
|
- "emit tool calls, function-call syntax, or special wrapper tokens."
|
|
|
+ "You maintain a living brief of a business conversation. The caller sends "
|
|
|
+ "CURRENT LEDGER plus CURRENT BRIEF plus NEW UTTERANCES. Reply with exactly "
|
|
|
+ "two sections in this order: NEW FACTS: first, then BRIEF:. Facts go first "
|
|
|
+ "so a truncated reply still preserves extraction (truncation safety). In "
|
|
|
+ "NEW FACTS:, emit one fact per line as '- <fact>', or the single line "
|
|
|
+ "'none' when the new utterances add no new facts. Never repeat facts "
|
|
|
+ "already listed in CURRENT LEDGER. In BRIEF:, return the UPDATED brief as "
|
|
|
+ "plain text only, with no markdown fences and no JSON. Open with a Summary "
|
|
|
+ "section: a rolling overview of the conversation so far, one to a few "
|
|
|
+ "sentences for a short session and growing to a short paragraph or two as "
|
|
|
+ "the session extends. Preserve prior content unless the new utterances "
|
|
|
+ "contradict it; merge duplicates; prune stale items; keep owners, "
|
|
|
+ "responsibilities, and deadlines explicit. Use short sections: Summary, "
|
|
|
+ "Opportunities, Blockers/Risks, Responsibilities, Decisions, Action Items, "
|
|
|
+ "Deadlines, Open Questions. Never emit a 'Prior Details:' section. Output "
|
|
|
+ "the two sections directly; never emit tool calls, function-call syntax, "
|
|
|
+ "or special wrapper tokens."
|
|
|
)
|
|
|
inference_queue_size: int = 8
|
|
|
trim_block_turns: int = 4
|
|
|
@@ -194,6 +201,7 @@ class TriageConfig:
|
|
|
extract_enabled: bool = True
|
|
|
extract_max_tokens: int = 3072
|
|
|
extract_timeout_s: float = 30.0
|
|
|
+ extract_temperature: float = 0.2
|
|
|
brief_slot_id: int | None = None
|
|
|
brief_gate_enabled: bool = True
|
|
|
brief_gate_threshold: float = 0.5
|
|
|
@@ -575,6 +583,9 @@ def load_config(path: str | None = None) -> Config:
|
|
|
extract_timeout_s=triage_data.get(
|
|
|
"extract_timeout_s", cfg.triage.extract_timeout_s
|
|
|
),
|
|
|
+ extract_temperature=triage_data.get(
|
|
|
+ "extract_temperature", cfg.triage.extract_temperature
|
|
|
+ ),
|
|
|
brief_slot_id=_optional_int(triage_data.get("brief_slot_id")),
|
|
|
brief_gate_enabled=triage_data.get(
|
|
|
"brief_gate_enabled", cfg.triage.brief_gate_enabled
|