mirror of
https://github.com/Jeuners/Logpy-AgentOne.git
synced 2026-09-09 15:02:33 +02:00
feat: OpenRouter-Backend + Modell-Dropdown im Leitstand, Live-Log fuer Dauer/Tokens/Kosten
Zweites Kategorisierungs-Backend neben Ollama (pipe/categorize.py), fuer Vergleichstests mit staerkeren Cloud-Modellen. Umschaltbar per Dropdown oben rechts im Leitstand (pipe/modellwahl.py, geteilte telefon/modell.json) - der laufende Watcher braucht dafuer keinen Neustart, die Auswahl wird bei jedem Anruf frisch gelesen. Jede Kategorisierung loggt jetzt Backend/Modell/Dauer/Tokens/Kosten mit ins Leitstand-Verlauf (protokoll.schreibe), nicht nur versteckt in meta.json. Testergebnis (Nemotron ueber OpenRouter, :free-Tier): stark schwankende Latenz (8,5s bis 80s je nach Modell/Auslastung), einmal 502 "temporarily overloaded" - :free-Modelle sind fuer spaeter geplanten Echtzeit-Dialog ungeeignet, dafuer braucht es ein bezahltes/dediziertes Tier. telefon/modell.json ist Laufzeit-Zustand, kein Quellcode - neu ignoriert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015vtvcyNkapuDh583643hNs
This commit is contained in:
parent
4109aee1bb
commit
3e2d829542
7 changed files with 230 additions and 18 deletions
|
|
@ -29,7 +29,7 @@ def verarbeite(audio: str, anrufer_nummer: str | None = None,
|
|||
|
||||
print("▸ Kategorisiere …")
|
||||
if t.text.strip():
|
||||
auswertung = categorize.kategorisiere(t.text)
|
||||
auswertung, meta = categorize.kategorisiere(t.text)
|
||||
else:
|
||||
# Kein Text erkannt: Anrufer hat nach dem Signalton nicht gesprochen
|
||||
# oder sofort aufgelegt (oder eine bekannte Whisper-Halluzination
|
||||
|
|
@ -46,13 +46,26 @@ def verarbeite(audio: str, anrufer_nummer: str | None = None,
|
|||
"aufgelegt.",
|
||||
"stichworte": [],
|
||||
}
|
||||
print(f" Kategorie: {auswertung['kategorie']} · Dringlichkeit: {auswertung['dringlichkeit']}")
|
||||
meta = {"backend": "-", "modell": "-", "dauer_s": 0.0, "tokens": None, "kosten_usd": None}
|
||||
print(f" Kategorie: {auswertung['kategorie']} · Dringlichkeit: {auswertung['dringlichkeit']}"
|
||||
f" ({meta['modell']}, {meta['dauer_s']}s)")
|
||||
|
||||
# Dauer/Tokens/Kosten mit ins Live-Log (Leitstand-Verlauf), nicht nur in
|
||||
# den JSON-Feldern versteckt - fuer den Modell-Vergleich (Dropdown oben
|
||||
# rechts) muss man das sofort sehen, ohne meta.json aufzuklappen.
|
||||
zusatz = f"{meta['dauer_s']}s"
|
||||
if meta.get("tokens"):
|
||||
zusatz += f" · {meta['tokens']} Tok"
|
||||
if meta.get("kosten_usd"):
|
||||
zusatz += f" · ${meta['kosten_usd']:.4f}"
|
||||
protokoll.schreibe(
|
||||
"notfall" if auswertung["dringlichkeit"] == "notfall" else "anruf",
|
||||
f"{auswertung['kategorie']} · {auswertung['dringlichkeit']}"
|
||||
+ (f" · {auswertung['anrufer_name']}" if auswertung.get("anrufer_name") else ""),
|
||||
+ (f" · {auswertung['anrufer_name']}" if auswertung.get("anrufer_name") else "")
|
||||
+ f" ({meta['modell']}, {zusatz})",
|
||||
nummer=anrufer_nummer, kategorie=auswertung["kategorie"],
|
||||
dringlichkeit=auswertung["dringlichkeit"])
|
||||
dringlichkeit=auswertung["dringlichkeit"], modell=meta["modell"],
|
||||
dauer_s=meta["dauer_s"], tokens=meta.get("tokens"), kosten_usd=meta.get("kosten_usd"))
|
||||
|
||||
bekannter_kontakt = kontakte.nachschlagen(anrufer_nummer)
|
||||
if bekannter_kontakt:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue