DIY KI-Schreibassistent mit Phi-3 Mini und Python
In der heutigen schnelllebigen Büroumgebung können kleine Tipp- und Grammatikfehler Ihre Professionalität untergraben. Diese Anleitung zeigt Ihnen, wie Sie einen schlanken KI-Schreibassistenten erstellen, der lokal auf Ihrem Windows-Computer läuft und Ihnen hilft, schneller und genauer zu schreiben.
Sie erstellen ein Tool, das im Hintergrund läuft und bereit ist, Fehler mit einem einfachen Tastendruck zu korrigieren. Drücken Sie F9, um die aktuelle Zeile zu korrigieren, oder F10, um den ausgewählten Text zu korrigieren. Der Assistent korrigiert Tippfehler, Satzzeichen und verbessert die Grammatik. Und das alles ohne Internetverbindung, um sicherzustellen, dass Ihre Daten privat bleiben.
Warum wir uns für phi3:mini entschieden haben
Für dieses Projekt verwenden wir das Modell phi3:mini, ein 3,8-Milliarden-Parameter-Kraftpaket, das die perfekte Balance zwischen Effizienz und Leistung für unseren Schreibassistenten bietet.
- Überlegene Effizienz: Mit fast der halben Größe von Modellen wie Mistral 7B ist
phi3:minideutlich schneller und ressourceneffizienter, was schnelle Reaktionszeiten ohne Belastung Ihres Computers gewährleistet. - Hervorragende Leistung: Trotz seiner geringeren Größe liefert
phi3:minieine Qualität, die fast der von GPT-3.5 für Textkorrekturaufgaben entspricht, und übertrifft viele größere Modelle auf dem Open LLM Leaderboard. - Hardware-freundlich: Es läuft effizient auf Standard-Bürocomputern, ohne dass High-End-GPUs erforderlich sind, was es ideal für den Einsatz am Arbeitsplatz macht.
- Mehrsprachige Unterstützung: Phi-3 Mini wurde auf vielfältigen Datensätzen trainiert und eignet sich gut für die Textkorrektur in mehrsprachigen Umgebungen.
Was Sie erstellen werden
Sie erstellen ein Python-Skript, das:
- Im Hintergrund auf Ihrem Windows-Rechner läuft.
- Auf Hotkeys (F9 und F10) lauscht, um die Textkorrektur auszulösen.
- Eine lokale Ollama-Instanz mit
phi3:miniverwendet, um Ihren Text zu verarbeiten und zu korrigieren. - Sprach- und Stilwechsel mit zusätzlichen Hotkeys unterstützt.
Schritt 1: Richten Sie Ihre Umgebung ein
1. Installieren Sie Ollama:
- Laden Sie Ollama von ollama.com herunter.
- Führen Sie das Installationsprogramm aus und folgen Sie dem Einrichtungsassistenten.
- Öffnen Sie die Eingabeaufforderung und führen Sie den folgenden Befehl aus, um das Modell
phi3:miniherunterzuladen (ca. 2,2 GB):ollama run phi3:mini
2. Installieren Sie Python-Abhängigkeiten:
- Öffnen Sie die Eingabeaufforderung und führen Sie aus:
pip install pynput pyperclip httpx
Schritt 2: Schreiben Sie den Code
Erstellen Sie eine neue Datei mit dem Namen typing_assistant.py und fügen Sie den folgenden Code ein. Dieses Skript stellt die Verbindung zu Ollama her, definiert die Prompt-Vorlagen für die Textkorrektur und konfiguriert die Tastatur-Listener für die Hotkeys.
import time
import httpx
from string import Template
from pynput import keyboard
from pynput.keyboard import Key, Controller
import pyperclip
# Tastatur-Controller initialisieren
controller = Controller()
# Ollama-Konfiguration
OLLAMA_ENDPOINT = "http://localhost:11434/api/generate"
OLLAMA_CONFIG = {
"model": "phi3:mini",
"keep_alive": "5m",
"stream": False,
}
# Sprach- und Stileinstellungen
current_language = "de" # Standard: Deutsch
current_style = "standard" # Standard: Standardstil
# Prompt-Vorlagen für verschiedene Sprachen und Stile
PROMPT_TEMPLATES = {
"en": {
"standard": Template("""
Fix all typos and casing and punctuation
in this text,
but preserve all new line characters:
$text
Return only the corrected text,
don't include a preamble.
"""),
"formal": Template("""
Fix all typos, grammar,
and punctuation in this text
to make it more formal and professional.
Preserve all new line characters:
$text
Return only the corrected text,
don't include a preamble.
"""),
"casual": Template("""
Fix all typos and punctuation in this text,
but keep a casual, conversational tone.
Preserve all new line characters:
$text
Return only the corrected text,
don't include a preamble.
"""),
},
"de": {
"standard": Template("""
Korrigiere alle Tippfehler,
Großschreibung und Zeichensetzung in diesem Text,
aber behalte alle Zeilenumbrüche bei:
$text
Gib nur den korrigierten Text zurück,
ohne eine Einleitung.
"""),
"formal": Template("""
Korrigiere alle Tippfehler,
Grammatik und Zeichensetzung in diesem Text,
um es formeller und professioneller zu gestalten.
Behalte alle Zeilenumbrüche bei:
$text
Gib nur den korrigierten Text zurück,
ohne eine Einleitung.
"""),
"casual": Template("""
Korrigiere alle Tippfehler und Zeichensetzung
in diesem Text, aber behalte einen lockeren,
konversationellen Ton bei.
Behalte alle Zeilenumbrüche bei:
$text
Gib nur den korrigierten Text zurück,
ohne eine Einleitung.
"""),
},
}
def fix_text(text):
"""Text zur Korrektur an Ollama senden"""
template = PROMPT_TEMPLATES[current_language][current_style]
prompt = template.substitute(text=text)
try:
response = httpx.post(
OLLAMA_ENDPOINT,
json={"prompt": prompt, **OLLAMA_CONFIG},
headers={"Content-Type": "application/json"},
timeout=10,
)
if response.status_code != 200:
print("Fehler:", response.status_code)
return None
return response.json()["response"].strip()
except Exception as e:
print("Fehler bei der Verbindung mit Ollama:", e)
return None
def fix_current_line():
"""Korrigiert die aktuelle Zeile mit Strg+Umschalt+Pos1 zur Auswahl"""
# Markiert die aktuelle Zeile: Strg+Umschalt+Pos1
controller.press(Key.ctrl)
controller.press(Key.shift)
controller.press(Key.home)
controller.release(Key.ctrl)
controller.release(Key.shift)
controller.release(Key.home)
time.sleep(0.1)
fix_selection()
def fix_selection():
"""Korrigiert den aktuell ausgewählten Text"""
# Auswahl in die Zwischenablage kopieren
with controller.pressed(Key.ctrl):
controller.tap('c')
time.sleep(0.1)
text = pyperclip.paste()
if not text:
return
# Text korrigieren
fixed_text = fix_text(text)
if not fixed_text:
return
# Korrigierten Text einfügen
pyperclip.copy(fixed_text)
time.sleep(0.1)
with controller.pressed(Key.ctrl):
controller.tap('v')
def switch_to_english():
"""Sprache auf Englisch umstellen"""
global current_language
current_language = "en"
print("Switched to English")
def switch_to_german():
"""Sprache auf Deutsch umstellen"""
global current_language
current_language = "de"
print("Zu Deutsch gewechselt")
def set_style_standard():
"""Stil auf Standard setzen"""
global current_style
current_style = "standard"
print("Stil auf Standard gesetzt")
def set_style_formal():
"""Stil auf formell setzen"""
global current_style
current_style = "formal"
print("Stil auf formell gesetzt")
def set_style_casual():
"""Stil auf lässig setzen"""
global current_style
current_style = "casual"
print("Stil auf lässig gesetzt")
def on_f9():
"""F9-Hotkey behandeln - aktuelle Zeile korrigieren"""
fix_current_line()
def on_f10():
"""F10-Hotkey behandeln - Auswahl korrigieren"""
fix_selection()
def show_status():
"""Aktuelle Sprache und Stil anzeigen"""
lang_name = "Englisch" if current_language == "en" else "Deutsch"
print(f"Aktuelle Sprache: {lang_name}, Stil: {current_style}")
if __name__ == "__main__":
print("KI-Schreibassistent läuft...")
print("Hotkeys:")
print(" F9: Aktuelle Zeile korrigieren")
print(" F10: Auswahl korrigieren")
print(" Strg+F1: Auf Englisch umschalten")
print(" Strg+F2: Auf Deutsch umschalten")
print(" Strg+F3: Stil auf Standard setzen")
print(" Strg+F4: Stil auf formell setzen")
print(" Strg+F5: Stil auf lässig setzen")
print(" Strg+F6: Aktuellen Status anzeigen")
print("Drücken Sie Strg+C in diesem Fenster, um zu beenden")
# Hotkeys einrichten
with keyboard.GlobalHotKeys({
'<120>': on_f9, # F9
'<121>': on_f10, # F10
'<ctrl>+<f1>': switch_to_english,
'<ctrl>+<f2>': switch_to_german,
'<ctrl>+<f3>': set_style_standard,
'<ctrl>+<f4>': set_style_formal,
'<ctrl>+<f5>': set_style_casual,
'<ctrl>+<f6>': show_status,
}) as h:
h.join()
Schritt 3: Ausführen und Testen
- Öffnen Sie die Eingabeaufforderung in dem Ordner, in dem Sie
typing_assistant.pygespeichert haben. - Führen Sie den Assistenten aus:
python typing_assistant.py - Öffnen Sie einen beliebigen Texteditor (Notepad, Word usw.) und beginnen Sie zu tippen.
Testen Sie die englische Korrektur:
- Geben Sie ein:
Hello World, this is a test. - Drücken Sie F9. Der Text sollte korrigiert werden zu:
Hello world this is a test
Testen Sie die deutsche Korrektur:
- Drücken Sie Strg+F2, um auf Deutsch umzuschalten.
- Geben Sie ein:
Hallo World, das ist ein test. - Drücken Sie F9. Der Text sollte korrigiert werden zu:
Hallo Welt das ist ein Test
Fehlerbehebung
- Fehler beim Verbinden mit Ollama: Stellen Sie sicher, dass Ollama läuft. Sie können dies überprüfen, indem Sie
ollama listin der Eingabeaufforderung ausführen. - Hotkeys funktionieren nicht: Versuchen Sie, das Skript als Administrator auszuführen. Überprüfen Sie, ob ein anderes Programm dieselben Hotkeys verwendet.
- Langsame Korrekturen: Die erste Korrektur kann langsamer sein, da das Modell geladen wird. Nachfolgende Verwendungen werden schneller sein.
Herzlichen Glückwunsch! Sie haben einen leistungsstarken KI-Schreibassistenten erstellt, der Ihnen hilft, selbstbewusster und professioneller zu schreiben.