revert prompt

This commit is contained in:
overcuriousity 2025-08-08 14:27:04 +02:00
parent 20b3bd44ca
commit d5a6fe7dec

View File

@ -5,7 +5,7 @@ export const AI_PROMPTS = {
toolSelection: (mode: string, userQuery: string, selectionMethod: string, maxSelectedItems: number) => { toolSelection: (mode: string, userQuery: string, selectionMethod: string, maxSelectedItems: number) => {
const modeInstruction = mode === 'workflow' const modeInstruction = mode === 'workflow'
? 'Der Benutzer möchte einen UMFASSENDEN WORKFLOW über mehrere Phasen. Wählen Sie 1525 Elemente, die den Zyklus Datensammlung → Auswertung → Analyse → Bericht abdecken.' ? 'Der Benutzer möchte einen UMFASSENDEN WORKFLOW über mehrere Phasen. Wählen Sie 1525 Elemente, die den Zyklus Datensammlung → Auswertung → Analyse → Bericht abdecken.'
: 'Der Benutzer möchte SPEZIFISCHE LÖSUNGEN. Wählen Sie 410 Elemente, die das Problem direkt adressieren. Beschreibungen dürfen hier ausführlicher ausfallen, um technische Tiefe zu vermitteln.'; : 'Der Benutzer möchte SPEZIFISCHE LÖSUNGEN. Wählen Sie 410 Elemente, die das Problem direkt adressieren.';
return `Sie sind DFIR-Experte mit Zugriff auf eine vollständige Datenbank aus Methoden (type: "method") und Tools (type: "software"/"os"). Ihre Aufgabe ist es, die relevantesten Elemente für die Anfrage auszuwählen. return `Sie sind DFIR-Experte mit Zugriff auf eine vollständige Datenbank aus Methoden (type: "method") und Tools (type: "software"/"os"). Ihre Aufgabe ist es, die relevantesten Elemente für die Anfrage auszuwählen.
@ -36,8 +36,7 @@ KRITISCHE AUSWAHLPRINZIPIEN:
4) LESEN SIE DIE VOLLBESCHREIBUNG UND METADATEN (Tags, Plattformen, Phasen, Lizenz, Access). 4) LESEN SIE DIE VOLLBESCHREIBUNG UND METADATEN (Tags, Plattformen, Phasen, Lizenz, Access).
UI-KÜRZE: UI-KÜRZE:
- Workflow-Modus: kurze, prägnante Beschreibungen. - Denken Sie mit: Für das UI sind kurze, prägnante Beschreibungen nötig. Bevorzugen Sie Elemente, die sich knapp zusammenfassen lassen. Formulieren Sie Begründungen fokussiert und ohne Floskeln.
- Spezifischer Modus: Beschreibungen dürfen deutlich länger sein (mehr technische Details, bis zu 200300 Zeichen in Kurzfassung).
Wählen Sie die relevantesten Elemente (max ${maxSelectedItems} gesamt). Wählen Sie die relevantesten Elemente (max ${maxSelectedItems} gesamt).
@ -60,14 +59,14 @@ ANTWORTFORMAT (JSON, SCHEMA UNVERÄNDERT):
- Verfügbare Datenquellen und Integrität - Verfügbare Datenquellen und Integrität
- Anforderungen für rechtssichere Auswertung`; - Anforderungen für rechtssichere Auswertung`;
return `Analysieren Sie das ${analysisType} ${isWorkflow ? 'kompakt (max. 120 Wörter)' : 'ausführlicher (max. 160 Wörter)'}. return `Analysieren Sie das ${analysisType} prägnant in einem kurzen Fließtext (max. 220 Wörter).
${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}" ${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}"
Berücksichtigen: Berücksichtigen:
${considerations} ${considerations}
Stil: Deutsch, ohne Listen/Markdown; klare, präzise Formulierungen, im spezifischen Modus mit mehr technischen Details.`; Stil: Deutsch, ohne Listen/Markdown; klare, knappe Formulierungen, aber nicht telegrafisch (vollständige Sätze).`;
}, },
investigationApproach: (isWorkflow: boolean, userQuery: string) => { investigationApproach: (isWorkflow: boolean, userQuery: string) => {
@ -82,14 +81,14 @@ Stil: Deutsch, ohne Listen/Markdown; klare, präzise Formulierungen, im spezifis
- Integration in bestehende DFIR-Workflows - Integration in bestehende DFIR-Workflows
- Reproduzierbarkeit und Transparenz`; - Reproduzierbarkeit und Transparenz`;
return `Formulieren Sie einen ${isWorkflow ? 'kompakten' : 'ausführlicheren'} ${approachType} (${isWorkflow ? 'max. 120 Wörter' : 'max. 160 Wörter'}), der explizit eine Mischung aus Methoden und Tools vorsieht. return `Formulieren Sie einen knappen ${approachType} (max. 220 Wörter), der explizit eine Mischung aus Methoden und Tools vorsieht.
${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}" ${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}"
Berücksichtigen: Berücksichtigen:
${considerations} ${considerations}
Stil: Deutsch, ohne Listen/Markdown, UI-tauglich.${isWorkflow ? '' : ' Mehr technische Tiefe und Kontext erwünscht.'}`; Stil: Deutsch, ohne Listen/Markdown, UI-tauglich und fokussiert.`;
}, },
criticalConsiderations: (isWorkflow: boolean, userQuery: string) => { criticalConsiderations: (isWorkflow: boolean, userQuery: string) => {
@ -102,21 +101,21 @@ Stil: Deutsch, ohne Listen/Markdown, UI-tauglich.${isWorkflow ? '' : ' Mehr tech
- Risiken für False Positives/Negatives - Risiken für False Positives/Negatives
- Qualifikationsanforderungen und Reporting-Standards`; - Qualifikationsanforderungen und Reporting-Standards`;
return `Identifizieren Sie ${considerationType} ${isWorkflow ? 'knapp (max. 120 Wörter)' : 'ausführlicher (max. 160 Wörter)'}. return `Identifizieren Sie ${considerationType} in einem kurzen Fließtext (max. 220 Wörter) und achten Sie auf UI-Kürze.
${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}" ${isWorkflow ? 'SZENARIO' : 'PROBLEM'}: "${userQuery}"
Aspekte: Aspekte:
${aspects} ${aspects}
Stil: Deutsch, ohne Listen/Markdown.${isWorkflow ? '' : ' Etwas mehr technische Details zulassen.'}`; Stil: Deutsch, ohne Listen/Markdown.`;
}, },
phaseToolSelection: (userQuery: string, phase: any, phaseTools: any[]) => { phaseToolSelection: (userQuery: string, phase: any, phaseTools: any[]) => {
// In der Liste bewusst kurze Ausschnitte und klare Typ-Bezeichnung (Methode/Tool).
const items = phaseTools.map((tool: any, index: number) => { const items = phaseTools.map((tool: any, index: number) => {
const typ = tool.type === 'method' ? 'Methode' : 'Tool'; const typ = tool.type === 'method' ? 'Methode' : 'Tool';
const descLimit = 220; const desc = (tool.description || '').replace(/\s+/g, ' ').trim().slice(0, 320);
const desc = (tool.description || '').replace(/\s+/g, ' ').trim().slice(0, descLimit);
return `${index + 1}. [${typ}] ${tool.name}: ${desc}\n - Plattformen: ${tool.platforms?.join(', ') || 'N/A'}\n - Skill Level: ${tool.skillLevel}\n - Tags: ${tool.tags?.join(', ') || 'N/A'}`; return `${index + 1}. [${typ}] ${tool.name}: ${desc}\n - Plattformen: ${tool.platforms?.join(', ') || 'N/A'}\n - Skill Level: ${tool.skillLevel}\n - Tags: ${tool.tags?.join(', ') || 'N/A'}`;
}).join('\n\n'); }).join('\n\n');
@ -134,8 +133,7 @@ BEWERTUNGSKRITERIEN:
- Praktikabilität (Zeit, Setup, Reproduzierbarkeit) - Praktikabilität (Zeit, Setup, Reproduzierbarkeit)
UI-KÜRZE: UI-KÜRZE:
- Workflow-Modus: 13Satz Kurzfassung (200260 Zeichen) + 12 kurze Details. - Beginnen Sie in "justification" mit einer 24-Satz Kurzfassung (300360 Zeichen), danach 23 kurze, präzise Sätze mit Details.
- Spezifischer Modus: Kurzfassung darf länger sein (250320 Zeichen) + 23 detailreichere Sätze.
- Bezeichnen Sie Elemente als "Methode" oder "Tool". - Bezeichnen Sie Elemente als "Methode" oder "Tool".
ANTWORT NUR ALS JSON (Schema UNVERÄNDERT): ANTWORT NUR ALS JSON (Schema UNVERÄNDERT):
@ -143,7 +141,7 @@ ANTWORT NUR ALS JSON (Schema UNVERÄNDERT):
{ {
"toolName": "Exakter Methoden/Tool-Name", "toolName": "Exakter Methoden/Tool-Name",
"taskRelevance": 0100, "taskRelevance": 0100,
"justification": "Kurzfassung zuerst (Workflow: ≈200260 Zeichen, Spezifisch: ≈250320 Zeichen). Danach Begründung mit Vergleich und technischen Details.", "justification": "Kurzfassung zuerst (≈300360 Zeichen). Danach knappe, vergleichende Begründung, warum dieses Element in dieser Phase besser geeignet ist.",
"limitations": ["Konkrete Einschränkung 1", "Einschränkung 2"] "limitations": ["Konkrete Einschränkung 1", "Einschränkung 2"]
} }
] ]
@ -161,7 +159,7 @@ BESCHREIBUNG: ${(tool.description || '').replace(/\s+/g, ' ').trim()}
ANTWORT AUSSCHLIESSLICH ALS JSON (Schema UNVERÄNDERT): ANTWORT AUSSCHLIESSLICH ALS JSON (Schema UNVERÄNDERT):
{ {
"detailed_explanation": "Beginnen Sie mit einer Kurzfassung (Workflow: ≈200260 Zeichen, Spezifisch: ≈250320 Zeichen) für das UI: 'Kurz: …'. Danach (Workflow: ≈80140 Wörter, Spezifisch: ≈120180 Wörter) mit präziser, technisch korrekter Erläuterung, warum und wie diese ${typ.toLowerCase()} für dieses Problem eingesetzt wird.", "detailed_explanation": "Beginnen Sie mit einer prägnanten Kurzfassung (≈300360 Zeichen) für das UI: 'Kurz: …'. Danach eine verdichtete Hauptpassage (≈80140 Wörter) mit präziser, technisch korrekter Erläuterung, warum und wie diese ${typ.toLowerCase()} für dieses Problem eingesetzt wird.",
"implementation_approach": "Konkrete, reproduzierbare Schrittfolge. Kurze Schritte, kein Ausschweifen.", "implementation_approach": "Konkrete, reproduzierbare Schrittfolge. Kurze Schritte, kein Ausschweifen.",
"pros": ["Spezifischer Vorteil 1", "Vorteil 2"], "pros": ["Spezifischer Vorteil 1", "Vorteil 2"],
"limitations": ["Konkrete Einschränkung 1", "Einschränkung 2"], "limitations": ["Konkrete Einschränkung 1", "Einschränkung 2"],
@ -170,7 +168,8 @@ ANTWORT AUSSCHLIESSLICH ALS JSON (Schema UNVERÄNDERT):
WICHTIG: WICHTIG:
- Keine erneute Bewertung nur Erklärung/Anwendung. - Keine erneute Bewertung nur Erklärung/Anwendung.
- Behalten Sie die korrekte Bezeichnung (Methode/Tool) bei.`; - Behalten Sie die korrekte Bezeichnung (Methode/Tool) bei.
- UI-Kürze: Kurzfassung am Anfang der detailed_explanation.`;
}, },
backgroundKnowledgeSelection: (userQuery: string, mode: string, selectedToolNames: string[], availableConcepts: any[]) => { backgroundKnowledgeSelection: (userQuery: string, mode: string, selectedToolNames: string[], availableConcepts: any[]) => {
@ -194,7 +193,7 @@ ANTWORT NUR ALS JSON (Schema UNVERÄNDERT):
finalRecommendations: (isWorkflow: boolean, userQuery: string, selectedToolNames: string[]) => { finalRecommendations: (isWorkflow: boolean, userQuery: string, selectedToolNames: string[]) => {
if (isWorkflow) { if (isWorkflow) {
return `Erstellen Sie einen knappen, methodisch korrekten WORKFLOW-Fließtext (max. 120 Wörter), der EXPLIZIT eine Mischung aus Methoden und Tools nutzt. return `Erstellen Sie einen knappen, methodisch korrekten WORKFLOW-Fließtext (max. 220 Wörter), der EXPLIZIT eine Mischung aus Methoden und Tools nutzt.
SZENARIO: "${userQuery}" SZENARIO: "${userQuery}"
AUSGEWÄHLTE ELEMENTE: ${selectedToolNames.join(', ') || 'Keine Auswahl'} AUSGEWÄHLTE ELEMENTE: ${selectedToolNames.join(', ') || 'Keine Auswahl'}
@ -202,12 +201,12 @@ AUSGEWÄHLTE ELEMENTE: ${selectedToolNames.join(', ') || 'Keine Auswahl'}
Vorgaben: klare Phasen (Datensammlung Auswertung Analyse Bericht), Beweisführung/Chain of Custody, Reproduzierbarkeit. Sprache präzise und UI-tauglich. Keine Listen/Markdown.`; Vorgaben: klare Phasen (Datensammlung Auswertung Analyse Bericht), Beweisführung/Chain of Custody, Reproduzierbarkeit. Sprache präzise und UI-tauglich. Keine Listen/Markdown.`;
} }
return `Formulieren Sie kritische ÜBERLEGUNGEN (max. 140 Wörter) zur korrekten Anwendung der empfohlenen Elemente (Methoden + Tools). return `Formulieren Sie knappe, kritische ÜBERLEGUNGEN (max. 200 Wörter) zur korrekten Anwendung der empfohlenen Elemente (Methoden + Tools).
PROBLEM: "${userQuery}" PROBLEM: "${userQuery}"
EMPFOHLENE ELEMENTE: ${selectedToolNames.join(', ') || 'Keine Auswahl'} EMPFOHLENE ELEMENTE: ${selectedToolNames.join(', ') || 'Keine Auswahl'}
Fokus: Validierung/Qualitätssicherung, Risiken (FP/FN), Dokumentation/Reporting. Stil deutsch, ohne Listen/Markdown, UI-tauglich, mit mehr technischen Details.`; Fokus: Validierung/Qualitätssicherung, Risiken (FP/FN), Dokumentation/Reporting. Stil deutsch, ohne Listen/Markdown, UI-tauglich.`;
} }
} as const; } as const;