Man kann natürlich bequem sein und sich einen Prompt suchen, den andere bereits nutzen. Die sind aber sehr offen formuliert.
Wenn man sich natürlich schon über die Ergebnisse freut und sich mit den guten, aber nicht perfekten Ergebnissen zufriedengibt, ist es ok.
Will man mehr, muss man mehr tun.
Meine Herangehensweise:
Ich habe ChatGPT4.o als Unterstützung gehabt.
Ich habe ChatGPT die Aufgabe eines "Prompt Engineers" gegeben und ihm mein Anliegen geschildert.
Zusätzlich habe ich Beispiele gesucht und Quellen zu Paperless NGX und AI.
Das sind nur Beispiele und gibt sicherlich noch viel mehr.
_Du bist ein Prompt-Engineer. Als Prompt-Spezialist sollst Du mir bei der Erstellung eines passenden Prompts helfen.
Das Projekt, wofür ich den Prompt benötige:
Ich arbeite an einem passenden Prompt für die Software Paperless AI, die über Ollama auf ein KI-Modell zugreift.
Hintergrund ist, dass ich meine Dokumente einscanne und als PDF abspeichere. Die Dokumente lade ich dann in Paperless NGX hoch. Anschließend kann ich die Dokumente noch mit "Tags" versehen, passende Metadaten eintragen oder auch einen Dateititel vergeben.
Das will ich aber über die Software "Paperless AI" weitestgehend automatisieren.
Suche Dir im Internet passende Informationen zu Paperless NGX und Paperless AI, damit Du in aller Gänze die Funktionweise von den beiden Programmen verstehst.
Ich werde Dir nachfolgend auch noch Beispiel-Links zu Seiten und Forenbeiträgen anhängen, wo sich Leute über Prompts unterhalten oder im Rahmen von Tutorials ihre Beispiel-Prompts veröffentlicht haben.
Weiterhin hänge ich noch einen Beispiel-Prompt an, den ich bekommen habe._
https://www.reddit.com/r/selfhosted/comments/1j7o3f5/paperlessai_what_is_your_prompt_what_ai_model_are/?rdt=51111
https://stadt-bremerhaven.de/paperless-ai-ki-gestuetzte-dokumentenverwaltung-fuer-paperless-ngx/
https://hobbyblogging.de/ai-fuer-paperless-ngx
https://github.com/clusterzx/paperless-ai/discussions/183
https://www.reddit.com/r/Paperlessngx/comments/1hrd18d/paperlessai_an_automated_document_analyzer_for/?tl=de
https://community.mastershort.de/d/160-paperless-ai-probleme
Beispiel-Prompt:
"You are a highly specialized document analyzer. Your task is to analyze documents and extract relevant information into a structured JSON object.
- title – A concise, meaningful title for the document (no addresses).
- correspondent – MANDATORY: Identify the sender/institution in shortest clear form (e.g. "Stadtwerke"). Always extract this field even if it appears in the header alone.
- tags – Up to 6 relevant thematic tags. FIRST check existing tags before suggesting.
If the correspondent is not already among these tags, add it as the FIRST tag.
- document_date – Extract the document date (YYYY-MM-DD). If multiple, choose most relevant. Omit if none.
- document_type – Precise classification (Invoice, Contract, Notice, etc.).
- language – Language code ("de", "en"). If unclear, use "und".
Additionally, if present extract:
- invoice_amount – Invoice total as number (no currency symbol).
- due_date – Invoice due date (YYYY-MM-DD).
- iban – Bank IBAN.
- customer_number – Customer number.
Rules:
- Always output in the document’s original language.
- Omit any field not found (no nulls).
- Dates strictly YYYY-MM-DD.
- For number fields remove currency symbols.
- Correspondent is critically important – must appear in correspondent and as first tag if not in tags list.
- Minimize hallucinations; prefer exact matches from the document.
Example Output:
json
{
"title": "Rechnung 0001-ARV-2021-37603",
"correspondent": "Stadtwerke",
"tags": ["Stadtwerke","Rechnung","Energie","2021"],
"document_date": "2021-11-30",
"document_type": "Invoice",
"language": "de",
"invoice_amount": 786.44,
"due_date": "2021-12-20",
"iban": "DE20288888888200274387",
"customer_number": "159385"
}"
Ich habe den Prompt zusätzlich noch mit Informationen über meine Familie ergänzt:
- Familienmitglieder und deren Namen
- Fahrzeug, Kennzeichen
- Versicherungen und deren Namen
-...
-...
Ich habe später Tags festgelegt und sie fest zugeordnet.
z.B.:
Kennzeichen XYZ -> VW Passat
Kennzeichen XYY -> Audi A6
Man kann dann auch noch die Aufgabe erteilen, dass sich ChatGPT noch ausreichend Fragen überlegen soll, die ihm dabei helfen, den Prompt noch spezifischer zu erstellen, indem gezielt Regeln erstellt werden.
Nach fast 2 Tagen wuchs mein Prompt auf fast 3 Seiten an.
Mein Prompt enthält "Whitelists", "Blacklists" und konkrete Anweisungen.
Wiederkehrende Dokumente (monatliche Gehaltsabrechnung, Rechnung für Kantine, Baurechnungen von einem festen Lieferanten bei einem Umbau (Steuer->Finanzamt).
Mein Landkreis hat immer Emails mit der gleichen Domain.
Also habe ich die konkrete Anweisung gegeben:
"@landkreis-xyz.de" -> Tag: "Landkreis-xyz"
Steht beim Lieferanten in der Kopfzeile immer:
"Baucenter Meyer" -> Tags: "Steuer", "Baustoffe", "Rechnung"
Wenn die KI immer wieder Tags erstellt, die man überflüssig findet, so habe ich ChatGPT damit beauftragt, diese Tags über eine Blacklist sperren zu lassen. Aus Sicht der KI mag der Tag zwar sinnvoll sein, weil das Wort diverse Mal in dem Dokument vorkommt, aber ich brauche es nicht. Also weg damit.
Um das final hinzubekommen macht es Sinn, dass man sich einige wiederkehrende Dokumente raussucht und diese als Test-Dokumente einlesen lässt.
Anschließend die Dokumente wieder rauslöschen (auch aus dem Papierkorb).
Dann den Prompt anpassen und neu einlesen.
Das habe ich diverse Mal gemacht.
Die KI lernt nicht so, wie man es sich vielleicht wünscht. Dazu ist der Prompt da.
Dieser muss wachsen und angepasst werden.
Je genauer man z.B. eine Art Schablone für einzelne wiederkehrende Dokumente erstellt, desto perfekter wird das Ergebnis und man muss sich für genau diese Dokumente dann absolut keine Gedanken mehr machen, dass dort Fehler in der Klassifizierung sind.
Mein Paperless-System war noch nicht produktiv und deshalb brauchte ich keine Rücksicht nehmen.
Sonst sollte man sich eine Testumgebung schaffen.