Questa è una versione PDF del contenuto. Per la versione completa e aggiornata, visita:
https://blog.tuttosemplice.com/de/prompt-engineering-finanzen-datenvalidierung-mit-llm-und-regex/
Verrai reindirizzato automaticamente...
In der Fintech-Landschaft des Jahres 2026 ist die Einführung generativer künstlicher Intelligenz keine Neuheit mehr, sondern operativer Standard. Die wahre Herausforderung liegt jedoch nicht in der Implementierung eines Chatbots, sondern in der zuverlässigen Integration von LLMs (Large Language Models) in kritische Entscheidungsprozesse. In diesem technischen Leitfaden werden wir das Prompt Engineering Finanzen mit einem ingenieurmäßigen Ansatz untersuchen und uns auf einen spezifischen Anwendungsfall mit hohem Risiko konzentrieren: die Extraktion und Validierung von Daten für die Hypothekenprüfung.
Wir befassen uns mit dem Hauptproblem der KI im Finanzsektor: der probabilistischen Natur generativer Modelle im Gegensatz zur deterministischen Notwendigkeit von Bankberechnungen. Wie wir sehen werden, liegt die Lösung in einer hybriden Architektur, die die semantische Flexibilität von Modellen wie GPT-4 (oder Nachfolgern) mit der logischen Starrheit von Regular Expressions (Regex) und programmatischen Kontrollen kombiniert.
Jeder, der mit generativer KI gearbeitet hat, weiß, dass die Modelle hervorragend darin sind, natürliche Sprache zu verstehen, aber mittelmäßig bei komplexer Arithmetik oder der strikten Einhaltung nicht standardisierter Ausgabeformate. In einem YMYL-Kontext (Your Money Your Life) ist ein Fehler bei der Berechnung des Verhältnisses von Rate zu Einkommen keine akzeptable Halluzination; es ist ein Compliance-Risiko und ein potenzieller wirtschaftlicher Verlust.
Beim Prompt Engineering Finanzen geht es nicht nur darum, elegante Sätze für das Modell zu schreiben. Es geht darum, ein System von Guardrails (Sicherheitsbarrieren) zu entwerfen, die das Modell zwingen, innerhalb definierter Grenzen zu operieren. Der Ansatz, den wir verwenden werden, basiert auf drei Säulen:
Stellen wir uns vor, wir müssten Daten aus einer Gehaltsabrechnung oder einem gescannten Immobiliengutachten (OCR) extrahieren. Der Text ist schmutzig, ungeordnet und voller Abkürzungen. Ein generischer Prompt würde scheitern. Wir müssen einen strukturierten Prompt erstellen.
Der Prompt muss die Rolle des Modells klar definieren. Wir bitten nicht um eine Zusammenfassung, wir bitten um eine ETL-Datenextraktion (Extract, Transform, Load).
SYSTEM ROLE:
Sie sind ein Senior Credit Analyst, spezialisiert auf Hypothekenprüfungen. Ihre Aufgabe ist es, kritische Finanzdaten aus unstrukturiertem Text zu extrahieren, der aus OCR-Dokumentation stammt.
ZIEL:
Identifizierung und Normalisierung des monatlichen Nettoeinkommens und der wiederkehrenden Ausgaben für die Berechnung des Verhältnisses von Rate zu Einkommen.
EINSCHRÄNKUNGEN:
1. Erfinden Sie keine Daten. Wenn ein Datum fehlt, geben Sie "null" zurück.
2. Ignorieren Sie einmalige Boni, konzentrieren Sie sich auf die reguläre Vergütung.
3. Die Ausgabe MUSS ausschließlich im gültigen JSON-Format erfolgen.Um die Genauigkeit zu erhöhen, verwenden wir die Chain-of-Thought-Technik. Wir bitten das Modell, in einem separaten Feld des JSON zu “argumentieren”, bevor es den Wert extrahiert. Dies reduziert Halluzinationen bei Zahlen drastisch.
Beispiel für die Struktur des Benutzer-Prompts:
INPUT TEXT:
[Hier den OCR-Text der Gehaltsabrechnung einfügen...]
ANWEISUNGEN:
Analysieren Sie den Text Schritt für Schritt.
1. Identifizieren Sie alle positiven Posten (Grundgehalt, Zulagen).
2. Identifizieren Sie Steuer- und Sozialversicherungsabzüge.
3. Schließen Sie Spesenrückerstattungen oder nicht wiederkehrende Boni aus.
4. Berechnen Sie das Netto, falls nicht explizit angegeben, andernfalls extrahieren Sie das "Monatsnetto".
OUTPUT FORMAT (JSON):
{
"reasoning": "Textstring, in dem Sie die logische Argumentation zur Identifizierung des Nettos erklären.",
"net_income_value": Float oder null,
"currency": "EUR",
"document_date": "YYYY-MM-DD"
}Das Prompt Engineering Finanzen ist nutzlos ohne ein Backend, das es unterstützt. Hier kommt der hybride Ansatz ins Spiel. Wir vertrauen dem JSON des LLM nicht blind. Wir leiten es durch einen Validator, der auf Regex und Pydantic basiert.
Nachfolgend ein Beispiel, wie der API-Aufruf strukturiert wird (unter Verwendung von Standardbibliotheken wie openai und pydantic für die Typvalidierung) und wie die Regex-Kontrolle integriert wird.
import openai
import json
import re
from pydantic import BaseModel, ValidationError, validator
from typing import Optional
# Definition des erwarteten Datenschemas (Guardrail #1)
class FinancialData(BaseModel):
reasoning: str
net_income_value: float
currency: str
document_date: str
# Regex-Validator für das Datum (Guardrail #2)
@validator('document_date')
def date_format_check(cls, v):
pattern = r'^d{4}-d{2}-d{2}$'
if not re.match(pattern, v):
raise ValueError('Ungültiges Datumsformat. Erforderlich: YYYY-MM-DD')
return v
# Logischer Validator für das Einkommen (Guardrail #3)
@validator('net_income_value')
def realistic_income_check(cls, v):
if v 50000: # Sicherheitsschwellen für manuellen Alarm
raise ValueError('Einkommenswert außerhalb der Standardparameter (Anomaly Detection)')
return v
def extract_financial_data(ocr_text):
prompt = f"""
Analysieren Sie den folgenden OCR-Banktext und extrahieren Sie die geforderten Daten.
TEXT: {ocr_text}
Geben Sie NUR ein JSON-Objekt zurück.
"""
try:
response = openai.ChatCompletion.create(
model="gpt-4-turbo", # Oder äquivalentes Modell 2026
messages=[
{"role": "system", "content": "Sie sind ein rigoroser Finanzdaten-Extraktor."},
{"role": "user", "content": prompt}
],
temperature=0.0 # Temperatur auf 0 für maximalen Determinismus
)
raw_content = response.choices[0].message.content
# Parsing und Validierung
data_dict = json.loads(raw_content)
validated_data = FinancialData(**data_dict)
return validated_data
except json.JSONDecodeError:
return "Fehler: Das LLM hat kein gültiges JSON produziert."
except ValidationError as e:
return f"Datenvalidierungsfehler: {e}"
except Exception as e:
return f"Allgemeiner Fehler: {e}"
# Anwendungsbeispiel
# result = extract_financial_data("Gehaltsabrechnung Monat Januar... Auszuzahlendes Netto: 2.450,00 Euro...")
Was passiert, wenn die Validierung fehlschlägt? In einem fortschrittlichen Produktionssystem implementieren wir einen Self-Correction Loop. Wenn Pydantic eine Ausnahme auslöst (z. B. falsches Datumsformat), kann das System automatisch eine neue Anfrage an das LLM senden, die den empfangenen Fehler enthält.
Beispiel für einen automatischen Korrektur-Prompt:
“Sie haben ein JSON mit einem Fehler generiert. Das Feld ‘document_date’ entsprach nicht dem Format YYYY-MM-DD. Korrigieren Sie den Wert und geben Sie das JSON erneut zurück.”
Bei der Anwendung von Prompt Engineering im Finanzwesen ist der Umgang mit PII-Daten (Personally Identifiable Information) kritisch. Bevor ein OCR-Text an eine öffentliche API (auch Enterprise) gesendet wird, ist es bewährte Praxis, eine Technik des Anonymization Pre-Processing anzuwenden.
Unter Verwendung lokaler Regex (also keine KI) können Namen, Steuernummern und Adressen maskiert werden, indem sie durch Token ersetzt werden (z. B. [NAME_KUNDE_1]). Das LLM analysiert die Finanzstruktur, ohne die wahre Identität des Hypothekenantragstellers preiszugeben, wodurch die DSGVO-Konformität gewahrt bleibt.
Die Integration von Prompt Engineering Finanzen, traditioneller Programmierlogik und Regex-Validierung stellt den einzigen gangbaren Weg dar, um KI in die Kernprozesse von Banken zu bringen. Es geht nicht darum, den menschlichen Analysten zu ersetzen, sondern ihm vorvalidierte und normalisierte Daten zur Verfügung zu stellen, die Zeit für die Dateneingabe um 80 % zu reduzieren und es ihm zu ermöglichen, sich auf die Bewertung des Kreditrisikos zu konzentrieren.
Der Schlüssel zum Erfolg ist nicht ein intelligenteres Modell, sondern ein robusteres Prompt Engineering und ein strengeres Kontrollsystem.
Prompt Engineering ist essenziell, um die probabilistische Natur generativer Modelle in deterministische Ausgaben umzuwandeln, die für Banken notwendig sind. Durch den Einsatz von Guardrails und strukturierten Anweisungen werden die Risiken von Halluzinationen gemindert und sichergestellt, dass die Datenextraktion für kritische Prozesse, wie die Hypothekenprüfung, strengen Compliance- und Präzisionsstandards entspricht.
Die Lösung liegt in einem hybriden Ansatz, der die semantische Fähigkeit der KI mit der logischen Starrheit von Regular Expressions (Regex) und programmatischen Kontrollen kombiniert. Anstatt das Modell zu bitten, komplexe Berechnungen durchzuführen, wird es verwendet, um strukturierte Daten zu extrahieren, die anschließend von einer Python-Code-Ebene validiert und verarbeitet werden, um die im Finanzbereich erforderliche Genauigkeit sicherzustellen.
Die Chain-of-Thought-Technik verbessert die Genauigkeit der Datenextraktion, indem sie das Modell zwingt, die logische Argumentation explizit zu machen, bevor das Endergebnis geliefert wird. Im Fall von unstrukturierten Dokumenten wie Gehaltsabrechnungen zwingt diese Methode die KI dazu, Schritt für Schritt positive und negative Posten zu identifizieren, was Interpretationsfehler und falsch positive Ergebnisse bei numerischen Werten erheblich reduziert.
Um Datenschutz und DSGVO-Konformität zu gewährleisten, ist es notwendig, eine Technik der Anonymisierung im Pre-Processing anzuwenden. Bevor die Daten an die Modell-API gesendet werden, werden lokale Skripte verwendet, um identifizierbare Informationen (PII) wie Namen und Steuernummern zu maskieren, sodass die KI den finanziellen Kontext analysieren kann, ohne jemals die wahre Identität des Antragstellers preiszugeben.
Der Self-Correction Loop ist ein automatisierter Mechanismus, der Ausgabe-Fehler des Modells verwaltet. Wenn der Validator (z. B. Pydantic) ein fehlerhaftes JSON-Format oder einen Wert außerhalb der Schwellenwerte erkennt, sendet das System den Prompt erneut an das LLM, einschließlich des festgestellten Fehlers, und bittet das Modell, diesen spezifischen Parameter zu korrigieren. Dieser iterative Zyklus erhöht die Erfolgsquote bei der automatischen Extraktion drastisch.