Omówienie funkcji: wdrażanie przełączalnego trybu tłumaczenia na żywo

Nasza wtykowa struktura asystentów głosowych została zaprojektowana z myślą o maksymalnej elastyczności. W tym przewodniku przedstawiono potężną funkcję: tryb tłumaczenia na żywo, który można włączać i wyłączać za pomocą prostego polecenia głosowego. Wyobraź sobie, że rozmawiasz ze swoim asystentem po niemiecku i słyszysz komunikat po portugalsku, a następnie natychmiast wracasz do normalnego zachowania.

Osiąga się to nie poprzez zmianę podstawowego silnika, ale poprzez sprytną manipulację samym plikiem konfiguracyjnym reguł.

Jak z niego korzystać

Konfiguracja tego polega na dodaniu dwóch reguł do pliku FUZZY_MAP_pre.py i utworzeniu odpowiednich skryptów.

1. Reguła przełączania: Ta reguła nasłuchuje polecenia włączenia lub wyłączenia trybu tłumaczenia.

KOD_BLOKU_0 Kiedy powiesz „Übersetzung einschalten” (włącz tłumaczenie), zostanie wykonany skrypt toggle_translation_mode.py.

2. Reguła tłumaczenia: Jest to reguła typu „catch-all”, która, gdy jest aktywna, dopasowuje dowolny tekst i wysyła go do skryptu tłumaczącego.

KOD_BLOKU_1 Kluczem jest tutaj komentarz # TRANSLATION_RULE. Działa to jak „kotwica”, której skrypt przełączający używa do znajdowania i modyfikowania reguły znajdującej się poniżej.

Jak to działa: magia za kurtyną

Zamiast używać stanu wewnętrznego, ta metoda bezpośrednio edytuje mapę reguł w systemie plików. Skrypt toggle_translation_mode.py pełni rolę menedżera konfiguracji.

  1. Znajdź regułę: Po uruchomieniu skrypt odczytuje zawartość FUZZY_MAP_pre.py. Wyszukuje unikalny komentarz zakotwiczenia # TRANSLATION_RULE.

  2. Przełącz stan:

  • Aby wyłączyć: Jeśli linia reguły pod kotwicą jest aktywna, skrypt dodaje # na początku linii, skutecznie ją komentując i wyłączając.

  • Aby włączyć: Jeśli linia reguły jest już zakomentowana, skrypt ostrożnie usuwa wiodący #, ponownie aktywując regułę.

  1. Zapisz i załaduj ponownie: Skrypt zapisuje zmodyfikowaną zawartość z powrotem do FUZZY_MAP_pre.py. Następnie tworzy specjalny plik wyzwalacza (np. RELOAD_RULES.trigger). Główna usługa stale obserwuje ten plik wyzwalający. Kiedy się pojawi, usługa wie, że jej konfiguracja została zmieniona i ponownie ładuje całą mapę reguł z dysku, natychmiastowo stosując zmianę.

Filozofia projektowania: zalety i uwagi

To podejście polegające na bezpośredniej modyfikacji pliku konfiguracyjnego zostało wybrane ze względu na jego przejrzystość i prostotę dla użytkownika końcowego.

Zalety:

  • Wysoka przejrzystość: Aktualny stan systemu jest zawsze widoczny. Szybkie spojrzenie na plik FUZZY_MAP_pre.py natychmiast ujawnia, czy reguła tłumaczenia jest aktywna, czy też została skomentowana.

  • Brak zmian w silniku podstawowym: Ta zaawansowana funkcja została zaimplementowana bez zmiany ani jednej linii podstawowego silnika przetwarzania reguł. Pokazuje elastyczność systemu wtyczek.

  • Intuicyjny dla programistów: Koncepcja włączania lub wyłączania fragmentu konfiguracji poprzez skomentowanie go jest znanym, prostym i zaufanym wzorcem dla każdego, kto pracował z kodem lub plikami konfiguracyjnymi.

Rozważania:

  • Uprawnienia systemu plików: Aby ta metoda działała, proces asystenta musi mieć uprawnienia do zapisu własnych plików konfiguracyjnych. W niektórych środowiskach o wysokim poziomie bezpieczeństwa może to być brane pod uwagę.