Cyborgscode / Personal-Voice-Assistent

Building a fully featured and localized voice assistant for Linux
141 stars 6 forks source link

ChatGPT collides with REPEAT command #18

Closed Cyborgscode closed 1 year ago

Cyborgscode commented 1 year ago

Problem: Kommando "nochmal" kann in ChatGPT - GAPFILLER - Anweisungen vorkommen.

Satz: "{KEYWORD} wie war nochmal die Höhe des World Trade Centers als es noch stand"

Das Wort "nochmal" ist in der Default-Konfiguration hinterlegt um die letzte Anweisung zu wiederholen:

/etc/pva/conf.d/01-default.conf:command:"nochmal","REPEATLASTCOMMAND",""

Da das Wort zu einfach ist, wird es in dem Satz oben erkannt und ChatGPT nicht aufgerufen, sondern REPEATLASTCOMMAND ausgeführt.

Der Wechsel zu einer REGEXP ist nötig. Der Ansatz "^nochmal$" funktioniert aber nicht, weil :

( cc.words.contains(".") && text.matches( "."+ cc.words +".*" ) )

also auf ".^nochmal$." geprüft wird, was totaler Unsinn ist. Wenn man jetzt eine freie RegExp zulässt als Kommando, dann müßte man alle möglichen RegExpAnweisungen erkennen und ausfiltern. d.b. da RegExp's unendlich kompliziert sein können, könnnen diese nicht zu 100% ausgefiltert werden. Der Modus hätte also gewichtige Nachteile z.b. das keine Argumente erkannt werden können.

Cyborgscode commented 1 year ago

KOMPROMISS:

wir führen "REGEXP:" im Kommandoparser ein und setzen "text" direkt auf "" , also keine erkannten Argumente.

Damit lassen sich sinnvolle Anweisungen bauen, ohne den Code zu kompliziert zu gestalten. Sollte jemand einen Pull Request bauen, der eine Lösung beinhaltet, wird diese geprüft und ggf. eingebunden.