generated from knso/webklar-preview-template
Web: Frist in den Kalender + Anruf-Hilfe — die Unterschiede zu ChatGPT ins Web geholt
Der Nutzer konnte in einer Praesentation nicht kontern, und die Ursache war real: Alles, was BehoerdenKlar von ChatGPT unterscheidet (Erinnerungen, Kalender, Antwort-Entwurf), steckte in der App — und die ist noch nicht veroeffentlicht. Das Web-Produkt, das Kunden heute kaufen, war im Kern nur 'Brief erklaeren'. Kalender (.ics, rein im Browser, nichts wird hochgeladen): - Frist und Termin mit Erinnerung 3 Tage und 1 Tag vorher - Zeilen nach BYTES gefaltet (RFC 5545), damit Arabisch/Tigrinya nicht reissen - Termin 23:30 endet korrekt am naechsten Tag - Wanduhrzeit ohne Zeitzone = Ortszeit des Geraets - getestet: Frist, Termin mit Uhrzeit, Mitternacht, langer arabischer Text, Brief ohne Datum (-> keine Datei) Anruf-Hilfe (Worker-Schema um kontakt + anruf erweitert): - Telefonnummer als tel:-Knopf, Aktenzeichen hervorgehoben - Spickzettel: Satz auf Deutsch + Bedeutung in der Nutzersprache - Prompt-Regel: Kontaktdaten nur, wenn woertlich im Brief. Getestet mit Brief ohne Nummer -> telefon: null, nichts erfunden. Nebenbei zwei bestehende Fehler behoben: - Optionale Ergebniskarten wurden nie ausgeblendet: Beim zweiten Brief stand die Checkliste des ERSTEN Briefs noch da. Jetzt Reset zu Beginn. - dir=auto auf den Ergebnistexten: Arabisch/Farsi/Urdu wurden im Web linksbuendig dargestellt (in der App war das schon behoben). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e01813f6ec
commit
fe6899da3d
3 files changed
+249
-10
No files matched your search
+26
-2
@@ -104,6 +104,8 @@ Deine Aufgabe:
|
||||
4. Erstelle eine konkrete Checkliste, was der Nutzer tun muss.
|
||||
5. Sei sachlich und beruhigend, nicht alarmierend.
|
||||
|
||||
6. Telefonnummern, Namen und Aktenzeichen übernimmst du NUR, wenn sie wörtlich im Brief stehen. Eine erfundene Telefonnummer ist schlimmer als keine — dann null.
|
||||
|
||||
Wichtig: Wenn das Bild kein Behördenbrief ist oder unlesbar ist, schreibe das klar in kernaussage und erklaerung_einfach und lasse frist/termin null.`;
|
||||
|
||||
/** Schlanke Demo-Variante des Analyse-Schemas (ohne Antwort-Optionen —
|
||||
@@ -111,7 +113,7 @@ Wichtig: Wenn das Bild kein Behördenbrief ist oder unlesbar ist, schreibe das k
|
||||
const DEMO_SCHEMA = {
|
||||
type: 'object',
|
||||
additionalProperties: false,
|
||||
required: ['brieftyp', 'absender', 'kernaussage', 'erklaerung_einfach', 'fachbegriffe', 'frist', 'termin', 'checkliste'],
|
||||
required: ['brieftyp', 'absender', 'kernaussage', 'erklaerung_einfach', 'fachbegriffe', 'frist', 'termin', 'checkliste', 'kontakt', 'anruf'],
|
||||
properties: {
|
||||
brieftyp: { type: 'string', description: 'Kurze Kategorie des Briefs, z. B. "Einladung Jobcenter".' },
|
||||
absender: { type: 'string', description: 'Die Behörde, die den Brief geschickt hat.' },
|
||||
@@ -150,6 +152,28 @@ const DEMO_SCHEMA = {
|
||||
],
|
||||
},
|
||||
checkliste: { type: 'array', description: 'To-do-Liste. Leer wenn nichts zu tun ist.', items: { type: 'string' } },
|
||||
kontakt: {
|
||||
description: 'Kontaktdaten aus dem Brief. Jedes Feld NUR, wenn es wörtlich im Brief steht — sonst null. Niemals erfinden.',
|
||||
type: 'object', additionalProperties: false,
|
||||
required: ['telefon', 'ansprechpartner', 'aktenzeichen', 'sprechzeiten'],
|
||||
properties: {
|
||||
telefon: { description: 'Telefonnummer genau wie im Brief abgedruckt, sonst null.', anyOf: [{ type: 'string' }, { type: 'null' }] },
|
||||
ansprechpartner: { description: 'Name der zuständigen Person, sonst null.', anyOf: [{ type: 'string' }, { type: 'null' }] },
|
||||
aktenzeichen: { description: 'Aktenzeichen, Kunden-, Steuer- oder BG-Nummer — das, wonach am Telefon gefragt wird. Sonst null.', anyOf: [{ type: 'string' }, { type: 'null' }] },
|
||||
sprechzeiten: { description: 'Telefonische Erreichbarkeit laut Brief, sonst null.', anyOf: [{ type: 'string' }, { type: 'null' }] },
|
||||
},
|
||||
},
|
||||
anruf: {
|
||||
description: 'Spickzettel für einen Anruf bei der Behörde: 3 bis 5 kurze, höfliche Sätze, die man am Telefon sagen kann — Begrüßung, Aktenzeichen nennen, Anliegen, Nachfrage. Leeres Array, wenn ein Anruf nicht sinnvoll ist.',
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'object', additionalProperties: false, required: ['deutsch', 'bedeutung'],
|
||||
properties: {
|
||||
deutsch: { type: 'string', description: 'Der Satz in einfachem Deutsch — genau so wird er am Telefon gesagt.' },
|
||||
bedeutung: { type: 'string', description: 'Derselbe Satz in der Sprache des Nutzers, damit er versteht, was er sagt.' },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -314,7 +338,7 @@ async function demoHandler(request: Request, env: Env): Promise<Response> {
|
||||
max_tokens: MAX_TOKENS_OBERGRENZE,
|
||||
system: sprachCode === 'de'
|
||||
? DEMO_SYSTEM_PROMPT
|
||||
: `${DEMO_SYSTEM_PROMPT}\n\nWICHTIG — ZIELSPRACHE: Schreibe ALLE Textfelder deiner Antwort auf ${sprachName}, nicht auf Deutsch. Ausnahme: das Feld "begriff" bei fachbegriffe bleibt der deutsche Originalbegriff aus dem Brief (der Nutzer muss ihn im Brief wiederfinden) — nur dessen "erklaerung" wird auf ${sprachName} geschrieben. Datumsangaben bleiben im ISO-Format.`,
|
||||
: `${DEMO_SYSTEM_PROMPT}\n\nWICHTIG — ZIELSPRACHE: Schreibe ALLE Textfelder deiner Antwort auf ${sprachName}, nicht auf Deutsch. Ausnahme: das Feld "begriff" bei fachbegriffe bleibt der deutsche Originalbegriff aus dem Brief (der Nutzer muss ihn im Brief wiederfinden) — nur dessen "erklaerung" wird auf ${sprachName} geschrieben. Datumsangaben bleiben im ISO-Format. Ebenfalls NICHT übersetzen: das Feld "deutsch" bei anruf (das wird am Telefon auf Deutsch gesagt) und alle kontakt-Felder (sie stehen so im Brief).`,
|
||||
output_config: { format: { type: 'json_schema', schema: DEMO_SCHEMA } },
|
||||
messages: [
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user