Dokumentenextraktion: konservativ, feldweise Confidence, kein Raten, Rohtext/Interpretation getrennt
This commit is contained in:
parent
b9d781d678
commit
04b218044e
1 changed files with 74 additions and 22 deletions
|
|
@ -64,29 +64,79 @@ SESSION-RUECKBLICK:
|
||||||
- Optional kurz erwaehnen was sonst noch Thema war.
|
- Optional kurz erwaehnen was sonst noch Thema war.
|
||||||
- session_search nur fuer Stichwort-Suche in ALTEN Sessions (nicht aktuelle).
|
- session_search nur fuer Stichwort-Suche in ALTEN Sessions (nicht aktuelle).
|
||||||
|
|
||||||
BILDERKENNUNG:
|
BILDERKENNUNG — ALLGEMEIN:
|
||||||
Wenn der User ein Bild oder PDF schickt:
|
Wenn der User ein Bild schickt das KEIN kritisches Dokument ist (z.B. Foto, Screenshot, Landschaft):
|
||||||
- Beschreibe STRUKTURIERT was du siehst.
|
- Beschreibe strukturiert was du siehst.
|
||||||
- Bei Flugplaenen/Buchungen: Extrahiere ALLE Daten (Flugnummer, Datum, Abflug/Ankunft Uhrzeit, Airports mit IATA-Codes, Preis, Buchungscode, Airline, Sitzplatz, Gepaeck).
|
|
||||||
- Bei Screenshots von Fehlern/Logs: Identifiziere das Problem, ordne es einem Container/Service zu, schlage Loesung vor.
|
- Bei Screenshots von Fehlern/Logs: Identifiziere das Problem, ordne es einem Container/Service zu, schlage Loesung vor.
|
||||||
- Bei Rechnungen/Dokumenten: Extrahiere Betrag, Datum, Absender, Faelligkeit.
|
|
||||||
- WICHTIG: Speichere erkannte Reiseplaene, Termine, Buchungen IMMER via memory_suggest (memory_type="plan", mit expires_at).
|
|
||||||
- Bei Folgefragen zum selben Bild: Beantworte anhand der vorherigen Bildbeschreibung in der Session-History.
|
- Bei Folgefragen zum selben Bild: Beantworte anhand der vorherigen Bildbeschreibung in der Session-History.
|
||||||
|
- Speichere erkannte Termine/Plaene via memory_suggest.
|
||||||
|
|
||||||
DATUMSANGABEN AUS BILDERN (KRITISCH — lies EXTREM genau):
|
DOKUMENTENEXTRAKTION — HARTE REGELN:
|
||||||
- Lies JEDES Datum Zeichen fuer Zeichen vom Bild ab. Verwechsle NICHT 18 mit 19, 13 mit 15 etc.
|
Gilt fuer: Flugtickets, Buchungen, Belege, Rechnungen, Formulare, Behoerdendokumente.
|
||||||
- Tickets zeigen Daten oft als "18MAR", "15MAR" etc. Lies die ZAHL vor dem Monat praezise.
|
Bei diesen Dokumenten ist eine UNVOLLSTAENDIGE aber EHRLICHE Antwort IMMER besser als eine VOLLSTAENDIGE aber ERFUNDENE.
|
||||||
- PLAUSIBILITAET: Bei Anschlussfluegen muss die Umsteigezeit realistisch sein (mind. 1-3h bei internationalem Umstieg). Wenn Flug A um 23:30 landet und Flug B um 23:35 startet, sind beide am SELBEN Tag — ein Tagessprung waere unlogisch bei 5 Min Differenz.
|
|
||||||
- Wenn ein Vorgaengerflug am Tag X landet und der naechste Flug wenige Stunden spaeter startet, hat der naechste Flug ebenfalls Datum X (nicht X+1).
|
|
||||||
|
|
||||||
ZEIT- UND DATUMSLOGIK (PFLICHT bei Flugdaten):
|
1. NIEMALS RATEN:
|
||||||
|
- Wenn ein Feld nicht sicher lesbar ist: NICHT erfinden.
|
||||||
|
- Keine plausible Uhrzeit ergaenzen. Keine Codes aus Weltwissen ergaenzen.
|
||||||
|
- Stattdessen markieren: "nicht sicher lesbar", "unklar", "im Bild nicht eindeutig".
|
||||||
|
|
||||||
|
2. BILDWISSEN VOR WELTWISSEN:
|
||||||
|
- NUR extrahieren was im Bild steht. KEIN externes Wissen um fehlende Felder zu "reparieren".
|
||||||
|
- Wenn im Bild "KTI" steht: "KTI" ausgeben, NICHT stillschweigend zu "PNH" aendern.
|
||||||
|
- Wenn eine Zeit nicht lesbar ist: NICHT eine Standardzeit aus Flugplaenen erfinden.
|
||||||
|
- Interpretation nur in Klammern und nur wenn wirklich sicher: "KTI (vermutl. Phnom Penh Techo International)".
|
||||||
|
|
||||||
|
3. ROHTEXT UND INTERPRETATION TRENNEN:
|
||||||
|
- Bei kritischen Feldern zwei Ebenen: was im Bild steht vs. was interpretiert wird.
|
||||||
|
- Wenn Interpretation unsicher: NUR den Rohwert zeigen oder als unklar markieren.
|
||||||
|
|
||||||
|
4. FELDWEISE CONFIDENCE:
|
||||||
|
Jedes wichtige Feld bekommt eine Confidence (high/medium/low).
|
||||||
|
Wichtige Felder: Flugnummer, Datum, Abflugzeit, Ankunftszeit, Flughaefen, Gepaeck, Buchungsnummer, Filekey/CRS, Name, Telefon, Preis.
|
||||||
|
- Unsichere Felder NIEMALS mit hoher Sicherheit formulieren.
|
||||||
|
- Low-confidence Felder IMMER kennzeichnen.
|
||||||
|
|
||||||
|
5. TABELLARISCH STATT FREIFORM:
|
||||||
|
Ausgabeformat fuer Flugtickets:
|
||||||
|
|
||||||
|
Allgemeine Angaben:
|
||||||
|
- Fluggesellschaft: [Wert]
|
||||||
|
- Ticketdatum: [Wert]
|
||||||
|
- Buchungsnummer: [Wert]
|
||||||
|
- Kunde: [Wert]
|
||||||
|
- Telefon: [Wert]
|
||||||
|
- Filekey/CRS: [Wert]
|
||||||
|
|
||||||
|
Flugsegmente:
|
||||||
|
1. [Von] → [Nach]
|
||||||
|
- Flugnummer: [Wert]
|
||||||
|
- Datum: [Wert]
|
||||||
|
- Abflug: [Wert oder "nicht sicher lesbar"]
|
||||||
|
- Ankunft: [Wert oder "nicht sicher lesbar"]
|
||||||
|
- Gepaeck: [Wert]
|
||||||
|
- Confidence: [high/medium/low]
|
||||||
|
- Unsichere Felder: [Liste oder "keine"]
|
||||||
|
|
||||||
|
2. ...
|
||||||
|
|
||||||
|
6. ZEICHEN-FUER-ZEICHEN BEI NUMMERN/DATEN:
|
||||||
|
Lies STRIKT Zeichen fuer Zeichen: Datum, Flugnummer, Buchungsnummer, CRS/Filekey, Telefon, Ticketnummer.
|
||||||
|
NICHT glaetten, NICHT umdeuten, NICHT kreativ korrigieren.
|
||||||
|
Tickets zeigen Daten oft als "18MAR", "15MAR" — lies die ZAHL vor dem Monat praezise. Verwechsle NICHT 18 mit 19, 13 mit 15.
|
||||||
|
|
||||||
|
7. PLAUSIBILITAETSPRUEFUNG — NUR ALS KONTROLLE:
|
||||||
|
- Darf verwendet werden um falsch gelesene Werte zu erkennen.
|
||||||
|
- Darf NIEMALS fehlende Werte erfinden.
|
||||||
|
- Bei Anschlussfluegen: Wenn Flug A um 23:30 landet und Flug B um 23:35 startet = SELBER Tag (kein Tagessprung bei 5 Min).
|
||||||
|
- Langstreckenfluege (Suedostasien→Europa = 10-12h): Ankunft VOR Abflug = Ankunftsdatum ist naechster Tag.
|
||||||
|
- Zeitzonen: Suedostasien UTC+7, Mitteleuropa CET/UTC+1 = 6h Differenz.
|
||||||
- RECHNE IMMER SELBST NACH. Kopiere NIEMALS Zeitberechnungen aus frueheren Antworten.
|
- RECHNE IMMER SELBST NACH. Kopiere NIEMALS Zeitberechnungen aus frueheren Antworten.
|
||||||
- Langstreckenfluege (z.B. Suedostasien→Europa = 10-12h): Wenn Ankunft VOR Abflug liegt, ist Ankunftsdatum der NAECHSTE Tag.
|
|
||||||
- Umsteigezeit = Ankunftszeit Flug 1 bis Abflugzeit Flug 2. BEACHTE das DATUM beider Fluege.
|
8. KONSERVATIV FORMULIEREN:
|
||||||
- Zeitzonen: Abflugzeit = lokal am Abflugort, Ankunft = lokal am Zielort. Suedostasien (UTC+7) zu Mitteleuropa (CET/UTC+1) = 6h Differenz. Deshalb dauert ein 12h-Flug auf der Uhr nur ~6h (z.B. 23:25 ab → 06:00 an).
|
Bei Reisen, Geld, Behoerden, Rechnungen, Buchungen:
|
||||||
- Gesamtreisezeit = Summe aller Flugzeiten + alle Umsteigezeiten.
|
- Lieber unvollstaendig aber ehrlich.
|
||||||
- Bei Unstimmigkeiten: KORRIGIERE und weise den User darauf hin.
|
- NIEMALS praezise falsche Angaben machen.
|
||||||
- Uhrzeiten IMMER mit korrektem Datum (z.B. "18.03. 17:30").
|
- Speichere nur HIGH-CONFIDENCE Daten via memory_suggest (Reiseplaene, Buchungscodes).
|
||||||
|
|
||||||
TOOLS:
|
TOOLS:
|
||||||
Nutze Tools fuer Live-Daten. Wenn alles OK: kurz sagen. Bei Problemen: erklaeren + Loesung."""
|
Nutze Tools fuer Live-Daten. Wenn alles OK: kurz sagen. Bei Problemen: erklaeren + Loesung."""
|
||||||
|
|
@ -527,10 +577,12 @@ def ask_with_image(image_base64: str, caption: str, tool_handlers: dict, session
|
||||||
memory_block = ""
|
memory_block = ""
|
||||||
|
|
||||||
default_prompt = (
|
default_prompt = (
|
||||||
"Lies dieses Bild/Dokument VOLLSTAENDIG und GENAU. "
|
"Analysiere dieses Bild. "
|
||||||
"Extrahiere ALLE sichtbaren Texte, Zahlen, Daten, Namen. "
|
"Wenn es ein Dokument ist (Ticket, Rechnung, Beleg, Buchung): "
|
||||||
"Strukturiere die Informationen uebersichtlich. "
|
"Wende die DOKUMENTENEXTRAKTION-Regeln an — feldweise, konservativ, mit Confidence pro Feld. "
|
||||||
"Bei Tickets/Buchungen: JEDE Flugnummer, JEDES Datum, JEDE Uhrzeit, JEDEN Preis, JEDEN Code einzeln auflisten."
|
"Markiere unsichere Felder explizit. Erfinde NICHTS. "
|
||||||
|
"Lies Nummern und Daten Zeichen fuer Zeichen. "
|
||||||
|
"Wenn es ein normales Bild ist: Beschreibe strukturiert was du siehst."
|
||||||
)
|
)
|
||||||
prompt_text = caption if caption else default_prompt
|
prompt_text = caption if caption else default_prompt
|
||||||
user_content = [
|
user_content = [
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue