gptel-translate.el
ist ein Paket, das die Übersetzung mit gptel unterstützt.
Es übergibt den zu übersetzenden Text
und die
Eingangs- sowie Ausgabesprache
an ein LLM
und erhält das Übersetzungsergebnis.
-
Sie können beliebige LLMs verwenden, die von gptel unterstützt werden (OpenAI, Gemini, Ollama usw.).
-
Die Prompts werden automatisch an das jeweilige Modell angepasst.
-
Die Quellsprache und die Zielsprache lassen sich jederzeit über die Mini-Buffer-Vervollständigung ändern.
Hinweis
Dieses Paket ist in der alpha-Version und kann sich erheblich ändern.
Installation und Konfiguration
-
Abrufen des Pakets
git clone https://github.com/TPKato/gptel-translate.git ~/.emacs.d/site-lisp/gptel-translate -
Laden und Konfigurieren des Pakets
Hier wird ein Beispiel für die Verwendung von
use-package.(use-package gptel-translate :load-path "site-lisp/gptel-translate" :config ;; Falls erforderlich, Konfiguration für gptel einrichten (z. B. ;; Modell hinzufügen) ;; Hier kann diese Konfiguration ebenfalls erfolgen, aber es wird ;; empfohlen, dies über (use-package gptel ...) zu tun (gptel-make-openai "ollama" :host "localhost:11434" :protocol "http" :endpoint "/v1/chat/completions" :stream t :models '(translategemma:4b mitmul/plamo-2-translate:latest)) :custom ;; Standardsprache (wird als Default verwendet, falls im Buffer keine gesetzt ist) (gptel-translate-default-lang-from "Japanese") (gptel-translate-default-lang-to "English") :bind ; optional (("C-c t" . gptel-translate-mode)))
Verwendung (Beispiel)
-
Auswählen eines Modells in
gptelStarten Sie zuerst
gptelund wählen Sie das gewünschte LLM-Modell aus.M-x gptel-menu RET -m ;; Modell auswählen M-x gptel ;; gptel-Interaktionsmodus starten -
Aktivieren des
gptel-translate-modeM-x gptel-translate-modeOder drücken Sie die in
use-packagedefinierte Taste (z. B.C-c t). -
Senden des Textes
-
Geben Sie den zu übersetzenden Text im Eingabebereich von
gptelein. -
Senden Sie es mit
M-x gptel-send(C-c C-m). Wenn keine Eingangs- oder Ausgabesprache festgelegt ist, wird diese über den Mini-Buffer abgefragt. -
Mit
C-u M-x gptel-send(C-u C-c C-m) können Sie die Sprachpaare interaktiv neu festlegen. Durch Eingabe vonrevals Eingabessprache werden die aktuellen Eingabe-/Ausgabesprachen vertauscht.
-
Kommandos
-
gptel-translate-mode -
Aktiviert/Deaktiviert den Übersetzungsmodus.
-
gptel-translate-change-languages -
Legt die Sprachpaare interaktiv fest. Bei der Eingabe von
revwird die Eingabe-/Ausgabesprache vertauscht. -
gptel-translate-swap-languages -
Vertauscht die aktuell eingerichteten Eingabe-/Ausgabesprachen.
Funktionsweise von gptel-send
Wenn der gptel-translate-mode aktiv ist, funktioniert gptel-send wie folgt:
-
M-x gptel-send -
Sendet den Prompt an das LLM.
-
C-u M-x gptel-send -
Fragt den Benutzer nach der Übersetzungssprache, bevor der Prompt gesendet wird.
-
C-u C-u M-x gptel-send -
Ruft die ursprüngliche
C-u M-x gptel-sendauf, d. h.gptel-menu.
Konfiguration von Modellgruppen für die Übersetzung
In gptel-translate.el werden Übersetzungsmodellgruppen definiert und verwaltet.
Eine Übersetzungsmodellgruppe besteht aus:
-
Ein eindeutiger Identifier
-
LLM-Modells
-
Übersetzungssprache
-
Prompt-Transformationsfunktion
Standards Übersetzungsmodellgruppen
Standardmäßig sind die folgenden Übersetzungsmodellgruppen registriert (Sprachen ausgelassen). Details entnehmen Sie dem Quellcode.
"translategemma"
:models '(translategemma:4b translategemma:12b)
:languages '( ... )
:transform #'gptel-translate--transform-translategemma"plamo-translate"
:models '(plamo-2-translate mmnga/plamo-2-translate-gguf mitmul/plamo-2-translate)
:languages '( ... )
:transform #'gptel-translate--transform-plamoAußerdem gibt es als Fallback die folgende Gruppierung: Wenn das aktuelle Modell nicht in einer definierten Übersetzungsmodellgruppe enthalten ist, wird diese verwendet.
gptel-translate-generic-group-name
:languages '( ... )
:transform #'gptel-translate--transform-genericHinzufügen einer eigenen Übersetzungsmodellgruppe
Sie können Ihre eigene Gruppe wie folgt definieren. Falls bereits ein gleichnamiger Gruppe existiert, wird sie überschrieben.
(defun gptel-translate--transform-mymodel (srclang dstlang)
;; Hier die benötigte Verarbeitung (Promptänderung) einfügen
;;
;; https://gptel.org/manual.html#orgbd9b14b ansehen
;; (9. Configuration > 9.1. The anatomy of gptel-send)
)
(gptel-translate-make-model-group
"my-model-group" ; Einzigartiger Gruppenname
:models '(model-1 model-2)
:languages '("Japanese" "German" "English" "French")
:transform #'gptel-translate--transform-mymodel)- Identifikator (String)
-
Geben Sie den Gruppenname als erstes Argument ein. Beliebig, solange eindeutig.
-
:models(Symbol-Liste) -
Liste der zu nutzenden LLM-Modelle.
-
:languages(String-Liste) -
Auto‑Vervollständigungsoptionen für Eingabe‑/Ausgabesprachen. Sie müssen nicht alle unterstützten Sprachen aufführen.
-
:transform(String-Liste) -
Funktion, die den Prompt umwandelt.
Teilweise Aktualisierung von Modellgruppen
Wenn Sie einen Teil einer definierten Modellgruppe ändern möchten,
verwenden Sie gptel-translate-update-model-group.
(gptel-translate-update-model-group
"my-group"
:languages '("Japanese" "English")
:models '(model-1 model-2))
Hier werden die :languages und :models des Modellgruppen my-group aktualisiert,
ohne den :transform zu ändern.
Wenn Sie die Sprache der Modellgruppe für den Fallback ändern möchten, können Sie dies wie folgt tun:
(gptel-translate-update-model-group
gptel-translate-generic-group-name
:languages '("English" "German"))Technische Hintergründe (Internes Design)
Wenn gptel-translate.el geladen wird, geschieht Folgendes:
-
Es wird ein Advice
gptel-translate--advice-gptel-sendzugptel-sendhinzugefügt, um das Verhalten des Präfixes (C-u) anzupassen. -
Die Hook-Funktion
gptel-prompt-transform-functionsbekommtgptel-translate--prompt-transformhinzugefügt.
Wenn gptel-translate-mode non-nil ist und gptel-send ausgeführt
wird, wird gptel-translate--prompt-transform via den Hook
gptel-prompt-transform-functions ausgeführt.
Diese Funktion holt die für das aktuelle Modell passende Transformationsfunktion aus der definierten Übersetzungsmodellgruppe und wendet sie an, um den Prompt vor dem Senden entsprechend anzupassen.
Wenn gptel-translate-mode nil ist, beeinflussen weder
gptel-translate--advice-gptel-send noch
gptel-translate--prompt-transform die Funktion des gptel-send.
Testumgebung
-
GNU Emacs 30.2 + gptel 0.9.9.3 auf Arch Linux
-
LM Studio 0.3.37 auf Windows 11
-
mmnga/plamo-2-translate-gguf
-
-
Ollama 0.14.0 auf Windows 11
-
mitmul/plamo-2-translate:latest
-
translategemma:4b
-
Repository
Lizenz
-
GPL-3.0