Einstellbare Tarife, local_llm_base_url live-setzbar, 15 weitere Filler, Mitteilung bei "kein Treffer". Version 0.3.2 -> 0.3.3. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6.2 KiB
6.2 KiB
Changelog
Alle nennenswerten Änderungen an Alexis. Format lose nach Keep a Changelog;
Versionierung nach SemVer (prä-1.0: 0.x).
[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_urllive-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 inDocs/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".
- Exakt: Alle OpenRouter-Calls (LLM, Web-Suche/Sonar, Koreferenz, Fallback)
senden
- $-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_enabledfehlte imAdminUserPrefsUpdate-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/sonarund 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 Baselinemistralai/mistral-small-24b-instruct-2501kann 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 istpyproject.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/configwird serverseitig gecacht (spart die zuvor pro Seitenladen ausgelöste, kostenpflichtige OpenRouter-Probe). - GPU-Erkennung: Setting
GPUS(auto|none|"0,1,2"), anCUDA_VISIBLE_DEVICESgekoppelt; zentrale Erkennung inapp/capabilities.py.
Behoben
- Stimm-Geschlechtswahl wirkt wieder:
voice_genderfehlte imUserPrefs-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.