Blog

Prompt Engineering für lokale LLMs: Von gewöhnlichen Prompts zu genaueren Ergebnissen

Prompt Engineering für lokale LLMs: Von gewöhnlichen Prompts zu genaueren Ergebnissen

Ich erinnere mich noch an das erste Mal, als ich LLM lokal auf meinem gebrauchten Laptop ausgeführt habe. Es fühlt sich an, als wäre es gerade erst gebaut worden Assistent Privatsphäre in der Ecke des Raumes: Kein Internet erforderlich, kein API-Abonnement erforderlich und vor allem – Daten gehen nirgendwo hin. Doch die Euphorie ließ schnell nach, als ich anfing, etwas komplexe Fragen zu stellen. „Erklären Sie den Unterschied zwischen REST und GraphQL“, antwortete er abgelenkt. „Hilf mir, das zu debuggen“, stattdessen war er verwirrt. Es fühlt sich an, als würde man einem klugen, aber vergesslichen Freund sagen, er solle Hausaufgaben machen, ohne klare Anweisungen zu geben.

Es ist hier technische Hinweise eingeben. Es ist keine Zauberei, es ist kein Marketingtrick. Beim Prompt Engineering formulieren wir Anweisungen, damit Sprachmodelle – insbesondere solche, die auf begrenzten Geräten wie lokalen LLMs ausgeführt werden – unsere Absichten genauer verstehen können. In diesem Artikel beschreibe ich einige der Techniken, die ich am häufigsten verwende, wenn ich mit dem Qwen 2.5 Coder 7B interagiere, den ich zu Hause verwende.

Was ist Prompt Engineering?

Einfach ausgedrückt ist Prompt Engineering die Kunst (und ein bisschen Wissenschaft), Eingaben in ein Sprachmodell zu integrieren, um bessere Ergebnisse zu erzielen. Stellen Sie sich vor, Sie bestellen Kaffee in einem Geschäft. Wenn Sie nur „Kaffee“ sagen, könnte der Barista verwirrt sein: schwarzer Kaffee? Kaffeemilch? bitter? süß? heiß? kalt? Aber wenn Sie sagen: „Kaffee mit Milch, heiß, etwas süß, verwenden Sie Palmzucker“, ist die Wahrscheinlichkeit groß, dass die Ergebnisse wie erwartet ausfallen.

Sprachmodelle funktionieren auf die gleiche Weise. Je spezifischer und strukturierter Ihre Anweisungen sind, desto näher kommen die Ergebnisse Ihren Wünschen. Dies wird für lokale LLMs wichtiger, da die Modellgröße kleiner ist. Kontextfensterist begrenzt und seine Argumentationsfähigkeit ist stärker mangelhaft als bei Modellen der GPT-4o-Klasse.

Warum benötigen lokale LLMs diese Technik?

Lokale Modelle wie Qwen 2.5 Coder 7B oder Llama 3 8B sind recht smart, haben aber offensichtliche Schwächen:

  • Kleinere Parametergrößen – Sie speichern nicht so viele Fakten aus der Welt wie große Modelle.
  • Leichte Halluzinationen – insbesondere, wenn Fragen gestellt werden, die außerhalb des Schulungsbereichs liegen.
  • Eingeschränktes Kontextfenster — Wir können nicht viele Dokumente gleichzeitig einfügen.
  • Das Antwortformat kann chaotisch sein – Ohne klare Anweisungen geben Modelle oft eine Mischung aus Text, Code und Erklärungen ohne Struktur zurück.

Deshalb sind zeitnahe Engineering-Techniken kein Bonus mehr, sondern eine Grundvoraussetzung.

1. Rollenaufforderung: Modellieren Sie eine Persona

Eine der schnellsten und effektivsten Techniken ist die Vorbildfunktion. Sagen Sie ihm, wer er ist und in welcher Funktion er reagiert.

Kamu adalah seorang sysadmin Linux berpengalaman yang sedang membimbing junior developer. Jelaskan perbedaan antara cron dan systemd timer dengan bahasa yang sederhana, tambahkan contoh perintah, dan sebutkan kapan sebaiknya memakai masing-masing.

Mit der obigen Eingabeaufforderung übernimmt das Modell die Persona und passt den Sprachstil an. Das Ergebnis ist meist mehr Struktur, mehr Relevanz und weniger Unsinn. Diese Technik funktioniert, weil das Modell mit vielen verschiedenen Schreibstilen trainiert wird und die Zuweisung von Rollen dem Modell hilft, in den richtigen Modus zu „gleiten“.

2. Few-Shot-Prompt: Lehren Sie anhand Ihres Beispiels

Sprachmodelle lernen aus Mustern. Wenn Sie ein oder zwei Beispiele für das gewünschte Format angeben, ist die Wahrscheinlichkeit groß, dass die nachfolgende Ausgabe demselben Muster folgt.

Klasifikasikan sentiment kalimat berikut sebagai POSITIF, NEGATIF, atau NETRAL.

Kalimat: Aplikasi ini sangat membantu dan cepat.
Sentimen: POSITIF

Kalimat: Saya kecewa karena fitur pencarian sering error.
Sentimen: NEGATIF

Kalimat: Update terbaru cukup biasa saja, tidak ada yang istimewa.
Sentimen:

Diese Technik ist besonders nützlich für sich wiederholende Aufgaben wie Klassifizierung, Datenextraktion oder bestimmte JSON-Formate. Bei lokalen LLMs ist die Eingabeaufforderung mit wenigen Schüssen oft zuverlässiger als nur die Erteilung abstrakter Anweisungen.

3. Gedankenkette: Denken Sie Schritt für Schritt

Kleine Modelle neigen dazu, voreilige Schlussfolgerungen zu ziehen. Damit er vorsichtiger ist, können wir ihn bitten, seinen Denkprozess aufzuschreiben.

Sebuah server memiliki 4 GB RAM. Aplikasi A memakai 1.2 GB, aplikasi B memakai 800 MB, dan sistem operasi membutuhkan 1 GB. Bisakah kita menjalankan aplikasi C yang membutuhkan 1.5 GB? Jelaskan langkah demi langkah.

Durch den Zusatz „Schritt für Schritt“ ist das Modell gezwungen, das Problem aufzuschlüsseln: Gesamtnutzung berechnen, mit der Kapazität vergleichen und dann eine Schlussfolgerung ziehen. Die Ergebnisse sind in der Regel genauer, insbesondere bei mathematischen, logischen oder Fehlerbehebungsproblemen.

4. Komplexe Aufgaben aufschlüsseln: Zerlegen Sie sie in kleine Teile

Lokale LLMs sind oft überfordert, wenn sie gebeten werden, sofort etwas Großes zu tun. Die Lösung: Unterteilen Sie es in Schritte.

Saya ingin membuat shell script untuk backup otomatis. Kerjakan dalam tiga langkah:
1. Buatkan struktur direktori dan nama file yang tepat.
2. Tuliskan skrip utama dengan restic.
3. Berikan contoh cron job untuk menjalankannya setiap hari pukul 02:00.

Diese Methode ähnelt der Art und Weise, wie wir Brot schneiden: Es ist leichter zu kauen, leichter zu kontrollieren und es bleiben weniger Rückstände auf den Wangen zurück.

5. Stellen Sie Kontext und Einschränkungen bereit: Geben Sie klare Grenzen

Models können nicht erraten, was Sie denken. Je mehr Kontext und Einschränkungen Sie angeben, desto präziser wird die Ausgabe.

Konteks: Saya membuat API untuk home server menggunakan PHP 8.4 native tanpa framework.
Batasan: Tidak boleh pakai Composer, tidak boleh pakai ORM, dan query MySQL harus pakai prepared statement.
Tugas: Buatkan endpoint sederhana untuk login dengan JWT, lengkap dengan validasi input dan error handling.

Bei klarem Kontext und klaren Grenzen schlägt das Modell keine Laravel-, Eloquent- oder externen Bibliotheken vor. Er wird innerhalb des von Ihnen festgelegten Rahmens arbeiten.

Antimuster: Fordert zum Vermeiden auf

Bevor ich zum Schluss komme, möchte ich noch auf einige schlechte Angewohnheiten hinweisen, die ich oft anführe – und die Sie nicht kopieren sollten:

  • Die Eingabeaufforderung ist zu kurz und vage: „Kodieren, bitte.“ Das Modell kennt weder die Sprache noch das Ziel noch den Kontext.
  • Eingabeaufforderung ohne Ausgabeformat: Wenn Sie JSON möchten, sagen Sie JSON. Wenn Sie sich registrieren möchten, sagen Sie „Registrieren“.
  • Eingabeaufforderungen, die nach mehreren Dingen gleichzeitig fragen: „Linux erklären, Backup-Skripte erstellen, mit dem Entwerfen der Datenbank fortfahren.“ Teilen Sie es in Sitzungen auf.
  • Kein Domänenkontext bereitgestellt: „Diesen Fehler beheben“, ohne Code oder Fehlermeldung anzugeben.

Abschluss

Bei Prompt Engineering geht es nicht darum, das Modell intelligenter zu machen, sondern darum, die Kommunikation zwischen uns und dem Modell klarer zu gestalten. Für lokale LLMs, die auf begrenzten Geräten laufen, ist diese Technik noch wichtiger, da jedes Token und jeder Kontext wertvoll ist.

Fangen Sie einfach an: Weisen Sie Rollen zu, fügen Sie Beispiele hinzu, bitten Sie um Schritt-für-Schritt-Erklärungen, teilen Sie große Aufgaben auf und setzen Sie stets Grenzen. Mit etwas Übung werden Sie überrascht sein, welchen großen Unterschied eine gut gestaltete Eingabeaufforderung im Vergleich zu einer schlampigen machen kann.

Wenn Sie Ihre eigene Lieblingstechnik haben, schreiben Sie sie in die Kommentarspalte. Ich lerne immer noch und es ist immer interessant, jeden neuen Trick auszuprobieren.