my_voice_assistant_v3_jamulix/CHANGELOG.md
dschlueter f1eec47b9b chore: Version 0.3.6 + CHANGELOG (Modell-Browser) + qwen3.5-35b-a3b eval-verifiziert
CHANGELOG-Eintrag fuer den Cloud-Modell-Browser (0.3.6); qwen/qwen3.5-35b-a3b
in EVAL_VERIFIED (Tool-Calling-Test bestanden).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 02:49:28 +02:00

7.9 KiB
Raw Blame History

Changelog

Alle nennenswerten Änderungen an Alexis. Format lose nach Keep a Changelog; Versionierung nach SemVer (prä-1.0: 0.x).

[0.3.6] — 2026-07-01

Hinzugefügt

  • Modell-Browser (Cloud) im Admin (System-Tab): durchsuchbare OpenRouter-Modelle mit Tool-Badge ( im Eval bestätigt / 🔧 laut Anbieter), ⬆/⬇-Preisen pro Mio. Token und geschätzter „$/Antwort" (aus live gemessenem Turn-Token-Profil). „Verwenden" setzt openrouter_llm_model. Lokale Modelle: spätere Phase.
  • Token je Turn werden nun erfasst (Turn-Token-Profil, EMA) — Basis für „$/Antwort".
  • qwen/qwen3.5-35b-a3b als eval-verifiziert aufgenommen (Tool-Calling-Test bestanden).

[0.3.5] — 2026-06-30

Hinzugefügt

  • Kostenerfassung vervollständigt:
    • Filler-Übersetzung (OpenRouter) bucht jetzt ihre Ist-Kosten (Kategorie llm).
    • OpenRouter-TTS wird geschätzt erfasst (Zeichen × openrouter_tts_usd_per_char, Kategorie tts) — der Audio-Endpunkt liefert keine inline-usage. Preis im Admin live einstellbar (Default ≈ $15/1M Zeichen, an Modellpreis anpassen).

[0.3.4] — 2026-06-30

Hinzugefügt

  • Admin: Daten je Nutzer gezielt löschen — neue Knöpfe pro Nutzerkarte „Statistik zurücksetzen" (Anfragen/Web-Suchen/Kosten inkl. Budget-Zähler) und „Erinnerungen löschen". Konto und Verlauf bleiben; audit-geloggt.
  • Admin: Bulk „Alle Nutzerdaten löschen (Konten behalten)" (Gefahrenzone, doppelte Bestätigung): löscht für alle Nutzer Verlauf, Statistik, Erinnerungen und Notruf-Protokolle auf einmal; die Konten selbst bleiben. Das Audit-Log (System-Logger) bleibt unberührt.

Geändert

  • Nutzerliste alphabetisch (case-insensitive) statt nach Anlagedatum.
  • Nutzungsstatistik-Tabelle alphabetisch sortiert; die „Anfragen je Nutzer"- Balken bleiben nach Aktivität.

[0.3.3] — 2026-06-30

Hinzugefügt

  • Tarife der Kostenschätzung im Admin live einstellbar: Strompreis (€/kWh), Notruf-Kosten (€/Alarm), Cartesia ($/Zeichen).
  • local_llm_base_url live-setzbar (Admin-Live-Config; wirkt pro Request ohne Deploy) — lokale LLM-Basis-URL ohne Neustart umstellbar.
  • 15 weitere Beruhigungssätze für die Web-Suche (Opening 12 → 27, zufällige Auswahl).

Behoben

  • Stille bei „kein Treffer": Kommt keine Antwort (z. B. Web-Suche ohne Ergebnis), sagt das System jetzt eine freundliche, lokalisierte Mitteilung („Dazu konnte ich leider keine Informationen finden.") statt stumm zu bleiben.
  • Immer gleicher Beruhigungssatz lag an einem alten Übersetzungs-Cache; wird beim Start mit der formalen „Sie"-Übersetzung neu gefüllt.

[0.3.2] — 2026-06-30

Hinzugefügt

  • Pro-Nutzer-Kostenerfassung (USD). Zentraler CostMeter (ContextVars, multitool-ready, app/core/costs.py); Konzept in Docs/kosten-erfassung.md.
    • Exakt: Alle OpenRouter-Calls (LLM, Web-Suche/Sonar, Koreferenz, Fallback) senden usage:{include:true} und buchen die Ist-Kosten je Kategorie (llm/web_search) — inkl. finalem Streaming-usage-Chunk.
    • Geschätzt: lokales LLM (Call-Dauer × Strom-Formel, marginaler GPU-Verbrauch, llm_local), Cartesia-TTS (Zeichen × Preis, tts), Notruf (pro Webhook-Alarm, alert, nur Doku — nie Sperre). Sätze konfigurierbar (GPU-Watt/Last, Strompreis, usd_per_eur, Cartesia-Preis, Alarm-Preis).
    • cost_usage-Tabelle (Nutzer/Tag/Kategorie); Statistik-Spalten „Kosten (Monat)"
      • „Ø/Anfrage", Tooltip „davon geschätzt" und Summenzeile „exakt vs. geschätzt".
  • $-Tagesbudget pro Nutzer (cost_daily_limit_usd, Pref > global, 0 = unbegrenzt): ist das Web-Such- oder Kostenbudget aufgebraucht, wird die Web-Suche für den Turn ausgesetzt (+ freundlicher Hinweis). Admin-Eingabe + globales Live-Setting.
  • Nutzungsstatistik: Spalte „mit Websuche" je Nutzer (total_web_searches).

[0.3.1] — 2026-06-30

Hinzugefügt

  • Admin: „Verlauf löschen" pro Nutzer — löscht Sessions + Nachrichten eines Nutzers, ohne Konto/Erinnerungen/Nutzungsdaten (Button + DELETE /api/admin/users/{id}/history, audit-geloggt).
  • Web-Suche pro Nutzer ein-/ausschaltbar (Admin-Checkbox). web_search_enabled fehlte im AdminUserPrefsUpdate-Schema und wurde still verworfen — jetzt wirksam.
  • Web-Such-Budget pro Nutzer/Tag (web_search_daily_limit, 0 = unbegrenzt; Pref > global): Tageszähler (web_search_usage); ist das Kontingent aufgebraucht, wird die Web-Suche für den Turn ausgesetzt. Admin-Eingabefeld.
  • Freundliche Hinweise: Ist die Web-Suche bei einer klar tagesaktuellen Frage nicht verfügbar (abgeschaltet oder Kontingent aufgebraucht), erscheint eine kleine, lokalisierte System-Notiz in der Unterhaltung.

Behoben

  • Veraltete Dev-Datenbank (data/voice-assistant.db) entfernt; Produktiv-DB liegt unter /var/lib/voice-assistant/ (Doku-Klarstellung der Prod/Dev-Trennung).

[0.3.0] — 2026-06-30

Hinzugefügt

  • Web-Suche per Tool-Calling („Weg 2"): Das zentrale Modell entscheidet selbst, ob eine Frage tagesaktuelle Fakten braucht, holt sie über perplexity/sonar und formuliert die Antwort in Persona (Vorrang fürs frische Faktum). Standard an, pro Nutzer/Profil abschaltbar (web_search_enabled). Quellen-Links unter der Antwort. Ausführliche Referenz: Docs/weg2-tool-calling.md.
  • Deterministischer Such-Backstop für heikle Kategorien (aktuelle Amtsträger, Wohnort lebender Personen, „lebt X noch", Öffnungszeiten/Fahrpläne): diese suchen immer — auch auf einem tool-unfähigen Modell (Fakten als System-Kontext).
  • Beruhigungssätze während der Recherche: zufällige, in die Zielsprache übersetzte „Sie"-Sätze (sofort gesprochen — Server- und Geräte-TTS, sowie in der Status-Zeile); bei langer Recherche Geduldssätze (Abstand ≥ 10 s). Eine Pflege- Stelle (app/pipeline/fillers.py, Englisch).
  • Zentrale Datum-/Uhrzeit-Auskunft (app/core/clock.py): in alle LLM-System- Prompts injiziert → relative Zeitangaben („heute", „morgen", „nächsten Montag", „in 3 Stunden") werden aufgelöst.
  • Koreferenz-Vorstufe (Pronomen-Folgefragen) + Metriken tool_calls_total, sonar_calls_total, search_forced_total, tool_unsupported_total.

Geändert

  • Standard-LLM: mistralai/mistral-small-3.2-24b-instruct (tool-fähig; im Tool-Calling-Eval einziger Recall-Gate-Passer). Die frühere Baseline mistralai/mistral-small-24b-instruct-2501 kann kein Tool-Calling — nicht mehr dorthin zurückstellen, solange die Web-Suche aktiv ist.

[0.2.0] — 2026-06-27

Geändert

  • Marke: Produkt heißt jetzt Alexis (Anzeigename); technische Identifier (Dienst, Pfade, Paketname, Konfig-/DB-Dateinamen) bleiben unverändert.
  • Version wird im UI (Kopfzeile) und unter /api/config (version) angezeigt; eine Quelle der Wahrheit ist pyproject.toml.

Hinzugefügt

  • Aufgeräumtes Vorlese-Menü: nicht nutzbare TTS-Provider werden ausgeblendet (statt ausgegraut). Backend liefert die fertige Sichtbarkeit (tts_menu), „Im Gerät" nur auf Mobilgeräten. /api/config wird serverseitig gecacht (spart die zuvor pro Seitenladen ausgelöste, kostenpflichtige OpenRouter-Probe).
  • GPU-Erkennung: Setting GPUS (auto|none|"0,1,2"), an CUDA_VISIBLE_DEVICES gekoppelt; zentrale Erkennung in app/capabilities.py.

Behoben

  • Stimm-Geschlechtswahl wirkt wieder: voice_gender fehlte im UserPrefs-Schema und wurde still verworfen → es kam immer die weibliche Stimme. Feld ergänzt (+ Regressions-Test).
  • Geräte-TTS folgt der Geschlechtswahl (Heuristik über Stimmname/voiceURI), sonst Server-Fallback.

[0.1.0]

  • Erste interne Version: modulares Gateway (STT/LLM/TTS austauschbar), Profile, Provider-Registries, Notruf-Eskalation, Auto-Erinnerungen, Admin-Panel, Auth/SSO + Passwort-Login.