diff --git a/modules/features/automation2/interfaceFeatureAutomation2.py b/modules/features/automation2/interfaceFeatureAutomation2.py index 550f2492..cdc9bccf 100644 --- a/modules/features/automation2/interfaceFeatureAutomation2.py +++ b/modules/features/automation2/interfaceFeatureAutomation2.py @@ -5,10 +5,25 @@ Interface for Automation2 feature - Workflows, Runs, Human Tasks. Uses PostgreSQL poweron_automation2 database. """ +import base64 import logging import uuid from typing import Dict, Any, List, Optional + +def _make_json_serializable(obj: Any) -> Any: + """ + Recursively convert bytes to base64 strings so structures can be JSON-serialized + for storage in JSONB columns. + """ + if isinstance(obj, bytes): + return base64.b64encode(obj).decode("ascii") + if isinstance(obj, dict): + return {k: _make_json_serializable(v) for k, v in obj.items()} + if isinstance(obj, list): + return [_make_json_serializable(v) for v in obj] + return obj + from modules.datamodels.datamodelUam import User from modules.features.automation2.datamodelFeatureAutomation2 import ( Automation2Workflow, @@ -139,7 +154,7 @@ class Automation2Objects: "id": str(uuid.uuid4()), "workflowId": workflowId, "status": "running", - "nodeOutputs": nodeOutputs or {}, + "nodeOutputs": _make_json_serializable(nodeOutputs or {}), "currentNodeId": None, "context": context or {}, } @@ -174,7 +189,7 @@ class Automation2Objects: if status is not None: updates["status"] = status if nodeOutputs is not None: - updates["nodeOutputs"] = nodeOutputs + updates["nodeOutputs"] = _make_json_serializable(nodeOutputs) if currentNodeId is not None: updates["currentNodeId"] = currentNodeId if context is not None: diff --git a/modules/features/automation2/nodeDefinitions/sharepoint.py b/modules/features/automation2/nodeDefinitions/sharepoint.py index 64b34839..f0dd30cf 100644 --- a/modules/features/automation2/nodeDefinitions/sharepoint.py +++ b/modules/features/automation2/nodeDefinitions/sharepoint.py @@ -44,16 +44,14 @@ SHAREPOINT_NODES = [ "description": {"en": "Upload file to SharePoint", "de": "Datei zu SharePoint hochladen", "fr": "Téléverser fichier vers SharePoint"}, "parameters": [ {"name": "connectionId", "type": "string", "required": True, "description": {"en": "SharePoint connection", "de": "SharePoint-Verbindung", "fr": "Connexion SharePoint"}}, - {"name": "folderPath", "type": "string", "required": True, "description": {"en": "Target folder path", "de": "Zielordner-Pfad", "fr": "Chemin du dossier cible"}}, - {"name": "siteId", "type": "string", "required": True, "description": {"en": "SharePoint site ID", "de": "SharePoint Site-ID", "fr": "ID du site SharePoint"}}, - {"name": "fileName", "type": "string", "required": True, "description": {"en": "File name", "de": "Dateiname", "fr": "Nom du fichier"}}, + {"name": "path", "type": "string", "required": True, "description": {"en": "Target folder path (e.g. /sites/.../Folder)", "de": "Zielordner-Pfad", "fr": "Chemin du dossier cible"}}, ], "inputs": 1, "outputs": 1, "meta": {"icon": "mdi-upload", "color": "#0078D4"}, "_method": "sharepoint", "_action": "uploadFile", - "_paramMap": {"connectionId": "connectionReference", "folderPath": "folderPath", "siteId": "siteId", "fileName": "fileName"}, + "_paramMap": {"connectionId": "connectionReference", "path": "pathQuery"}, }, { "id": "sharepoint.listFiles", @@ -75,18 +73,17 @@ SHAREPOINT_NODES = [ "id": "sharepoint.downloadFile", "category": "sharepoint", "label": {"en": "Download File", "de": "Datei herunterladen", "fr": "Télécharger fichier"}, - "description": {"en": "Download file from path", "de": "Datei vom Pfad herunterladen", "fr": "Télécharger le fichier"}, + "description": {"en": "Download file from path (e.g. /sites/SiteName/Shared Documents/file.pdf)", "de": "Datei vom Pfad herunterladen", "fr": "Télécharger le fichier"}, "parameters": [ {"name": "connectionId", "type": "string", "required": True, "description": {"en": "SharePoint connection", "de": "SharePoint-Verbindung", "fr": "Connexion SharePoint"}}, - {"name": "siteId", "type": "string", "required": True, "description": {"en": "SharePoint site ID", "de": "SharePoint Site-ID", "fr": "ID du site"}}, - {"name": "filePath", "type": "string", "required": True, "description": {"en": "File path", "de": "Dateipfad", "fr": "Chemin du fichier"}}, + {"name": "path", "type": "string", "required": True, "description": {"en": "Full file path (e.g. /sites/SiteName/Shared Documents/file.pdf)", "de": "Vollständiger Dateipfad", "fr": "Chemin complet du fichier"}}, ], "inputs": 1, "outputs": 1, "meta": {"icon": "mdi-download", "color": "#0078D4"}, "_method": "sharepoint", "_action": "downloadFileByPath", - "_paramMap": {"connectionId": "connectionReference", "siteId": "siteId", "filePath": "filePath"}, + "_paramMap": {"connectionId": "connectionReference", "path": "pathQuery", "siteId": "siteId", "filePath": "filePath"}, }, { "id": "sharepoint.copyFile", @@ -95,17 +92,14 @@ SHAREPOINT_NODES = [ "description": {"en": "Copy file to destination", "de": "Datei an Ziel kopieren", "fr": "Copier le fichier"}, "parameters": [ {"name": "connectionId", "type": "string", "required": True, "description": {"en": "SharePoint connection", "de": "SharePoint-Verbindung", "fr": "Connexion SharePoint"}}, - {"name": "siteId", "type": "string", "required": True, "description": {"en": "SharePoint site ID", "de": "SharePoint Site-ID", "fr": "ID du site"}}, - {"name": "sourceFolder", "type": "string", "required": True, "description": {"en": "Source folder path", "de": "Quellordner-Pfad", "fr": "Chemin dossier source"}}, - {"name": "sourceFile", "type": "string", "required": True, "description": {"en": "Source file name", "de": "Quelldatei-Name", "fr": "Nom fichier source"}}, - {"name": "destFolder", "type": "string", "required": True, "description": {"en": "Destination folder path", "de": "Zielordner-Pfad", "fr": "Chemin dossier cible"}}, - {"name": "destFile", "type": "string", "required": True, "description": {"en": "Destination file name", "de": "Zieldatei-Name", "fr": "Nom fichier cible"}}, + {"name": "sourcePath", "type": "string", "required": True, "description": {"en": "Source file path (from browse)", "de": "Quelldatei-Pfad", "fr": "Chemin fichier source"}}, + {"name": "destPath", "type": "string", "required": True, "description": {"en": "Destination folder path (from browse)", "de": "Zielordner-Pfad", "fr": "Chemin dossier cible"}}, ], "inputs": 1, "outputs": 1, "meta": {"icon": "mdi-content-copy", "color": "#0078D4"}, "_method": "sharepoint", "_action": "copyFile", - "_paramMap": {"connectionId": "connectionReference", "siteId": "siteId", "sourceFolder": "sourceFolder", "sourceFile": "sourceFile", "destFolder": "destFolder", "destFile": "destFile"}, + "_paramMap": {"connectionId": "connectionReference", "sourcePath": "sourcePath", "destPath": "destPath"}, }, ] diff --git a/modules/features/automation2/routeFeatureAutomation2.py b/modules/features/automation2/routeFeatureAutomation2.py index 344897d6..996c3cb6 100644 --- a/modules/features/automation2/routeFeatureAutomation2.py +++ b/modules/features/automation2/routeFeatureAutomation2.py @@ -108,7 +108,10 @@ async def post_execute( graph = body.get("graph") or body workflowId = body.get("workflowId") - if workflowId: + req_nodes = graph.get("nodes") or [] + # When workflowId is set: prefer graph from request (current editor state) if it has nodes. + # Only fall back to stored workflow graph when request graph is empty (e.g. resume from email). + if workflowId and len(req_nodes) == 0: a2 = getAutomation2Interface(context.user, mandateId, instanceId) wf = a2.getWorkflow(workflowId) if wf and wf.get("graph"): diff --git a/modules/serviceCenter/services/serviceChat/mainServiceChat.py b/modules/serviceCenter/services/serviceChat/mainServiceChat.py index 5cc1eb66..b05b0c64 100644 --- a/modules/serviceCenter/services/serviceChat/mainServiceChat.py +++ b/modules/serviceCenter/services/serviceChat/mainServiceChat.py @@ -253,7 +253,8 @@ class ChatService: logger.error(f"No messages found with documentsLabel: {docRef}") raise ValueError(f"Document reference not found: {docRef}") - logger.debug(f"Resolved {len(allDocuments)} documents from document list: {documentList}") + ref_count = len(getattr(documentList, 'references', [])) if documentList else 0 + logger.debug(f"Resolved {len(allDocuments)} documents from document list ({ref_count} refs)") return allDocuments except Exception as e: logger.error(f"Error getting documents from document list: {str(e)}") diff --git a/modules/serviceCenter/services/serviceExtraction/mainServiceExtraction.py b/modules/serviceCenter/services/serviceExtraction/mainServiceExtraction.py index a8468636..a227e66f 100644 --- a/modules/serviceCenter/services/serviceExtraction/mainServiceExtraction.py +++ b/modules/serviceCenter/services/serviceExtraction/mainServiceExtraction.py @@ -50,6 +50,38 @@ class ExtractionService: if model is None or model.calculatepriceCHF is None: raise RuntimeError(f"FATAL: Required internal model '{modelDisplayName}' is not available. Check connector registration.") + def extractContentFromBytes( + self, + documentBytes: bytes, + fileName: str, + mimeType: str, + documentId: Optional[str] = None, + options: Optional[ExtractionOptions] = None, + ) -> ContentExtracted: + """Extract content from raw bytes (no persistence). + Used for inline ActionDocuments from SharePoint/email in automation2.""" + opts = options or ExtractionOptions(prompt="", mergeStrategy=MergeStrategy()) + doc_id = documentId or str(uuid.uuid4()) + ec = runExtraction( + self._extractorRegistry, + self._chunkerRegistry, + documentBytes, + fileName, + mimeType, + opts, + ) + for p in ec.parts: + if not p.metadata: + p.metadata = {} + p.metadata.setdefault("documentId", doc_id) + p.metadata.setdefault("documentMimeType", mimeType) + p.metadata.setdefault("originalFileName", fileName) + p.metadata.setdefault("contentFormat", "extracted") + p.metadata.setdefault("intent", "extract") + p.metadata.setdefault("usageHint", f"Use extracted content from {fileName}") + p.metadata.setdefault("sourceAction", "extraction.extractContentFromBytes") + return ec + def extractContent( self, documents: List[ChatDocument], diff --git a/modules/serviceCenter/services/serviceGeneration/paths/documentPath.py b/modules/serviceCenter/services/serviceGeneration/paths/documentPath.py index 72838918..4fc6c9d5 100644 --- a/modules/serviceCenter/services/serviceGeneration/paths/documentPath.py +++ b/modules/serviceCenter/services/serviceGeneration/paths/documentPath.py @@ -56,15 +56,15 @@ class DocumentGenerationPath: try: # Schritt 5A: Kläre Dokument-Intents - documents = [] + doc_list = [] if documentList: - documents = self.services.chat.getChatDocumentsFromDocumentList(documentList) + doc_list = self.services.chat.getChatDocumentsFromDocumentList(documentList) # Filter: Entferne Original-Dokumente, wenn bereits Pre-Extracted JSONs existieren # (um Duplikate zu vermeiden - Pre-Extracted JSONs enthalten bereits die ContentParts) # Schritt 1: Identifiziere alle Original-Dokument-IDs, die durch Pre-Extracted JSONs abgedeckt werden originalDocIdsCoveredByPreExtracted = set() - for doc in documents: + for doc in doc_list: preExtracted = self.services.ai.intentAnalyzer.resolvePreExtractedDocument(doc) if preExtracted: originalDocId = preExtracted["originalDocument"]["id"] @@ -73,7 +73,7 @@ class DocumentGenerationPath: # Schritt 2: Filtere Dokumente - entferne Original-Dokumente, die bereits durch Pre-Extracted JSONs abgedeckt werden filteredDocuments = [] - for doc in documents: + for doc in doc_list: preExtracted = self.services.ai.intentAnalyzer.resolvePreExtractedDocument(doc) if preExtracted: # Pre-Extracted JSON behalten @@ -85,13 +85,13 @@ class DocumentGenerationPath: # Normales Dokument ohne Pre-Extracted JSON - behalten filteredDocuments.append(doc) - documents = filteredDocuments + doc_list = filteredDocuments checkWorkflowStopped(self.services) - if not documentIntents and documents: + if not documentIntents and doc_list: documentIntents = await self.services.ai.clarifyDocumentIntents( - documents, + doc_list, userPrompt, {"outputFormat": outputFormat}, docOperationId @@ -100,9 +100,9 @@ class DocumentGenerationPath: checkWorkflowStopped(self.services) # Schritt 5B: Extrahiere und bereite Content vor - if documents: + if doc_list: preparedContentParts = await self.services.ai.extractAndPrepareContent( - documents, + doc_list, documentIntents or [], docOperationId ) diff --git a/modules/serviceCenter/services/serviceGeneration/renderers/registry.py b/modules/serviceCenter/services/serviceGeneration/renderers/registry.py index b0c96e80..adb83275 100644 --- a/modules/serviceCenter/services/serviceGeneration/renderers/registry.py +++ b/modules/serviceCenter/services/serviceGeneration/renderers/registry.py @@ -72,11 +72,18 @@ class RendererRegistry: """Register a renderer class keyed by (format, outputStyle).""" try: supportedFormats = rendererClass.getSupportedFormats() - outputStyle = rendererClass.getOutputStyle() if hasattr(rendererClass, 'getOutputStyle') else 'document' priority = rendererClass.getPriority() if hasattr(rendererClass, 'getPriority') else 0 for formatName in supportedFormats: formatKey = formatName.lower() + # Per-format output style when renderer supports it (e.g. RendererText: txt→document, js→code) + if hasattr(rendererClass, 'getOutputStyle'): + try: + outputStyle = rendererClass.getOutputStyle(formatKey) + except TypeError: + outputStyle = rendererClass.getOutputStyle() if callable(getattr(rendererClass, 'getOutputStyle')) else 'document' + else: + outputStyle = 'document' registryKey = (formatKey, outputStyle) if registryKey in self._renderers: diff --git a/modules/serviceCenter/services/serviceSharepoint/mainServiceSharepoint.py b/modules/serviceCenter/services/serviceSharepoint/mainServiceSharepoint.py index de8f176a..483d7fbe 100644 --- a/modules/serviceCenter/services/serviceSharepoint/mainServiceSharepoint.py +++ b/modules/serviceCenter/services/serviceSharepoint/mainServiceSharepoint.py @@ -692,12 +692,35 @@ class SharepointService: logger.error(f"Error extracting site from standard path '{pathQuery}': {str(e)}") return None + def _isGraphSiteId(self, sitePath: str) -> bool: + """Check if sitePath is a Graph API site ID (hostname,siteId,webId format with 2 commas).""" + if not sitePath or sitePath.count(',') != 2: + return False + parts = sitePath.split(',') + return len(parts) == 3 and all(p.strip() for p in parts) + async def getSiteByStandardPath(self, sitePath: str, allSites: Optional[List[Dict[str, Any]]] = None) -> Optional[Dict[str, Any]]: - """Get SharePoint site directly by Microsoft-standard path (/sites/SiteName).""" + """Get SharePoint site directly by Microsoft-standard path (/sites/SiteName) or by site ID.""" try: from urllib.parse import urlparse - hostname = None + # When sitePath is a Graph API site ID (host,siteId,webId), use sites/{id} directly + if self._isGraphSiteId(sitePath): + endpoint = f"sites/{sitePath}" + result = await self._makeGraphApiCall(endpoint) + if result and "error" not in result: + return { + "id": result.get("id"), + "displayName": result.get("displayName"), + "name": result.get("name"), + "webUrl": result.get("webUrl"), + "description": result.get("description"), + "createdDateTime": result.get("createdDateTime"), + "lastModifiedDateTime": result.get("lastModifiedDateTime") + } + return None + + hostname = None if allSites and len(allSites) > 0: webUrl = allSites[0].get("webUrl", "") hostname = urlparse(webUrl).hostname if webUrl else None @@ -777,6 +800,14 @@ class SharepointService: parsedPath = self.extractSiteFromStandardPath(pathQuery) if parsedPath: siteName = parsedPath.get("siteName") + # When siteName is Graph API composite ID (host,siteId,webId), match by exact id + if siteName and ',' in siteName: + exact = [s for s in allSites if s.get("id") == siteName] + if exact: + logger.info(f"Resolved site by exact ID: {siteName}") + return exact + logger.warning(f"No site found with exact ID '{siteName}'") + return [] sites = self.filterSitesByHint(allSites, siteName) if not sites: logger.warning(f"No SharePoint site found matching '{siteName}'") diff --git a/modules/workflows/automation2/executionEngine.py b/modules/workflows/automation2/executionEngine.py index 1e623065..2e799707 100644 --- a/modules/workflows/automation2/executionEngine.py +++ b/modules/workflows/automation2/executionEngine.py @@ -77,6 +77,8 @@ async def executeGraph( mandateId, startAfterNodeId is not None, ) + from modules.workflows.processing.shared.methodDiscovery import discoverMethods + discoverMethods(services) nodeTypeIds = _getNodeTypeIds(services) logger.debug("executeGraph nodeTypeIds (%d): %s", len(nodeTypeIds), sorted(nodeTypeIds)) errors = validateGraph(graph, nodeTypeIds) diff --git a/modules/workflows/automation2/executors/actionNodeExecutor.py b/modules/workflows/automation2/executors/actionNodeExecutor.py index 72a1b530..504fb34e 100644 --- a/modules/workflows/automation2/executors/actionNodeExecutor.py +++ b/modules/workflows/automation2/executors/actionNodeExecutor.py @@ -16,27 +16,47 @@ def _getNodeDefinition(nodeType: str) -> Optional[Dict[str, Any]]: return None -def _resolveConnectionIdToReference(chatService, connectionId: str) -> Optional[str]: +def _resolveConnectionIdToReference(chatService, connectionId: str, services=None) -> Optional[str]: """ Resolve connectionId (UserConnection.id) to connectionReference format. connectionReference format: connection:{authority}:{externalUsername} + Falls back to interfaceDbApp.getUserConnectionById when chatService resolution fails. """ - if not connectionId or not chatService: + if not connectionId: return None - try: - connections = chatService.getUserConnections() - for c in connections or []: - conn = c if isinstance(c, dict) else (c.model_dump() if hasattr(c, "model_dump") else {}) - if str(conn.get("id")) == str(connectionId): - authority = conn.get("authority") + # Already in reference format + if isinstance(connectionId, str) and connectionId.startswith("connection:"): + return connectionId + # Try chatService first + if chatService: + try: + connections = chatService.getUserConnections() + for c in connections or []: + conn = c if isinstance(c, dict) else (c.model_dump() if hasattr(c, "model_dump") else {}) + if str(conn.get("id")) == str(connectionId): + authority = conn.get("authority") + if hasattr(authority, "value"): + authority = authority.value + username = conn.get("externalUsername", "") + return f"connection:{authority}:{username}" + except Exception as e: + logger.debug("_resolveConnectionIdToReference chatService: %s", e) + # Fallback: interfaceDbApp.getUserConnectionById (automation2 may not have chat.getUserConnections) + app = getattr(services, "interfaceDbApp", None) if services else None + if app and hasattr(app, "getUserConnectionById"): + try: + conn = app.getUserConnectionById(str(connectionId)) + if conn: + authority = getattr(conn, "authority", None) if hasattr(authority, "value"): authority = authority.value - username = conn.get("externalUsername", "") + else: + authority = str(authority) if authority else "outlook" + username = getattr(conn, "externalUsername", "") or "" return f"connection:{authority}:{username}" - return None - except Exception as e: - logger.warning(f"Could not resolve connectionId {connectionId} to reference: {e}") - return None + except Exception as e: + logger.debug("_resolveConnectionIdToReference getUserConnectionById: %s", e) + return None def _extractEmailContentFromUpstream(inp: Any) -> Optional[Dict[str, Any]]: @@ -67,6 +87,71 @@ def _extractEmailContentFromUpstream(inp: Any) -> Optional[Dict[str, Any]]: return None +def _extractContextFromUpstream(inp: Any) -> Optional[str]: + """ + Extract plain text context from upstream node output (e.g. AI node returning txt). + Use when _extractEmailContentFromUpstream returns None – the generated document content + (email body, summary, etc.) should be passed as context to email.draftEmail. + """ + if not inp: + return None + docs = None + if isinstance(inp, dict): + docs = inp.get("documents") or inp.get("documentList") + if not docs and isinstance(inp.get("data"), dict): + docs = inp.get("data", {}).get("documents") + if not docs or not isinstance(docs, (list, tuple)): + return None + doc = docs[0] if docs else None + if not doc: + return None + raw = getattr(doc, "documentData", None) if hasattr(doc, "documentData") else (doc.get("documentData") or doc.get("content") if isinstance(doc, dict) else None) + if not raw: + return None + if isinstance(raw, bytes): + return raw.decode("utf-8", errors="replace").strip() + s = str(raw).strip() + return s if s else None + + +def _gatherAttachmentDocumentsFromUpstream( + nodeId: str, + inputSources: Dict[str, Dict[int, tuple]], + nodeOutputs: Dict[str, Any], + orderedNodes: List[Dict], + visited: Optional[set] = None, +) -> List[Any]: + """ + Walk upstream from nodeId through AI nodes to collect file documents (e.g. from sharepoint.downloadFile). + Used when email.draftEmail has AI upstream – attachments come from file nodes, not AI output. + """ + visited = visited or set() + if nodeId in visited: + return [] + visited.add(nodeId) + docs = [] + src = inputSources.get(nodeId, {}).get(0) + if not src: + return [] + srcId, _ = src + srcNode = next((n for n in (orderedNodes or []) if n.get("id") == srcId), None) + srcType = (srcNode or {}).get("type", "") + out = nodeOutputs.get(srcId) + + if srcType in ("sharepoint.downloadFile", "sharepoint.readFile"): + if isinstance(out, dict): + for d in out.get("documents") or out.get("documentList") or []: + if isinstance(d, dict) and (d.get("documentData") or (d.get("validationMetadata") or {}).get("fileId")): + docs.append(d) + elif hasattr(d, "documentData") or (getattr(d, "validationMetadata", None) or {}).get("fileId"): + docs.append(d.model_dump() if hasattr(d, "model_dump") else d) + elif srcType.startswith("ai."): + docs.extend( + _gatherAttachmentDocumentsFromUpstream(srcId, inputSources, nodeOutputs, orderedNodes, visited) + ) + return docs + + def _getIncomingEmailFromUpstream( nodeId: str, inputSources: Dict[str, Dict[int, tuple]], @@ -213,6 +298,7 @@ def _buildActionParams( nodeDef: Dict[str, Any], resolvedParams: Dict[str, Any], chatService, + services=None, ) -> Dict[str, Any]: """ Build params for ActionExecutor from node parameters using _paramMap. @@ -259,8 +345,8 @@ def _buildActionParams( # Resolve connectionId to connectionReference if "connectionId" in params: connId = params.get("connectionId") - if connId and chatService: - ref = _resolveConnectionIdToReference(chatService, connId) + if connId: + ref = _resolveConnectionIdToReference(chatService, connId, services) if ref: params["connectionReference"] = ref else: @@ -366,7 +452,7 @@ class ActionNodeExecutor: logger.debug("ai.prompt: injected email context from upstream %s", srcType) chatService = getattr(self.services, "chat", None) - actionParams = _buildActionParams(node, nodeDef or {}, resolvedParams, chatService) + actionParams = _buildActionParams(node, nodeDef or {}, resolvedParams, chatService, self.services) # email.checkEmail: pause and wait for new email (background poller will resume) if nodeType == "email.checkEmail": @@ -408,17 +494,72 @@ class ActionNodeExecutor: email_content = _extractEmailContentFromUpstream(inp) if email_content: actionParams["emailContent"] = email_content - actionParams.setdefault("context", "(from connected AI node)") - else: - # AI failed or wrong format: pass incoming email from upstream as context - incoming = _getIncomingEmailFromUpstream(nodeId, inputSources, nodeOutputs, orderedNodes) - if incoming: - ctx, doc_list, reply_to = incoming + actionParams["context"] = email_content.get("body", "") or "(from connected AI node)" + # Attachments: gather from file nodes upstream of AI (e.g. downloadFile -> AI -> email) + attachment_docs = _gatherAttachmentDocumentsFromUpstream( + nodeId, inputSources, nodeOutputs, orderedNodes + ) + if attachment_docs: + existing = actionParams.get("documentList") or [] + # Prefer file docs from upstream; append any existing that look like binary attachments + def _is_binary_attachment(d): + if isinstance(d, dict) and d.get("documentData"): + try: + import json + json.loads(d["documentData"]) + return False # JSON = email content, not attachment + except (TypeError, ValueError): + return True + return bool(isinstance(d, dict) and (d.get("validationMetadata") or {}).get("fileId")) + extra = [x for x in (existing if isinstance(existing, list) else []) if _is_binary_attachment(x)] + actionParams["documentList"] = attachment_docs + extra + if not email_content: + # AI returns plain text (e.g. email.txt): use as email body directly (no extra AI call) + ctx = _extractContextFromUpstream(inp) + if ctx: + actionParams["emailContent"] = { + "subject": actionParams.get("subject", "Draft"), + "body": ctx, + "to": actionParams.get("to"), + } actionParams["context"] = ctx - if doc_list and not actionParams.get("documentList"): - actionParams["documentList"] = doc_list - if reply_to and not actionParams.get("to"): - actionParams["to"] = [reply_to] + else: + # Fallback: incoming email from upstream (if flow is email->AI->draft) + incoming = _getIncomingEmailFromUpstream(nodeId, inputSources, nodeOutputs, orderedNodes) + if incoming: + ctx, doc_list, reply_to = incoming + actionParams["context"] = ctx + if doc_list and not actionParams.get("documentList"): + actionParams["documentList"] = doc_list + if reply_to and not actionParams.get("to"): + actionParams["to"] = [reply_to] + else: + doc_count = len(inp.get("documents", [])) if isinstance(inp, dict) else 0 + logger.warning( + "email.draftEmail: AI upstream returned %d doc(s) but context extraction failed (no subject/body, no plain text). " + "Ensure AI node outputs document with documentData.", + doc_count, + ) + actionParams["context"] = "(no context extracted from upstream – check AI node output)" + elif srcType in ("sharepoint.downloadFile", "sharepoint.readFile"): + # File itself is the context: pass as attachment, use filename as minimal context (no content extraction) + if not actionParams.get("context"): + inp = nodeOutputs.get(srcId) + docs = (inp.get("documents") or inp.get("documentList", [])) if isinstance(inp, dict) else [] + doc = docs[0] if docs else None + name = None + if isinstance(doc, dict): + name = doc.get("documentName") or doc.get("fileName") + elif doc and hasattr(doc, "documentName"): + name = getattr(doc, "documentName", None) or getattr(doc, "fileName", None) + ctx = name if name else "Attachment" + actionParams["context"] = ctx + actionParams["emailContent"] = { + "subject": actionParams.get("subject", "Draft"), + "body": ctx, + "to": actionParams.get("to"), + } + # documentList already merged from upstream (file as attachment) else: # Direct connection to email.checkEmail/searchEmail: use incoming email as context if not actionParams.get("context"): @@ -431,11 +572,12 @@ class ActionNodeExecutor: if reply_to and not actionParams.get("to"): actionParams["to"] = [reply_to] - # sharepoint.uploadFile: content from documentList (upstream) if not in params - if nodeType == "sharepoint.uploadFile" and "content" not in actionParams: - docList = actionParams.get("documentList") or resolvedParams.get("documentList") - if docList: - actionParams["content"] = docList[0] if isinstance(docList, list) and docList else docList + # Generic context handover: when upstream provides documents, pass first doc as content for actions that expect it + docList = actionParams.get("documentList") or resolvedParams.get("documentList") + if docList and "content" not in actionParams: + first = docList[0] if isinstance(docList, list) and docList else docList + # Actions like sharepoint.uploadFile consume content from context + actionParams["content"] = first executor = ActionExecutor(self.services) logger.info("ActionNodeExecutor node %s calling executeAction(%s, %s)", nodeId, methodName, actionName) diff --git a/modules/workflows/methods/methodAi/actions/process.py b/modules/workflows/methods/methodAi/actions/process.py index b4157f13..c3cca62b 100644 --- a/modules/workflows/methods/methodAi/actions/process.py +++ b/modules/workflows/methods/methodAi/actions/process.py @@ -1,9 +1,11 @@ # Copyright (c) 2025 Patrick Motsch # All rights reserved. +import base64 import logging import time import json +import uuid from typing import Dict, Any, List, Optional from modules.datamodels.datamodelChat import ActionResult, ActionDocument from modules.datamodels.datamodelAi import AiCallRequest, AiCallOptions, OperationTypeEnum, ProcessingModeEnum @@ -11,6 +13,64 @@ from modules.datamodels.datamodelExtraction import ContentPart logger = logging.getLogger(__name__) + +def _is_action_document_like(obj: Any) -> bool: + """Check if object is ActionDocument-like (has documentData for inline workflow documents).""" + if obj is None: + return False + data = None + if isinstance(obj, dict): + data = obj.get("documentData") or obj.get("document_data") + else: + data = getattr(obj, "documentData", None) or getattr(obj, "document_data", None) + if data is None: + return False + if isinstance(data, bytes): + return len(data) > 0 + if isinstance(data, str): + return len(data.strip()) > 0 + return True + + +def _action_docs_to_content_parts(services, docs: List[Any]) -> List[ContentPart]: + """Extract content from ActionDocument-like objects in memory (no persistence). + Decodes base64, runs extraction pipeline, returns ContentParts for AI. + """ + from modules.datamodels.datamodelExtraction import ExtractionOptions, MergeStrategy + + all_parts = [] + extraction = getattr(services, "extraction", None) + if not extraction: + logger.warning("ai.process: No extraction service - cannot extract from inline documents") + return [] + opts = ExtractionOptions(prompt="", mergeStrategy=MergeStrategy()) + for i, doc in enumerate(docs): + raw = (doc.get("documentData") or doc.get("document_data")) if isinstance(doc, dict) else (getattr(doc, "documentData", None) or getattr(doc, "document_data", None)) + if not raw: + continue + name = doc.get("documentName", doc.get("fileName", f"document_{i}")) + mime = doc.get("mimeType", "application/octet-stream") + if isinstance(raw, str): + try: + content = base64.b64decode(raw, validate=True) + except Exception: + content = raw.encode("utf-8") + else: + content = raw if isinstance(raw, bytes) else bytes(raw) + ec = extraction.extractContentFromBytes( + documentBytes=content, + fileName=name, + mimeType=mime, + documentId=str(uuid.uuid4()), + options=opts, + ) + for p in ec.parts: + if p.data or getattr(p, "typeGroup", "") == "image": + p.metadata.setdefault("originalFileName", name) + all_parts.append(p) + logger.info(f"ai.process: Extracted {len(ec.parts)} parts from {name} (no persistence)") + return all_parts + async def process(self, parameters: Dict[str, Any]) -> ActionResult: operationId = None try: @@ -41,8 +101,21 @@ async def process(self, parameters: Dict[str, Any]) -> ActionResult: from modules.datamodels.datamodelDocref import DocumentReferenceList documentListParam = parameters.get("documentList") - # Convert to DocumentReferenceList if needed - if documentListParam is None: + inline_content_parts: Optional[List[ContentPart]] = None + + # Handle inline ActionDocuments (e.g. from SharePoint/email in automation2 – no persistence) + is_inline = ( + isinstance(documentListParam, list) + and len(documentListParam) > 0 + and _is_action_document_like(documentListParam[0]) + ) + if is_inline: + inline_content_parts = _action_docs_to_content_parts(self.services, documentListParam) + documentList = DocumentReferenceList(references=[]) + logger.info( + f"ai.process: Extracted {len(inline_content_parts)} ContentParts from {len(documentListParam)} inline ActionDocuments (no persistence)" + ) + elif documentListParam is None: documentList = DocumentReferenceList(references=[]) logger.debug(f"ai.process: documentList is None, using empty DocumentReferenceList") elif isinstance(documentListParam, DocumentReferenceList): @@ -54,6 +127,11 @@ async def process(self, parameters: Dict[str, Any]) -> ActionResult: documentList = DocumentReferenceList.from_string_list([documentListParam]) logger.info(f"ai.process: Converted string to DocumentReferenceList with {len(documentList.references)} references") elif isinstance(documentListParam, list): + first = documentListParam[0] if documentListParam else None + logger.info( + f"ai.process: documentList is list of {len(documentListParam)} items, " + f"first type={type(first).__name__}, has_documentData={_is_action_document_like(first) if first else False}" + ) documentList = DocumentReferenceList.from_string_list(documentListParam) logger.info(f"ai.process: Converted list to DocumentReferenceList with {len(documentList.references)} references") else: @@ -65,7 +143,9 @@ async def process(self, parameters: Dict[str, Any]) -> ActionResult: simpleMode = parameters.get("simpleMode", False) if not aiPrompt: - logger.error(f"aiPrompt is missing or empty. Parameters: {parameters}") + param_keys = list(parameters.keys()) if isinstance(parameters, dict) else [] + doc_count = len(parameters.get("documentList") or []) if isinstance(parameters.get("documentList"), (list, tuple)) else 0 + logger.error(f"aiPrompt is missing or empty. Parameter keys: {param_keys}, documentList: {doc_count} item(s)") return ActionResult.isFailure( error="AI prompt is required" ) @@ -86,10 +166,9 @@ async def process(self, parameters: Dict[str, Any]) -> ActionResult: mimeMap = {"txt": "text/plain", "json": "application/json", "html": "text/html", "md": "text/markdown", "csv": "text/csv", "xml": "application/xml"} output_mime_type = mimeMap.get(normalized_result_type, "text/plain") if normalized_result_type else "text/plain" - # Phase 7.3: Pass both documentList and contentParts to AI service - # (Extraction logic removed - handled by AI service) - contentParts: Optional[List[ContentPart]] = None - if "contentParts" in parameters: + # Phase 7.3: Pass documentList and/or contentParts to AI service + contentParts: Optional[List[ContentPart]] = inline_content_parts + if "contentParts" in parameters and not inline_content_parts: contentPartsParam = parameters.get("contentParts") if contentPartsParam: if isinstance(contentPartsParam, list): @@ -203,8 +282,8 @@ async def process(self, parameters: Dict[str, Any]) -> ActionResult: aiResponse = await self.services.ai.callAiContent( prompt=aiPrompt, options=options, - documentList=documentList, # Pass documentList - AI service handles extraction - contentParts=contentParts, # Pass contentParts if provided (or None) + documentList=documentList if not inline_content_parts else None, # Skip if using inline extracted parts + contentParts=contentParts, # From inline ActionDocuments (extracted in memory) or parameters outputFormat=output_format, # Can be None - AI determines from prompt parentOperationId=operationId, generationIntent=generationIntent # REQUIRED for DATA_GENERATE diff --git a/modules/workflows/methods/methodOutlook/actions/composeAndDraftEmailWithContext.py b/modules/workflows/methods/methodOutlook/actions/composeAndDraftEmailWithContext.py index 859418d5..09cdd1dd 100644 --- a/modules/workflows/methods/methodOutlook/actions/composeAndDraftEmailWithContext.py +++ b/modules/workflows/methods/methodOutlook/actions/composeAndDraftEmailWithContext.py @@ -261,35 +261,78 @@ Return JSON: } # Add documents as attachments if provided + # Supports: 1) inline ActionDocuments (dict with documentData from e.g. sharepoint.downloadFile) + # 2) docItem:... references (chat workflow documents) if documentList: message["attachments"] = [] for attachment_ref in documentList: - # Get attachment document from service center - from modules.datamodels.datamodelDocref import DocumentReferenceList - attachment_docs = self.services.chat.getChatDocumentsFromDocumentList(DocumentReferenceList.from_string_list([attachment_ref])) + base64_content = None + attach_name = "attachment" + attach_mime = "application/octet-stream" + + # Inline document: dict/object with documentData (from automation2 upstream, e.g. sharepoint.downloadFile) + is_inline = isinstance(attachment_ref, dict) and attachment_ref.get("documentData") + if not is_inline and hasattr(attachment_ref, "documentData"): + is_inline = bool(getattr(attachment_ref, "documentData", None)) + if is_inline: + doc = attachment_ref + base64_content = doc.get("documentData") if isinstance(doc, dict) else getattr(doc, "documentData", None) + attach_name = (doc.get("documentName") or doc.get("fileName")) if isinstance(doc, dict) else (getattr(doc, "documentName", None) or getattr(doc, "fileName", "attachment")) + attach_mime = (doc.get("mimeType") or attach_mime) if isinstance(doc, dict) else (getattr(doc, "mimeType", None) or attach_mime) + if base64_content and attach_name: + message["attachments"].append({ + "@odata.type": "#microsoft.graph.fileAttachment", + "name": attach_name, + "contentType": attach_mime, + "contentBytes": base64_content + }) + continue + # fileId in validationMetadata: resolve via getFileData (avoids large base64 in pipeline) + file_id = None + if isinstance(attachment_ref, dict): + vm = attachment_ref.get("validationMetadata") or {} + file_id = vm.get("fileId") + elif hasattr(attachment_ref, "validationMetadata"): + vm = getattr(attachment_ref, "validationMetadata") or {} + file_id = vm.get("fileId") if isinstance(vm, dict) else None + if file_id: + try: + file_content = self.services.chat.getFileData(file_id) + if file_content: + base64_content = base64.b64encode(file_content if isinstance(file_content, bytes) else str(file_content).encode("utf-8")).decode("utf-8") + name = (attachment_ref.get("documentName") or attachment_ref.get("fileName", "attachment")) if isinstance(attachment_ref, dict) else (getattr(attachment_ref, "documentName", None) or getattr(attachment_ref, "fileName", "attachment")) + mime = (attachment_ref.get("mimeType") or attach_mime) if isinstance(attachment_ref, dict) else (getattr(attachment_ref, "mimeType", None) or attach_mime) + message["attachments"].append({ + "@odata.type": "#microsoft.graph.fileAttachment", + "name": name, + "contentType": mime, + "contentBytes": base64_content + }) + continue + except Exception as e: + logger.warning("Could not load file %s for attachment: %s", file_id, e) + + # docItem:... reference (chat workflow) – only when it's a string ref + attachment_docs = [] + if isinstance(attachment_ref, str) and attachment_ref.strip(): + from modules.datamodels.datamodelDocref import DocumentReferenceList + attachment_docs = self.services.chat.getChatDocumentsFromDocumentList(DocumentReferenceList.from_string_list([attachment_ref])) if attachment_docs: for doc in attachment_docs: - file_id = getattr(doc, 'fileId', None) - if file_id: + fid = getattr(doc, 'fileId', None) + if fid: try: - file_content = self.services.chat.getFileData(file_id) + file_content = self.services.chat.getFileData(fid) if file_content: - if isinstance(file_content, bytes): - content_bytes = file_content - else: - content_bytes = str(file_content).encode('utf-8') - - base64_content = base64.b64encode(content_bytes).decode('utf-8') - - attachment = { + cb = file_content if isinstance(file_content, bytes) else str(file_content).encode('utf-8') + message["attachments"].append({ "@odata.type": "#microsoft.graph.fileAttachment", "name": doc.fileName, "contentType": doc.mimeType or "application/octet-stream", - "contentBytes": base64_content - } - message["attachments"].append(attachment) + "contentBytes": base64.b64encode(cb).decode('utf-8') + }) except Exception as e: - logger.error(f"Error reading attachment file {doc.fileName}: {str(e)}") + logger.error("Error reading attachment file %s: %s", doc.fileName, e) # Create the draft message drafts_folder_id = self.folderManagement.getFolderId("Drafts", connection) @@ -331,14 +374,21 @@ Return JSON: attachmentFilenames = [] attachmentReferences = [] if documentList: - try: - from modules.datamodels.datamodelDocref import DocumentReferenceList - attached_docs = self.services.chat.getChatDocumentsFromDocumentList(DocumentReferenceList.from_string_list(documentList)) or [] - attachmentFilenames = [getattr(doc, 'fileName', '') for doc in attached_docs if getattr(doc, 'fileName', None)] - # Store normalized document references (with filenames) - use normalized_ai_attachments if available - attachmentReferences = normalized_ai_attachments if normalized_ai_attachments else [self.services.chat.getDocumentReferenceFromChatDocument(d) for d in attached_docs] - except Exception: - pass + # Inline docs (dict with documentName): use directly + string_refs = [r for r in documentList if isinstance(r, str)] + inline_docs = [r for r in documentList if isinstance(r, dict)] + for d in inline_docs: + name = d.get("documentName") or d.get("fileName") + if name: + attachmentFilenames.append(name) + if string_refs: + try: + from modules.datamodels.datamodelDocref import DocumentReferenceList + attached_docs = self.services.chat.getChatDocumentsFromDocumentList(DocumentReferenceList.from_string_list(string_refs)) or [] + attachmentFilenames.extend(getattr(doc, 'fileName', '') for doc in attached_docs if getattr(doc, 'fileName', None)) + attachmentReferences = normalized_ai_attachments if normalized_ai_attachments else [self.services.chat.getDocumentReferenceFromChatDocument(d) for d in attached_docs] + except Exception: + pass # Create validation metadata for content validator validationMetadata = { diff --git a/modules/workflows/methods/methodOutlook/methodOutlook.py b/modules/workflows/methods/methodOutlook/methodOutlook.py index 8d80cef5..633f396d 100644 --- a/modules/workflows/methods/methodOutlook/methodOutlook.py +++ b/modules/workflows/methods/methodOutlook/methodOutlook.py @@ -157,15 +157,22 @@ class MethodOutlook(MethodBase): name="context", type="str", frontendType=FrontendType.TEXTAREA, - required=True, - description="Detailed context for composing the email" + required=False, + description="Detailed context for AI composition (omit when emailContent provided)" + ), + "emailContent": WorkflowActionParameter( + name="emailContent", + type="dict", + frontendType=FrontendType.HIDDEN, + required=False, + description="Direct subject/body/to from upstream (skips AI composition)" ), "documentList": WorkflowActionParameter( name="documentList", - type="List[str]", + type="List[Any]", frontendType=FrontendType.DOCUMENT_REFERENCE, required=False, - description="Document references for context/attachments" + description="Document references or inline ActionDocuments for attachments" ), "cc": WorkflowActionParameter( name="cc", diff --git a/modules/workflows/methods/methodSharepoint/actions/copyFile.py b/modules/workflows/methods/methodSharepoint/actions/copyFile.py index f149e482..92ce88a2 100644 --- a/modules/workflows/methods/methodSharepoint/actions/copyFile.py +++ b/modules/workflows/methods/methodSharepoint/actions/copyFile.py @@ -14,52 +14,69 @@ async def copyFile(self, parameters: Dict[str, Any]) -> ActionResult: if not connectionReference: return ActionResult.isFailure(error="connectionReference parameter is required") - siteIdParam = parameters.get("siteId") - if not siteIdParam: - return ActionResult.isFailure(error="siteId parameter is required") - - sourceFolder = parameters.get("sourceFolder") - if not sourceFolder: - return ActionResult.isFailure(error="sourceFolder parameter is required") - - sourceFile = parameters.get("sourceFile") - if not sourceFile: - return ActionResult.isFailure(error="sourceFile parameter is required") - - destFolder = parameters.get("destFolder") - if not destFolder: - return ActionResult.isFailure(error="destFolder parameter is required") - - destFile = parameters.get("destFile") - if not destFile: - return ActionResult.isFailure(error="destFile parameter is required") - - # Extract siteId from document if it's a reference - siteId = None - if isinstance(siteIdParam, str): - from modules.datamodels.datamodelDocref import DocumentReferenceList - try: - docList = DocumentReferenceList.from_string_list([siteIdParam]) - chatDocuments = self.services.chat.getChatDocumentsFromDocumentList(docList) - if chatDocuments and len(chatDocuments) > 0: - siteInfoJson = json.loads(chatDocuments[0].documentData) - siteId = siteInfoJson.get("id") - except: - pass - - if not siteId: - siteId = siteIdParam - else: - siteId = siteIdParam - - if not siteId: - return ActionResult.isFailure(error="Could not extract siteId from parameter") - - # Get Microsoft connection + # Set SharePoint access token first – required before siteDiscovery/sharepoint calls connection = self.connection.getMicrosoftConnection(connectionReference) if not connection: return ActionResult.isFailure(error="No valid Microsoft connection found for the provided connection reference") + sourcePath = (parameters.get("sourcePath") or parameters.get("sourcePathQuery") or "").strip() + destPath = (parameters.get("destPath") or parameters.get("destPathQuery") or "").strip() + + siteId = None + sourceFolder = None + sourceFile = None + destFolder = None + destFile = None + + if sourcePath and destPath and sourcePath.startswith("/sites/") and destPath.startswith("/sites/"): + parsedSource = self.services.sharepoint.extractSiteFromStandardPath(sourcePath) + parsedDest = self.services.sharepoint.extractSiteFromStandardPath(destPath) + if parsedSource and parsedDest: + innerSrc = (parsedSource.get("innerPath") or "").strip().rstrip("/") + innerDest = (parsedDest.get("innerPath") or "").strip().rstrip("/") + if innerSrc: + if "/" in innerSrc: + sourceFolder = innerSrc.rsplit("/", 1)[0] + sourceFile = innerSrc.rsplit("/", 1)[-1] + else: + sourceFolder = "" + sourceFile = innerSrc + destFolder = innerDest + destFile = sourceFile + sites, _ = await self.siteDiscovery.resolveSitesFromPathQuery(sourcePath) + if sites: + siteId = sites[0].get("id") + + if not siteId or not sourceFolder or not sourceFile or not destFolder: + siteIdParam = parameters.get("siteId") + sourceFolder = parameters.get("sourceFolder") + sourceFile = parameters.get("sourceFile") + destFolder = parameters.get("destFolder") + destFile = parameters.get("destFile") + if not siteIdParam: + return ActionResult.isFailure(error="Either sourcePath+destPath or siteId, sourceFolder, sourceFile, destFolder, destFile are required") + if not sourceFolder or not sourceFile or not destFolder or not destFile: + return ActionResult.isFailure(error="sourceFolder, sourceFile, destFolder, and destFile are required") + if not destFile: + destFile = sourceFile + if isinstance(siteIdParam, str): + from modules.datamodels.datamodelDocref import DocumentReferenceList + try: + docList = DocumentReferenceList.from_string_list([siteIdParam]) + chatDocuments = self.services.chat.getChatDocumentsFromDocumentList(docList) + if chatDocuments and len(chatDocuments) > 0: + siteInfoJson = json.loads(chatDocuments[0].documentData) + siteId = siteInfoJson.get("id") + except Exception: + pass + if not siteId: + siteId = siteIdParam + else: + siteId = siteIdParam + + if not siteId: + return ActionResult.isFailure(error="Could not resolve siteId") + # Copy file await self.services.sharepoint.copyFileAsync( siteId=siteId, diff --git a/modules/workflows/methods/methodSharepoint/actions/downloadFileByPath.py b/modules/workflows/methods/methodSharepoint/actions/downloadFileByPath.py index c64a6637..447d8c08 100644 --- a/modules/workflows/methods/methodSharepoint/actions/downloadFileByPath.py +++ b/modules/workflows/methods/methodSharepoint/actions/downloadFileByPath.py @@ -16,43 +16,59 @@ async def downloadFileByPath(self, parameters: Dict[str, Any]) -> ActionResult: if not connectionReference: return ActionResult.isFailure(error="connectionReference parameter is required") - siteIdParam = parameters.get("siteId") - if not siteIdParam: - return ActionResult.isFailure(error="siteId parameter is required") - - filePath = parameters.get("filePath") - if not filePath: - return ActionResult.isFailure(error="filePath parameter is required") - - # Extract siteId from document if it's a reference - siteId = None - if isinstance(siteIdParam, str): - # Try to parse from document reference - from modules.datamodels.datamodelDocref import DocumentReferenceList - try: - docList = DocumentReferenceList.from_string_list([siteIdParam]) - chatDocuments = self.services.chat.getChatDocumentsFromDocumentList(docList) - if chatDocuments and len(chatDocuments) > 0: - siteInfoJson = json.loads(chatDocuments[0].documentData) - siteId = siteInfoJson.get("id") - except: - pass - - if not siteId: - # Assume it's the site ID directly - siteId = siteIdParam - else: - siteId = siteIdParam - - if not siteId: - return ActionResult.isFailure(error="Could not extract siteId from parameter") - - # Get Microsoft connection + # Set SharePoint access token first – required before siteDiscovery/sharepoint calls connection = self.connection.getMicrosoftConnection(connectionReference) if not connection: return ActionResult.isFailure(error="No valid Microsoft connection found for the provided connection reference") - # Download file + pathQuery = (parameters.get("pathQuery") or parameters.get("path") or "").strip() + siteIdParam = parameters.get("siteId") + filePath = parameters.get("filePath") + # If filePath looks like full SharePoint path, use as pathQuery fallback + if not pathQuery and filePath and isinstance(filePath, str) and filePath.strip().startswith("/sites/"): + pathQuery = filePath.strip() + + siteId = None + innerPath = None + + # Option 1: pathQuery provided (e.g. /sites/SiteName/Shared Documents/file.pdf) – resolve site and inner path + if pathQuery and pathQuery != "*": + sites, errorMsg = await self.siteDiscovery.resolveSitesFromPathQuery(pathQuery) + if errorMsg: + return ActionResult.isFailure(error=errorMsg) + if not sites: + return ActionResult.isFailure(error="Could not resolve site from pathQuery") + parsedPath = self.services.sharepoint.extractSiteFromStandardPath(pathQuery) + if not parsedPath: + return ActionResult.isFailure(error="pathQuery must be a standard SharePoint path (e.g. /sites/SiteName/Shared Documents/file.pdf)") + innerPath = (parsedPath.get("innerPath") or "").strip() + if not innerPath: + return ActionResult.isFailure(error="pathQuery must include a file path (e.g. /sites/SiteName/Shared Documents/file.pdf)") + siteId = sites[0].get("id") + filePath = innerPath + elif siteIdParam and filePath: + # Option 2: siteId + filePath provided directly + if isinstance(siteIdParam, str): + from modules.datamodels.datamodelDocref import DocumentReferenceList + try: + docList = DocumentReferenceList.from_string_list([siteIdParam]) + chatDocuments = self.services.chat.getChatDocumentsFromDocumentList(docList) + if chatDocuments and len(chatDocuments) > 0: + siteInfoJson = json.loads(chatDocuments[0].documentData) + siteId = siteInfoJson.get("id") + except Exception: + pass + if not siteId: + siteId = siteIdParam + else: + siteId = siteIdParam + else: + return ActionResult.isFailure(error="Either pathQuery (e.g. /sites/SiteName/Shared Documents/file.pdf) or both siteId and filePath are required") + + if not siteId or not filePath: + return ActionResult.isFailure(error="Could not resolve siteId and file path from parameters") + + # Download file (connection/token already set above) fileContent = await self.services.sharepoint.downloadFileByPath( siteId=siteId, filePath=filePath @@ -73,7 +89,19 @@ async def downloadFileByPath(self, parameters: Dict[str, Any]) -> ActionResult: "downloadFileByPath" ) - # Encode as base64 + # Save to user's Files (FileItem + FileData) via interfaceDbComponent – appears in Files UI + fileItem = None + db = getattr(self.services, "interfaceDbComponent", None) + if db: + try: + mimeType = db.getMimeType(filename) if hasattr(db, "getMimeType") else "application/octet-stream" + fileItem = db.createFile(name=filename, mimeType=mimeType, content=fileContent) + db.createFileData(fileItem.id, fileContent) + logger.info(f"Saved SharePoint file to user Files: {filename} (id={fileItem.id})") + except Exception as e: + logger.warning(f"Could not save to user Files: {e}") + + # Encode as base64 for workflow context (AI, data nodes) fileBase64 = base64.b64encode(fileContent).decode('utf-8') validationMetadata = self._createValidationMetadata( @@ -82,6 +110,8 @@ async def downloadFileByPath(self, parameters: Dict[str, Any]) -> ActionResult: filePath=filePath, fileSize=len(fileContent) ) + if fileItem: + validationMetadata["fileId"] = fileItem.id document = ActionDocument( documentName=filename, diff --git a/modules/workflows/methods/methodSharepoint/actions/readDocuments.py b/modules/workflows/methods/methodSharepoint/actions/readDocuments.py index 73cdb730..542ab2e8 100644 --- a/modules/workflows/methods/methodSharepoint/actions/readDocuments.py +++ b/modules/workflows/methods/methodSharepoint/actions/readDocuments.py @@ -244,7 +244,56 @@ async def readDocuments(self, parameters: Dict[str, Any]) -> ActionResult: self.services.chat.progressLogFinish(operationId, False) return ActionResult.isFailure(error="Either documentList must contain findDocumentPath result with file information, or pathQuery must be provided. Use findDocumentPath first to get file paths, or provide pathQuery directly.") - # This should never be reached if logic above is correct + # When we have pathQuery + sites but no sharePointFileIds (e.g. user selected from browse tree), + # download the file by path + if pathQuery and pathQuery.strip() != "" and pathQuery.strip() != "*" and sites and not sharePointFileIds: + parsedPath = self.services.sharepoint.extractSiteFromStandardPath(pathQuery) + if parsedPath: + innerPath = (parsedPath.get("innerPath") or "").strip() + if not innerPath: + if operationId: + self.services.chat.progressLogFinish(operationId, False) + return ActionResult.isFailure(error="pathQuery must include a file path (e.g. /sites/SiteName/Shared Documents/file.pdf)") + siteId = sites[0].get("id") + if not siteId: + if operationId: + self.services.chat.progressLogFinish(operationId, False) + return ActionResult.isFailure(error="Could not resolve site ID from pathQuery") + self.services.chat.progressLogUpdate(operationId, 0.5, f"Reading file from path: {innerPath}") + fileContent = await self.services.sharepoint.downloadFileByPath(siteId=siteId, filePath=innerPath) + if fileContent is None: + if operationId: + self.services.chat.progressLogFinish(operationId, False) + return ActionResult.isFailure(error=f"File not found or could not be downloaded: {innerPath}") + fileName = innerPath.split("/")[-1] if "/" in innerPath else innerPath + mimeType = "application/octet-stream" + if fileName.endswith(".pdf"): + mimeType = "application/pdf" + elif fileName.endswith(".txt"): + mimeType = "text/plain" + elif fileName.endswith(".json"): + mimeType = "application/json" + base64Content = base64.b64encode(fileContent).decode("utf-8") + validationMetadata = { + "actionType": "sharepoint.readDocuments", + "fileName": fileName, + "sharepointFileId": None, + "siteName": sites[0].get("displayName"), + "mimeType": mimeType, + "contentType": "binary", + "size": len(fileContent), + "includeMetadata": includeMetadata + } + actionDoc = ActionDocument( + documentName=fileName, + documentData=base64Content, + mimeType=mimeType, + validationMetadata=validationMetadata + ) + self.services.chat.progressLogUpdate(operationId, 0.9, f"Read 1 document(s)") + self.services.chat.progressLogFinish(operationId, True) + return ActionResult.isSuccess(documents=[actionDoc]) + if operationId: self.services.chat.progressLogFinish(operationId, False) return ActionResult.isFailure(error="Unexpected error: could not process documentList or pathQuery") diff --git a/modules/workflows/methods/methodSharepoint/actions/uploadFile.py b/modules/workflows/methods/methodSharepoint/actions/uploadFile.py index 1f469b80..86d5787d 100644 --- a/modules/workflows/methods/methodSharepoint/actions/uploadFile.py +++ b/modules/workflows/methods/methodSharepoint/actions/uploadFile.py @@ -15,51 +15,84 @@ async def uploadFile(self, parameters: Dict[str, Any]) -> ActionResult: if not connectionReference: return ActionResult.isFailure(error="connectionReference parameter is required") - siteIdParam = parameters.get("siteId") - if not siteIdParam: - return ActionResult.isFailure(error="siteId parameter is required") - - folderPath = parameters.get("folderPath") - if not folderPath: - return ActionResult.isFailure(error="folderPath parameter is required") - - fileName = parameters.get("fileName") - if not fileName: - return ActionResult.isFailure(error="fileName parameter is required") - contentParam = parameters.get("content") if not contentParam: return ActionResult.isFailure(error="content parameter is required") - # Extract siteId from document if it's a reference + # Resolve siteId and folderPath: pathQuery (path) or explicit siteId+folderPath + pathQuery = (parameters.get("pathQuery") or parameters.get("path") or "").strip() + siteIdParam = parameters.get("siteId") + folderPath = parameters.get("folderPath") siteId = None - if isinstance(siteIdParam, str): - from modules.datamodels.datamodelDocref import DocumentReferenceList - try: - docList = DocumentReferenceList.from_string_list([siteIdParam]) - chatDocuments = self.services.chat.getChatDocumentsFromDocumentList(docList) - if chatDocuments and len(chatDocuments) > 0: - siteInfoJson = json.loads(chatDocuments[0].documentData) - siteId = siteInfoJson.get("id") - except: - pass - - if not siteId: + + if pathQuery and pathQuery != "*": + # Option 1: pathQuery (e.g. /sites/host,siteId,webId/15. Persoenliche Ordner/Ida Dittrich/) + sites, errorMsg = await self.siteDiscovery.resolveSitesFromPathQuery(pathQuery) + if errorMsg: + return ActionResult.isFailure(error=errorMsg) + if not sites: + return ActionResult.isFailure(error="Could not resolve site from path") + parsedPath = self.services.sharepoint.extractSiteFromStandardPath(pathQuery) + if not parsedPath: + return ActionResult.isFailure(error="path must be a standard SharePoint path (e.g. /sites/SiteName/Shared Documents/Folder)") + innerPath = (parsedPath.get("innerPath") or "").strip().rstrip("/") + siteId = sites[0].get("id") + folderPath = innerPath + elif siteIdParam and folderPath: + # Option 2: explicit siteId + folderPath + if isinstance(siteIdParam, str): + from modules.datamodels.datamodelDocref import DocumentReferenceList + try: + docList = DocumentReferenceList.from_string_list([siteIdParam]) + chatDocuments = self.services.chat.getChatDocumentsFromDocumentList(docList) + if chatDocuments and len(chatDocuments) > 0: + siteInfoJson = json.loads(chatDocuments[0].documentData) + siteId = siteInfoJson.get("id") + except Exception: + pass + if not siteId: + siteId = siteIdParam + else: siteId = siteIdParam else: - siteId = siteIdParam + return ActionResult.isFailure(error="Either path (e.g. /sites/.../Folder) or both siteId and folderPath are required") if not siteId: - return ActionResult.isFailure(error="Could not extract siteId from parameter") + return ActionResult.isFailure(error="Could not resolve siteId") - # Get file content from document - from modules.datamodels.datamodelDocref import DocumentReferenceList - docList = DocumentReferenceList.from_string_list([contentParam] if isinstance(contentParam, str) else contentParam) - chatDocuments = self.services.chat.getChatDocumentsFromDocumentList(docList) - if not chatDocuments or len(chatDocuments) == 0: - return ActionResult.isFailure(error="Could not get file content from document reference") + # fileName: from param or from content document + fileName = parameters.get("fileName") + if not fileName and contentParam: + content = contentParam[0] if isinstance(contentParam, (list, tuple)) and contentParam else contentParam + if isinstance(content, dict): + fileName = content.get("documentName") or content.get("fileName") + elif hasattr(content, "documentName"): + fileName = getattr(content, "documentName", None) or getattr(content, "fileName", None) + if not fileName: + fileName = "file" - fileContentBase64 = chatDocuments[0].documentData + # Get file content: support inline ActionDocument (from automation2 e.g. sharepoint.downloadFile) + # or docItem references (chat workflow) + content = contentParam[0] if isinstance(contentParam, (list, tuple)) and contentParam else contentParam + fileContentBase64 = None + if isinstance(content, dict) and content.get("documentData"): + fileContentBase64 = content.get("documentData") + elif hasattr(content, "documentData") and content.documentData: + fileContentBase64 = content.documentData + elif isinstance(content, dict) and (content.get("validationMetadata") or {}).get("fileId"): + file_id = content["validationMetadata"]["fileId"] + try: + raw = self.services.chat.getFileData(file_id) + fileContentBase64 = base64.b64encode(raw if isinstance(raw, bytes) else str(raw).encode("utf-8")).decode("utf-8") + except Exception as e: + return ActionResult.isFailure(error=f"Could not load file content from fileId {file_id}: {e}") + if not fileContentBase64: + from modules.datamodels.datamodelDocref import DocumentReferenceList + docList = DocumentReferenceList.from_string_list([content] if isinstance(content, str) else content) + chatDocuments = self.services.chat.getChatDocumentsFromDocumentList(docList) + if not chatDocuments or len(chatDocuments) == 0: + return ActionResult.isFailure(error="Could not get file content from document reference") + fileContentBase64 = chatDocuments[0].documentData # Decode base64 try: diff --git a/modules/workflows/methods/methodSharepoint/methodSharepoint.py b/modules/workflows/methods/methodSharepoint/methodSharepoint.py index 6ee07736..0fa0aca8 100644 --- a/modules/workflows/methods/methodSharepoint/methodSharepoint.py +++ b/modules/workflows/methods/methodSharepoint/methodSharepoint.py @@ -274,19 +274,26 @@ class MethodSharepoint(MethodBase): required=True, description="Microsoft connection label" ), + "pathQuery": WorkflowActionParameter( + name="pathQuery", + type="str", + frontendType=FrontendType.TEXT, + required=False, + description="Full SharePoint path (e.g. /sites/SiteName/Shared Documents/file.pdf). When provided, siteId and filePath are derived automatically." + ), "siteId": WorkflowActionParameter( name="siteId", type="str", frontendType=FrontendType.TEXT, - required=True, - description="SharePoint site ID (from findSiteByUrl result) or document reference containing site info" + required=False, + description="SharePoint site ID (optional when pathQuery is provided)" ), "filePath": WorkflowActionParameter( name="filePath", type="str", frontendType=FrontendType.TEXT, - required=True, - description="Full file path relative to site root (e.g., /General/50 Docs hosted by SELISE/file.xlsx)" + required=False, + description="File path relative to site root (optional when pathQuery is provided)" ) }, execute=downloadFileByPath.__get__(self, self.__class__) @@ -303,40 +310,19 @@ class MethodSharepoint(MethodBase): required=True, description="Microsoft connection label" ), - "siteId": WorkflowActionParameter( - name="siteId", + "sourcePath": WorkflowActionParameter( + name="sourcePath", type="str", frontendType=FrontendType.TEXT, required=True, - description="SharePoint site ID (from findSiteByUrl result) or document reference containing site info" + description="Full path to source file (e.g. /sites/.../folder/file.pdf)" ), - "sourceFolder": WorkflowActionParameter( - name="sourceFolder", + "destPath": WorkflowActionParameter( + name="destPath", type="str", frontendType=FrontendType.TEXT, required=True, - description="Source folder path relative to site root" - ), - "sourceFile": WorkflowActionParameter( - name="sourceFile", - type="str", - frontendType=FrontendType.TEXT, - required=True, - description="Source file name" - ), - "destFolder": WorkflowActionParameter( - name="destFolder", - type="str", - frontendType=FrontendType.TEXT, - required=True, - description="Destination folder path relative to site root" - ), - "destFile": WorkflowActionParameter( - name="destFile", - type="str", - frontendType=FrontendType.TEXT, - required=True, - description="Destination file name" + description="Full path to destination folder (e.g. /sites/.../folder)" ) }, execute=copyFile.__get__(self, self.__class__) @@ -353,33 +339,40 @@ class MethodSharepoint(MethodBase): required=True, description="Microsoft connection label" ), + "pathQuery": WorkflowActionParameter( + name="pathQuery", + type="str", + frontendType=FrontendType.TEXT, + required=False, + description="Target folder path (e.g. /sites/.../Folder). When provided, siteId and folderPath are derived. Alternative to explicit siteId+folderPath." + ), "siteId": WorkflowActionParameter( name="siteId", type="str", frontendType=FrontendType.TEXT, - required=True, - description="SharePoint site ID (from findSiteByUrl result) or document reference containing site info" + required=False, + description="SharePoint site ID (when not using pathQuery)" ), "folderPath": WorkflowActionParameter( name="folderPath", type="str", frontendType=FrontendType.TEXT, - required=True, - description="Folder path relative to site root" + required=False, + description="Folder path relative to site root (when not using pathQuery)" ), "fileName": WorkflowActionParameter( name="fileName", type="str", frontendType=FrontendType.TEXT, - required=True, - description="File name" + required=False, + description="File name (defaults to document name when content from context)" ), "content": WorkflowActionParameter( name="content", - type="str", + type="Any", frontendType=FrontendType.DOCUMENT_REFERENCE, required=True, - description="Document reference containing file content as base64-encoded bytes" + description="File content from context (upstream document) or document reference" ) }, execute=uploadFile.__get__(self, self.__class__) diff --git a/modules/workflows/processing/core/actionExecutor.py b/modules/workflows/processing/core/actionExecutor.py index 6b1e3544..92813213 100644 --- a/modules/workflows/processing/core/actionExecutor.py +++ b/modules/workflows/processing/core/actionExecutor.py @@ -69,15 +69,14 @@ class ActionExecutor: logger.info(f"=== TASK {taskNum} ACTION {actionNum}: {action.execMethod}.{action.execAction} ===") - # Log input parameters + # Log input parameters (redact documentData to avoid dumping base64 in logs) inputDocs = action.execParameters.get('documentList', []) inputConnections = action.execParameters.get('connections', []) - logger.info(f"Input documents: {inputDocs} (type: {type(inputDocs)})") + doc_preview = f"{len(inputDocs)} item(s)" if isinstance(inputDocs, (list, tuple)) else str(type(inputDocs)) + logger.info(f"Input documents: {doc_preview} (type: {type(inputDocs).__name__})") if inputConnections: logger.info(f"Input connections: {inputConnections}") - - # Log all action parameters for debugging - logger.info(f"All action parameters: {action.execParameters}") + logger.debug(f"Action parameters keys: {list(action.execParameters.keys())}") enhancedParameters = action.execParameters.copy() if action.expectedDocumentFormats: diff --git a/prompts/20260322-173920-001-chapter_structure_generation_prompt.txt b/prompts/20260322-173920-001-chapter_structure_generation_prompt.txt new file mode 100644 index 00000000..49ba0ee5 --- /dev/null +++ b/prompts/20260322-173920-001-chapter_structure_generation_prompt.txt @@ -0,0 +1,119 @@ +# TASK: Plan Document Structure (Documents + Chapters) + +This is a STRUCTURE PLANNING task. You define which documents to create and which chapters each document will have. +Chapter CONTENT will be generated in a later step - here you only plan the STRUCTURE and assign content references. +Return EXACTLY ONE complete JSON object. Do not generate multiple JSON objects, alternatives, or variations. Do not use separators like "---" between JSON objects. + +## USER REQUEST (for context) +``` +entwirf eine email mit dem inhalt des files davor +``` + +## AVAILABLE CONTENT PARTS + +(No content parts available) + +## CONTENT ASSIGNMENT RULE + +CRITICAL: Every chapter MUST have contentParts assigned if it relates to documents/images/data from the user request. +If the user request mentions documents/images/data, then EVERY chapter that generates content related to those references MUST assign the relevant ContentParts explicitly. + +Assignment logic: +- If chapter DISPLAYS a document/image → assign "object" format ContentPart with "caption" +- If chapter generates text content ABOUT a document/image/data → assign ContentPart with "instruction": + - Prefer "extracted" format if available (contains analyzed/extracted content) + - If only "object" format is available, use "object" format with "instruction" (to write ABOUT the image/document) +- If chapter's generationHint or purpose relates to a document/image/data mentioned in user request → it MUST have ContentParts assigned +- Multiple chapters might assign the same ContentPart (e.g., one chapter displays image, another writes about it) +- Use ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above +- Empty contentParts are only allowed if chapter generates content WITHOUT referencing any documents/images/data from the user request + +CRITICAL RULE: If the user request mentions BOTH: + a) Documents/images/data (listed in AVAILABLE CONTENT PARTS above), AND + b) Generic content types (article text, main content, body text, etc.) +Then chapters that generate those generic content types MUST assign the relevant ContentParts, because the content should relate to or be based on the provided documents/images/data. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential information only +- AVOID verbose, lengthy, or repetitive text - be concise and direct +- Prioritize FACTS over filler text - no introductions like "In this chapter..." +- Minimize system resources: shorter content = faster processing +- Quality over quantity: precise, meaningful content rather than padding + +## CHAPTER STRUCTURE REQUIREMENTS +- Generate chapters based on USER REQUEST - analyze what structure the user wants +- Create ONLY the minimum chapters needed to cover the user's request - avoid over-structuring +- HARD LIMIT: Maximum 7 chapters per document. If the topic can be covered in fewer, prefer fewer. Combine related topics into single chapters rather than creating many small ones. +- IMPORTANT: Each chapter MUST have ALL these fields: + - id: Unique identifier (e.g., "chapter_1") + - level: Heading level (1, 2, 3, etc.) + - title: Chapter title + - contentParts: Object mapping ContentPart IDs to usage instructions (MUST assign if chapter relates to documents/data from user request) + - generationHint: Description of what content to generate (including formatting/styling requirements) + - sections: Empty array [] (REQUIRED - sections are generated in next phase) +- contentParts: {"partId": {"instruction": "..."} or {"caption": "..."} or both} - Assign ContentParts as required by CONTENT ASSIGNMENT RULE above +- The "instruction" field for each ContentPart MUST contain ALL relevant details from the USER REQUEST that apply to content extraction for this specific chapter. Include all formatting rules, data requirements, constraints, and specifications mentioned in the user request that are relevant for processing this ContentPart in this chapter. +- generationHint: Keep CONCISE but include relevant details from the USER REQUEST. Focus on WHAT to generate, not HOW to phrase it verbosely. +- The number of chapters depends on the user request - create only what is requested. Do NOT create chapters for topics without available data. + +CRITICAL: Only create chapters for CONTENT sections, not for formatting/styling requirements. Formatting/styling requirements to be included in each generationHint if needed. + +## DOCUMENT STRUCTURE + +For each document, determine: +- outputFormat: From USER REQUEST (explicit mention or infer from purpose/content type). Default: "txt". Multiple documents can have different formats. +- language: From USER REQUEST (map to ISO 639-1: de, en, fr, it...). Default: "de". Multiple documents can have different languages. +- chapters: Structure appropriately for the format (e.g., pptx=slides, docx=sections, xlsx=worksheets). Match format capabilities and constraints. + +Required JSON fields: +- metadata: {"title": "...", "language": "..."} +- documents: Array with id, title, filename, outputFormat, language, chapters[] +- chapters: Array with id, level, title, contentParts, generationHint, sections[] + +EXAMPLE STRUCTURE (for reference only - adapt to user request): +{ + "metadata": { + "title": "Document Title", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "Document Title", + "filename": "document.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Chapter Title", + "contentParts": { + "extracted_part_id": { + "instruction": "Use extracted content with ALL relevant details from user request" + } + }, + "generationHint": "Detailed description including ALL relevant details from user request for this chapter", + "sections": [] + } + ] + }] +} + +CRITICAL INSTRUCTIONS: +- Generate chapters based on USER REQUEST, NOT based on the example above +- The example shows the JSON structure format, NOT the required chapters +- Create only the chapters that match the user's request +- Adapt chapter titles and structure to match the user's specific request +- Determine outputFormat and language for each document by analyzing the USER REQUEST above +- The example shows placeholders "txt" and "de" - YOU MUST REPLACE THESE with actual values determined from the USER REQUEST + +MANDATORY CONTENT ASSIGNMENT CHECK: +For each chapter, verify: +1. Does the user request mention documents/images/data? (e.g., "photo", "image", "document", "data", "based on", "about") +2. Does this chapter's generationHint, title, or purpose relate to those documents/images/data mentioned in step 1? + - Examples: "article about the photo", "text describing the image", "analysis of the document", "content based on the data" + - Even if chapter doesn't explicitly say "about the image", if user request mentions both the image AND this chapter's content type → relate them +3. If YES to both → chapter MUST have contentParts assigned (cannot be empty {}) +4. If ContentPart is "object" format and chapter needs to write ABOUT it → assign with "instruction" field, not just "caption" + +OUTPUT FORMAT: Start with { and end with }. Do NOT use markdown code fences (```json). Do NOT add explanatory text before or after the JSON. Return ONLY the JSON object itself. diff --git a/prompts/20260322-173923-002-chapter_structure_generation_response.txt b/prompts/20260322-173923-002-chapter_structure_generation_response.txt new file mode 100644 index 00000000..47b68325 --- /dev/null +++ b/prompts/20260322-173923-002-chapter_structure_generation_response.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Erstellen Sie eine kurze Einleitung für die E-Mail, die den Zweck der Nachricht erklärt.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptteil", + "contentParts": {}, + "generationHint": "Formulieren Sie den Hauptinhalt der E-Mail basierend auf den Informationen, die im vorherigen Dokument enthalten waren.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schluss", + "contentParts": {}, + "generationHint": "Schreiben Sie einen abschließenden Absatz, der die E-Mail höflich beendet und eventuell weitere Schritte oder Erwartungen erwähnt.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-173923-003-chapter_structure_generation_final_result.txt b/prompts/20260322-173923-003-chapter_structure_generation_final_result.txt new file mode 100644 index 00000000..47b68325 --- /dev/null +++ b/prompts/20260322-173923-003-chapter_structure_generation_final_result.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Erstellen Sie eine kurze Einleitung für die E-Mail, die den Zweck der Nachricht erklärt.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptteil", + "contentParts": {}, + "generationHint": "Formulieren Sie den Hauptinhalt der E-Mail basierend auf den Informationen, die im vorherigen Dokument enthalten waren.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schluss", + "contentParts": {}, + "generationHint": "Schreiben Sie einen abschließenden Absatz, der die E-Mail höflich beendet und eventuell weitere Schritte oder Erwartungen erwähnt.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-173936-004-chapter_structure_generation_prompt.txt b/prompts/20260322-173936-004-chapter_structure_generation_prompt.txt new file mode 100644 index 00000000..49ba0ee5 --- /dev/null +++ b/prompts/20260322-173936-004-chapter_structure_generation_prompt.txt @@ -0,0 +1,119 @@ +# TASK: Plan Document Structure (Documents + Chapters) + +This is a STRUCTURE PLANNING task. You define which documents to create and which chapters each document will have. +Chapter CONTENT will be generated in a later step - here you only plan the STRUCTURE and assign content references. +Return EXACTLY ONE complete JSON object. Do not generate multiple JSON objects, alternatives, or variations. Do not use separators like "---" between JSON objects. + +## USER REQUEST (for context) +``` +entwirf eine email mit dem inhalt des files davor +``` + +## AVAILABLE CONTENT PARTS + +(No content parts available) + +## CONTENT ASSIGNMENT RULE + +CRITICAL: Every chapter MUST have contentParts assigned if it relates to documents/images/data from the user request. +If the user request mentions documents/images/data, then EVERY chapter that generates content related to those references MUST assign the relevant ContentParts explicitly. + +Assignment logic: +- If chapter DISPLAYS a document/image → assign "object" format ContentPart with "caption" +- If chapter generates text content ABOUT a document/image/data → assign ContentPart with "instruction": + - Prefer "extracted" format if available (contains analyzed/extracted content) + - If only "object" format is available, use "object" format with "instruction" (to write ABOUT the image/document) +- If chapter's generationHint or purpose relates to a document/image/data mentioned in user request → it MUST have ContentParts assigned +- Multiple chapters might assign the same ContentPart (e.g., one chapter displays image, another writes about it) +- Use ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above +- Empty contentParts are only allowed if chapter generates content WITHOUT referencing any documents/images/data from the user request + +CRITICAL RULE: If the user request mentions BOTH: + a) Documents/images/data (listed in AVAILABLE CONTENT PARTS above), AND + b) Generic content types (article text, main content, body text, etc.) +Then chapters that generate those generic content types MUST assign the relevant ContentParts, because the content should relate to or be based on the provided documents/images/data. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential information only +- AVOID verbose, lengthy, or repetitive text - be concise and direct +- Prioritize FACTS over filler text - no introductions like "In this chapter..." +- Minimize system resources: shorter content = faster processing +- Quality over quantity: precise, meaningful content rather than padding + +## CHAPTER STRUCTURE REQUIREMENTS +- Generate chapters based on USER REQUEST - analyze what structure the user wants +- Create ONLY the minimum chapters needed to cover the user's request - avoid over-structuring +- HARD LIMIT: Maximum 7 chapters per document. If the topic can be covered in fewer, prefer fewer. Combine related topics into single chapters rather than creating many small ones. +- IMPORTANT: Each chapter MUST have ALL these fields: + - id: Unique identifier (e.g., "chapter_1") + - level: Heading level (1, 2, 3, etc.) + - title: Chapter title + - contentParts: Object mapping ContentPart IDs to usage instructions (MUST assign if chapter relates to documents/data from user request) + - generationHint: Description of what content to generate (including formatting/styling requirements) + - sections: Empty array [] (REQUIRED - sections are generated in next phase) +- contentParts: {"partId": {"instruction": "..."} or {"caption": "..."} or both} - Assign ContentParts as required by CONTENT ASSIGNMENT RULE above +- The "instruction" field for each ContentPart MUST contain ALL relevant details from the USER REQUEST that apply to content extraction for this specific chapter. Include all formatting rules, data requirements, constraints, and specifications mentioned in the user request that are relevant for processing this ContentPart in this chapter. +- generationHint: Keep CONCISE but include relevant details from the USER REQUEST. Focus on WHAT to generate, not HOW to phrase it verbosely. +- The number of chapters depends on the user request - create only what is requested. Do NOT create chapters for topics without available data. + +CRITICAL: Only create chapters for CONTENT sections, not for formatting/styling requirements. Formatting/styling requirements to be included in each generationHint if needed. + +## DOCUMENT STRUCTURE + +For each document, determine: +- outputFormat: From USER REQUEST (explicit mention or infer from purpose/content type). Default: "txt". Multiple documents can have different formats. +- language: From USER REQUEST (map to ISO 639-1: de, en, fr, it...). Default: "de". Multiple documents can have different languages. +- chapters: Structure appropriately for the format (e.g., pptx=slides, docx=sections, xlsx=worksheets). Match format capabilities and constraints. + +Required JSON fields: +- metadata: {"title": "...", "language": "..."} +- documents: Array with id, title, filename, outputFormat, language, chapters[] +- chapters: Array with id, level, title, contentParts, generationHint, sections[] + +EXAMPLE STRUCTURE (for reference only - adapt to user request): +{ + "metadata": { + "title": "Document Title", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "Document Title", + "filename": "document.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Chapter Title", + "contentParts": { + "extracted_part_id": { + "instruction": "Use extracted content with ALL relevant details from user request" + } + }, + "generationHint": "Detailed description including ALL relevant details from user request for this chapter", + "sections": [] + } + ] + }] +} + +CRITICAL INSTRUCTIONS: +- Generate chapters based on USER REQUEST, NOT based on the example above +- The example shows the JSON structure format, NOT the required chapters +- Create only the chapters that match the user's request +- Adapt chapter titles and structure to match the user's specific request +- Determine outputFormat and language for each document by analyzing the USER REQUEST above +- The example shows placeholders "txt" and "de" - YOU MUST REPLACE THESE with actual values determined from the USER REQUEST + +MANDATORY CONTENT ASSIGNMENT CHECK: +For each chapter, verify: +1. Does the user request mention documents/images/data? (e.g., "photo", "image", "document", "data", "based on", "about") +2. Does this chapter's generationHint, title, or purpose relate to those documents/images/data mentioned in step 1? + - Examples: "article about the photo", "text describing the image", "analysis of the document", "content based on the data" + - Even if chapter doesn't explicitly say "about the image", if user request mentions both the image AND this chapter's content type → relate them +3. If YES to both → chapter MUST have contentParts assigned (cannot be empty {}) +4. If ContentPart is "object" format and chapter needs to write ABOUT it → assign with "instruction" field, not just "caption" + +OUTPUT FORMAT: Start with { and end with }. Do NOT use markdown code fences (```json). Do NOT add explanatory text before or after the JSON. Return ONLY the JSON object itself. diff --git a/prompts/20260322-173939-005-chapter_structure_generation_response.txt b/prompts/20260322-173939-005-chapter_structure_generation_response.txt new file mode 100644 index 00000000..e7137c2a --- /dev/null +++ b/prompts/20260322-173939-005-chapter_structure_generation_response.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Erstellen Sie eine Einleitung für die E-Mail, die den Zweck und den Kontext der Nachricht kurz beschreibt.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Formulieren Sie den Hauptinhalt der E-Mail, der die wesentlichen Informationen oder Anfragen enthält.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Abschluss", + "contentParts": {}, + "generationHint": "Fügen Sie einen Abschluss hinzu, der die E-Mail höflich beendet und eventuell weitere Schritte oder Erwartungen erwähnt.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-173939-006-chapter_structure_generation_final_result.txt b/prompts/20260322-173939-006-chapter_structure_generation_final_result.txt new file mode 100644 index 00000000..e7137c2a --- /dev/null +++ b/prompts/20260322-173939-006-chapter_structure_generation_final_result.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Erstellen Sie eine Einleitung für die E-Mail, die den Zweck und den Kontext der Nachricht kurz beschreibt.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Formulieren Sie den Hauptinhalt der E-Mail, der die wesentlichen Informationen oder Anfragen enthält.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Abschluss", + "contentParts": {}, + "generationHint": "Fügen Sie einen Abschluss hinzu, der die E-Mail höflich beendet und eventuell weitere Schritte oder Erwartungen erwähnt.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174008-007-chapter_structure_generation_prompt.txt b/prompts/20260322-174008-007-chapter_structure_generation_prompt.txt new file mode 100644 index 00000000..49ba0ee5 --- /dev/null +++ b/prompts/20260322-174008-007-chapter_structure_generation_prompt.txt @@ -0,0 +1,119 @@ +# TASK: Plan Document Structure (Documents + Chapters) + +This is a STRUCTURE PLANNING task. You define which documents to create and which chapters each document will have. +Chapter CONTENT will be generated in a later step - here you only plan the STRUCTURE and assign content references. +Return EXACTLY ONE complete JSON object. Do not generate multiple JSON objects, alternatives, or variations. Do not use separators like "---" between JSON objects. + +## USER REQUEST (for context) +``` +entwirf eine email mit dem inhalt des files davor +``` + +## AVAILABLE CONTENT PARTS + +(No content parts available) + +## CONTENT ASSIGNMENT RULE + +CRITICAL: Every chapter MUST have contentParts assigned if it relates to documents/images/data from the user request. +If the user request mentions documents/images/data, then EVERY chapter that generates content related to those references MUST assign the relevant ContentParts explicitly. + +Assignment logic: +- If chapter DISPLAYS a document/image → assign "object" format ContentPart with "caption" +- If chapter generates text content ABOUT a document/image/data → assign ContentPart with "instruction": + - Prefer "extracted" format if available (contains analyzed/extracted content) + - If only "object" format is available, use "object" format with "instruction" (to write ABOUT the image/document) +- If chapter's generationHint or purpose relates to a document/image/data mentioned in user request → it MUST have ContentParts assigned +- Multiple chapters might assign the same ContentPart (e.g., one chapter displays image, another writes about it) +- Use ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above +- Empty contentParts are only allowed if chapter generates content WITHOUT referencing any documents/images/data from the user request + +CRITICAL RULE: If the user request mentions BOTH: + a) Documents/images/data (listed in AVAILABLE CONTENT PARTS above), AND + b) Generic content types (article text, main content, body text, etc.) +Then chapters that generate those generic content types MUST assign the relevant ContentParts, because the content should relate to or be based on the provided documents/images/data. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential information only +- AVOID verbose, lengthy, or repetitive text - be concise and direct +- Prioritize FACTS over filler text - no introductions like "In this chapter..." +- Minimize system resources: shorter content = faster processing +- Quality over quantity: precise, meaningful content rather than padding + +## CHAPTER STRUCTURE REQUIREMENTS +- Generate chapters based on USER REQUEST - analyze what structure the user wants +- Create ONLY the minimum chapters needed to cover the user's request - avoid over-structuring +- HARD LIMIT: Maximum 7 chapters per document. If the topic can be covered in fewer, prefer fewer. Combine related topics into single chapters rather than creating many small ones. +- IMPORTANT: Each chapter MUST have ALL these fields: + - id: Unique identifier (e.g., "chapter_1") + - level: Heading level (1, 2, 3, etc.) + - title: Chapter title + - contentParts: Object mapping ContentPart IDs to usage instructions (MUST assign if chapter relates to documents/data from user request) + - generationHint: Description of what content to generate (including formatting/styling requirements) + - sections: Empty array [] (REQUIRED - sections are generated in next phase) +- contentParts: {"partId": {"instruction": "..."} or {"caption": "..."} or both} - Assign ContentParts as required by CONTENT ASSIGNMENT RULE above +- The "instruction" field for each ContentPart MUST contain ALL relevant details from the USER REQUEST that apply to content extraction for this specific chapter. Include all formatting rules, data requirements, constraints, and specifications mentioned in the user request that are relevant for processing this ContentPart in this chapter. +- generationHint: Keep CONCISE but include relevant details from the USER REQUEST. Focus on WHAT to generate, not HOW to phrase it verbosely. +- The number of chapters depends on the user request - create only what is requested. Do NOT create chapters for topics without available data. + +CRITICAL: Only create chapters for CONTENT sections, not for formatting/styling requirements. Formatting/styling requirements to be included in each generationHint if needed. + +## DOCUMENT STRUCTURE + +For each document, determine: +- outputFormat: From USER REQUEST (explicit mention or infer from purpose/content type). Default: "txt". Multiple documents can have different formats. +- language: From USER REQUEST (map to ISO 639-1: de, en, fr, it...). Default: "de". Multiple documents can have different languages. +- chapters: Structure appropriately for the format (e.g., pptx=slides, docx=sections, xlsx=worksheets). Match format capabilities and constraints. + +Required JSON fields: +- metadata: {"title": "...", "language": "..."} +- documents: Array with id, title, filename, outputFormat, language, chapters[] +- chapters: Array with id, level, title, contentParts, generationHint, sections[] + +EXAMPLE STRUCTURE (for reference only - adapt to user request): +{ + "metadata": { + "title": "Document Title", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "Document Title", + "filename": "document.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Chapter Title", + "contentParts": { + "extracted_part_id": { + "instruction": "Use extracted content with ALL relevant details from user request" + } + }, + "generationHint": "Detailed description including ALL relevant details from user request for this chapter", + "sections": [] + } + ] + }] +} + +CRITICAL INSTRUCTIONS: +- Generate chapters based on USER REQUEST, NOT based on the example above +- The example shows the JSON structure format, NOT the required chapters +- Create only the chapters that match the user's request +- Adapt chapter titles and structure to match the user's specific request +- Determine outputFormat and language for each document by analyzing the USER REQUEST above +- The example shows placeholders "txt" and "de" - YOU MUST REPLACE THESE with actual values determined from the USER REQUEST + +MANDATORY CONTENT ASSIGNMENT CHECK: +For each chapter, verify: +1. Does the user request mention documents/images/data? (e.g., "photo", "image", "document", "data", "based on", "about") +2. Does this chapter's generationHint, title, or purpose relate to those documents/images/data mentioned in step 1? + - Examples: "article about the photo", "text describing the image", "analysis of the document", "content based on the data" + - Even if chapter doesn't explicitly say "about the image", if user request mentions both the image AND this chapter's content type → relate them +3. If YES to both → chapter MUST have contentParts assigned (cannot be empty {}) +4. If ContentPart is "object" format and chapter needs to write ABOUT it → assign with "instruction" field, not just "caption" + +OUTPUT FORMAT: Start with { and end with }. Do NOT use markdown code fences (```json). Do NOT add explanatory text before or after the JSON. Return ONLY the JSON object itself. diff --git a/prompts/20260322-174011-008-chapter_structure_generation_response.txt b/prompts/20260322-174011-008-chapter_structure_generation_response.txt new file mode 100644 index 00000000..a3816fca --- /dev/null +++ b/prompts/20260322-174011-008-chapter_structure_generation_response.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail, Begrüßung und Einführung in das Thema.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptteil", + "contentParts": {}, + "generationHint": "Hauptinhalt der E-Mail, Details und relevante Informationen.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schluss", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail, Zusammenfassung und Grußformel.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174011-009-chapter_structure_generation_final_result.txt b/prompts/20260322-174011-009-chapter_structure_generation_final_result.txt new file mode 100644 index 00000000..a3816fca --- /dev/null +++ b/prompts/20260322-174011-009-chapter_structure_generation_final_result.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail, Begrüßung und Einführung in das Thema.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptteil", + "contentParts": {}, + "generationHint": "Hauptinhalt der E-Mail, Details und relevante Informationen.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schluss", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail, Zusammenfassung und Grußformel.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174149-010-chapter_structure_generation_prompt.txt b/prompts/20260322-174149-010-chapter_structure_generation_prompt.txt new file mode 100644 index 00000000..49ba0ee5 --- /dev/null +++ b/prompts/20260322-174149-010-chapter_structure_generation_prompt.txt @@ -0,0 +1,119 @@ +# TASK: Plan Document Structure (Documents + Chapters) + +This is a STRUCTURE PLANNING task. You define which documents to create and which chapters each document will have. +Chapter CONTENT will be generated in a later step - here you only plan the STRUCTURE and assign content references. +Return EXACTLY ONE complete JSON object. Do not generate multiple JSON objects, alternatives, or variations. Do not use separators like "---" between JSON objects. + +## USER REQUEST (for context) +``` +entwirf eine email mit dem inhalt des files davor +``` + +## AVAILABLE CONTENT PARTS + +(No content parts available) + +## CONTENT ASSIGNMENT RULE + +CRITICAL: Every chapter MUST have contentParts assigned if it relates to documents/images/data from the user request. +If the user request mentions documents/images/data, then EVERY chapter that generates content related to those references MUST assign the relevant ContentParts explicitly. + +Assignment logic: +- If chapter DISPLAYS a document/image → assign "object" format ContentPart with "caption" +- If chapter generates text content ABOUT a document/image/data → assign ContentPart with "instruction": + - Prefer "extracted" format if available (contains analyzed/extracted content) + - If only "object" format is available, use "object" format with "instruction" (to write ABOUT the image/document) +- If chapter's generationHint or purpose relates to a document/image/data mentioned in user request → it MUST have ContentParts assigned +- Multiple chapters might assign the same ContentPart (e.g., one chapter displays image, another writes about it) +- Use ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above +- Empty contentParts are only allowed if chapter generates content WITHOUT referencing any documents/images/data from the user request + +CRITICAL RULE: If the user request mentions BOTH: + a) Documents/images/data (listed in AVAILABLE CONTENT PARTS above), AND + b) Generic content types (article text, main content, body text, etc.) +Then chapters that generate those generic content types MUST assign the relevant ContentParts, because the content should relate to or be based on the provided documents/images/data. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential information only +- AVOID verbose, lengthy, or repetitive text - be concise and direct +- Prioritize FACTS over filler text - no introductions like "In this chapter..." +- Minimize system resources: shorter content = faster processing +- Quality over quantity: precise, meaningful content rather than padding + +## CHAPTER STRUCTURE REQUIREMENTS +- Generate chapters based on USER REQUEST - analyze what structure the user wants +- Create ONLY the minimum chapters needed to cover the user's request - avoid over-structuring +- HARD LIMIT: Maximum 7 chapters per document. If the topic can be covered in fewer, prefer fewer. Combine related topics into single chapters rather than creating many small ones. +- IMPORTANT: Each chapter MUST have ALL these fields: + - id: Unique identifier (e.g., "chapter_1") + - level: Heading level (1, 2, 3, etc.) + - title: Chapter title + - contentParts: Object mapping ContentPart IDs to usage instructions (MUST assign if chapter relates to documents/data from user request) + - generationHint: Description of what content to generate (including formatting/styling requirements) + - sections: Empty array [] (REQUIRED - sections are generated in next phase) +- contentParts: {"partId": {"instruction": "..."} or {"caption": "..."} or both} - Assign ContentParts as required by CONTENT ASSIGNMENT RULE above +- The "instruction" field for each ContentPart MUST contain ALL relevant details from the USER REQUEST that apply to content extraction for this specific chapter. Include all formatting rules, data requirements, constraints, and specifications mentioned in the user request that are relevant for processing this ContentPart in this chapter. +- generationHint: Keep CONCISE but include relevant details from the USER REQUEST. Focus on WHAT to generate, not HOW to phrase it verbosely. +- The number of chapters depends on the user request - create only what is requested. Do NOT create chapters for topics without available data. + +CRITICAL: Only create chapters for CONTENT sections, not for formatting/styling requirements. Formatting/styling requirements to be included in each generationHint if needed. + +## DOCUMENT STRUCTURE + +For each document, determine: +- outputFormat: From USER REQUEST (explicit mention or infer from purpose/content type). Default: "txt". Multiple documents can have different formats. +- language: From USER REQUEST (map to ISO 639-1: de, en, fr, it...). Default: "de". Multiple documents can have different languages. +- chapters: Structure appropriately for the format (e.g., pptx=slides, docx=sections, xlsx=worksheets). Match format capabilities and constraints. + +Required JSON fields: +- metadata: {"title": "...", "language": "..."} +- documents: Array with id, title, filename, outputFormat, language, chapters[] +- chapters: Array with id, level, title, contentParts, generationHint, sections[] + +EXAMPLE STRUCTURE (for reference only - adapt to user request): +{ + "metadata": { + "title": "Document Title", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "Document Title", + "filename": "document.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Chapter Title", + "contentParts": { + "extracted_part_id": { + "instruction": "Use extracted content with ALL relevant details from user request" + } + }, + "generationHint": "Detailed description including ALL relevant details from user request for this chapter", + "sections": [] + } + ] + }] +} + +CRITICAL INSTRUCTIONS: +- Generate chapters based on USER REQUEST, NOT based on the example above +- The example shows the JSON structure format, NOT the required chapters +- Create only the chapters that match the user's request +- Adapt chapter titles and structure to match the user's specific request +- Determine outputFormat and language for each document by analyzing the USER REQUEST above +- The example shows placeholders "txt" and "de" - YOU MUST REPLACE THESE with actual values determined from the USER REQUEST + +MANDATORY CONTENT ASSIGNMENT CHECK: +For each chapter, verify: +1. Does the user request mention documents/images/data? (e.g., "photo", "image", "document", "data", "based on", "about") +2. Does this chapter's generationHint, title, or purpose relate to those documents/images/data mentioned in step 1? + - Examples: "article about the photo", "text describing the image", "analysis of the document", "content based on the data" + - Even if chapter doesn't explicitly say "about the image", if user request mentions both the image AND this chapter's content type → relate them +3. If YES to both → chapter MUST have contentParts assigned (cannot be empty {}) +4. If ContentPart is "object" format and chapter needs to write ABOUT it → assign with "instruction" field, not just "caption" + +OUTPUT FORMAT: Start with { and end with }. Do NOT use markdown code fences (```json). Do NOT add explanatory text before or after the JSON. Return ONLY the JSON object itself. diff --git a/prompts/20260322-174152-011-chapter_structure_generation_response.txt b/prompts/20260322-174152-011-chapter_structure_generation_response.txt new file mode 100644 index 00000000..11b0b15b --- /dev/null +++ b/prompts/20260322-174152-011-chapter_structure_generation_response.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail, die den Zweck und den Kontext der Nachricht kurz beschreibt.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Hauptteil der E-Mail, der die wichtigsten Informationen und Details enthält.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Abschluss", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung oder einem abschließenden Gedanken.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174152-012-chapter_structure_generation_final_result.txt b/prompts/20260322-174152-012-chapter_structure_generation_final_result.txt new file mode 100644 index 00000000..11b0b15b --- /dev/null +++ b/prompts/20260322-174152-012-chapter_structure_generation_final_result.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail, die den Zweck und den Kontext der Nachricht kurz beschreibt.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Hauptteil der E-Mail, der die wichtigsten Informationen und Details enthält.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Abschluss", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung oder einem abschließenden Gedanken.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174152-013-chapter_structure_chapter_1_prompt.txt b/prompts/20260322-174152-013-chapter_structure_chapter_1_prompt.txt new file mode 100644 index 00000000..6d4a119b --- /dev/null +++ b/prompts/20260322-174152-013-chapter_structure_chapter_1_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Einleitung (Level 1, ID: chapter_1) +GENERATION HINT: Einleitung der E-Mail, die den Zweck und den Kontext der Nachricht kurz beschreibt. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-174153-014-chapter_structure_chapter_2_prompt.txt b/prompts/20260322-174153-014-chapter_structure_chapter_2_prompt.txt new file mode 100644 index 00000000..23e8978b --- /dev/null +++ b/prompts/20260322-174153-014-chapter_structure_chapter_2_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Hauptinhalt (Level 1, ID: chapter_2) +GENERATION HINT: Hauptteil der E-Mail, der die wichtigsten Informationen und Details enthält. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-174153-015-chapter_structure_chapter_3_prompt.txt b/prompts/20260322-174153-015-chapter_structure_chapter_3_prompt.txt new file mode 100644 index 00000000..f11981bb --- /dev/null +++ b/prompts/20260322-174153-015-chapter_structure_chapter_3_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Abschluss (Level 1, ID: chapter_3) +GENERATION HINT: Abschluss der E-Mail mit einer Zusammenfassung oder einem abschließenden Gedanken. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-174155-016-chapter_structure_chapter_3_response.txt b/prompts/20260322-174155-016-chapter_structure_chapter_3_response.txt new file mode 100644 index 00000000..84918b1f --- /dev/null +++ b/prompts/20260322-174155-016-chapter_structure_chapter_3_response.txt @@ -0,0 +1,16 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung der E-Mail-Inhalte und abschließende Gedanken", + "useAiCall": true, + "elements": [ + "In der abschließenden Zusammenfassung der E-Mail möchten wir die wichtigsten Punkte noch einmal hervorheben. Es ist entscheidend, dass alle besprochenen Themen klar und prägnant zusammengefasst werden, um Missverständnisse zu vermeiden. Abschließend möchten wir betonen, wie wichtig die Zusammenarbeit und der kontinuierliche Dialog sind, um die gesteckten Ziele erfolgreich zu erreichen. Wir danken Ihnen für Ihre Aufmerksamkeit und freuen uns auf die weitere Zusammenarbeit." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-174157-017-chapter_structure_chapter_1_response.txt b/prompts/20260322-174157-017-chapter_structure_chapter_1_response.txt new file mode 100644 index 00000000..9676ecae --- /dev/null +++ b/prompts/20260322-174157-017-chapter_structure_chapter_1_response.txt @@ -0,0 +1,39 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Kurze Einführung in den Zweck der E-Mail", + "useAiCall": true, + "elements": [ + "Diese E-Mail dient dazu, den Empfänger über den Zweck und den Kontext der Nachricht zu informieren. Sie bietet eine kurze Übersicht über die Hauptthemen, die in den folgenden Abschnitten behandelt werden." + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Kontext der Nachricht und warum sie wichtig ist", + "useAiCall": true, + "elements": [ + "Der Kontext dieser Nachricht ist entscheidend, um die Relevanz und Dringlichkeit der behandelten Themen zu verstehen. Es wird erläutert, warum diese Informationen für den Empfänger von Bedeutung sind und welche Schritte möglicherweise erforderlich sind." + ] + }, + { + "id": "section_3", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Hauptpunkte der Nachricht", + "useAiCall": true, + "elements": [ + "Zweck der E-Mail", + "Wichtige Informationen und Updates", + "Erforderliche Aktionen oder Antworten", + "Relevante Fristen oder Termine" + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-174201-018-chapter_structure_chapter_2_response.txt b/prompts/20260322-174201-018-chapter_structure_chapter_2_response.txt new file mode 100644 index 00000000..f3c9e111 --- /dev/null +++ b/prompts/20260322-174201-018-chapter_structure_chapter_2_response.txt @@ -0,0 +1,66 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung des Hauptinhalts mit einer kurzen Zusammenfassung der wichtigsten Punkte.", + "useAiCall": true, + "elements": [ + "Der Hauptinhalt dieser E-Mail bietet eine umfassende Übersicht über die wesentlichen Informationen, die für den Empfänger von Bedeutung sind. In den folgenden Abschnitten werden die wichtigsten Details und Anweisungen klar und prägnant dargestellt." + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Liste der wichtigsten Informationen oder Anweisungen.", + "useAiCall": true, + "elements": [ + "Wichtiger Termin: 15. November 2023", + "Erforderliche Dokumente: Reisepass, Visum", + "Kontaktperson: Herr Müller, erreichbar unter mueller@example.com", + "Nächste Schritte: Anmeldung bis zum 10. November 2023" + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Beschreibung eines spezifischen Themas oder einer Anweisung.", + "useAiCall": true, + "elements": [ + "Bitte beachten Sie, dass alle Teilnehmer vor dem 10. November 2023 registriert sein müssen, um an der Veranstaltung teilnehmen zu können. Die Registrierung erfolgt über das Online-Portal, das Ihnen per E-Mail zugesandt wurde. Stellen Sie sicher, dass alle erforderlichen Dokumente hochgeladen werden, um Verzögerungen zu vermeiden." + ] + }, + { + "id": "section_4", + "content_type": "table", + "contentPartIds": [], + "generationHint": "Tabelle mit den wichtigsten Terminen und Fristen.", + "useAiCall": true, + "elements": [ + { + "headers": ["Ereignis", "Datum", "Details"], + "rows": [ + ["Anmeldeschluss", "10. November 2023", "Online-Registrierung erforderlich"], + ["Veranstaltungstermin", "15. November 2023", "Beginn um 9:00 Uhr"], + ["Dokumenteneinreichung", "Bis 12. November 2023", "Alle Dokumente müssen vollständig sein"] + ] + } + ] + }, + { + "id": "section_5", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschluss des Hauptinhalts mit einem Aufruf zum Handeln oder einer abschließenden Bemerkung.", + "useAiCall": true, + "elements": [ + "Wir freuen uns auf Ihre Teilnahme und stehen für Rückfragen jederzeit zur Verfügung. Bitte zögern Sie nicht, uns zu kontaktieren, falls Sie weitere Informationen benötigen. Ihre rechtzeitige Anmeldung wird sehr geschätzt." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-174201-019-chapter_1_section_section_1_prompt.txt b/prompts/20260322-174201-019-chapter_1_section_section_1_prompt.txt new file mode 100644 index 00000000..0c0117f1 --- /dev/null +++ b/prompts/20260322-174201-019-chapter_1_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Kurze Einführung in den Zweck der E-Mail +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (paragraph): +- section_3 (bullet_list): + diff --git a/prompts/20260322-174201-020-chapter_1_section_section_2_prompt.txt b/prompts/20260322-174201-020-chapter_1_section_section_2_prompt.txt new file mode 100644 index 00000000..f9b48541 --- /dev/null +++ b/prompts/20260322-174201-020-chapter_1_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: paragraph +- Generation Hint: Kontext der Nachricht und warum sie wichtig ist +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_3 (bullet_list): +- section_1 (paragraph): + diff --git a/prompts/20260322-174201-021-chapter_1_section_section_3_prompt.txt b/prompts/20260322-174201-021-chapter_1_section_section_3_prompt.txt new file mode 100644 index 00000000..92781040 --- /dev/null +++ b/prompts/20260322-174201-021-chapter_1_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: bullet_list +- Generation Hint: Hauptpunkte der Nachricht +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_2 (paragraph): + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-174201-022-chapter_2_section_section_1_prompt.txt b/prompts/20260322-174201-022-chapter_2_section_section_1_prompt.txt new file mode 100644 index 00000000..2797be86 --- /dev/null +++ b/prompts/20260322-174201-022-chapter_2_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einleitung des Hauptinhalts mit einer kurzen Zusammenfassung der wichtigsten Punkte. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (paragraph): +- section_3 (bullet_list): + diff --git a/prompts/20260322-174202-023-chapter_2_section_section_2_prompt.txt b/prompts/20260322-174202-023-chapter_2_section_section_2_prompt.txt new file mode 100644 index 00000000..e6d66ec5 --- /dev/null +++ b/prompts/20260322-174202-023-chapter_2_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: bullet_list +- Generation Hint: Liste der wichtigsten Informationen oder Anweisungen. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_3 (bullet_list): +- section_1 (paragraph): + diff --git a/prompts/20260322-174203-024-chapter_1_section_section_1_response.txt b/prompts/20260322-174203-024-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..bf0b95b7 --- /dev/null +++ b/prompts/20260322-174203-024-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, den Zweck und die wichtigsten Informationen des vorherigen Dokuments zusammenzufassen. Sie bietet eine kurze Übersicht über die Hauptpunkte und soll als Einführung in die detaillierteren Abschnitte des Dokuments dienen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174203-025-chapter_1_section_section_1_response.txt b/prompts/20260322-174203-025-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..bf0b95b7 --- /dev/null +++ b/prompts/20260322-174203-025-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, den Zweck und die wichtigsten Informationen des vorherigen Dokuments zusammenzufassen. Sie bietet eine kurze Übersicht über die Hauptpunkte und soll als Einführung in die detaillierteren Abschnitte des Dokuments dienen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174203-026-chapter_2_section_section_3_prompt.txt b/prompts/20260322-174203-026-chapter_2_section_section_3_prompt.txt new file mode 100644 index 00000000..2eb34230 --- /dev/null +++ b/prompts/20260322-174203-026-chapter_2_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: paragraph +- Generation Hint: Detaillierte Beschreibung eines spezifischen Themas oder einer Anweisung. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_2 (paragraph): + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-174203-027-chapter_2_section_section_1_response.txt b/prompts/20260322-174203-027-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..c99ec0fa --- /dev/null +++ b/prompts/20260322-174203-027-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In dieser Einleitung werden die Hauptpunkte des Dokuments zusammengefasst. Der Fokus liegt auf der klaren Darstellung der wichtigsten Informationen, um dem Leser einen schnellen Überblick zu verschaffen. Die folgenden Abschnitte bieten detaillierte Einblicke und ergänzende Details zu den hier genannten Themen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174203-028-chapter_2_section_section_1_response.txt b/prompts/20260322-174203-028-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..c99ec0fa --- /dev/null +++ b/prompts/20260322-174203-028-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In dieser Einleitung werden die Hauptpunkte des Dokuments zusammengefasst. Der Fokus liegt auf der klaren Darstellung der wichtigsten Informationen, um dem Leser einen schnellen Überblick zu verschaffen. Die folgenden Abschnitte bieten detaillierte Einblicke und ergänzende Details zu den hier genannten Themen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174203-029-chapter_2_section_section_4_prompt.txt b/prompts/20260322-174203-029-chapter_2_section_section_4_prompt.txt new file mode 100644 index 00000000..f60e9ca5 --- /dev/null +++ b/prompts/20260322-174203-029-chapter_2_section_section_4_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_4 +- Content Type: table +- Generation Hint: Tabelle mit den wichtigsten Terminen und Fristen. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (table). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "table", + "content": {{"headers": ["Column1", "Column2"], "rows": [["Value1", "Value2"], ["Value3", "Value4"]]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_2 (paragraph): +- section_3 (bullet_list): + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-174203-030-chapter_2_section_section_2_response.txt b/prompts/20260322-174203-030-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..0b16b709 --- /dev/null +++ b/prompts/20260322-174203-030-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Betreff der E-Mail klar und prägnant formulieren.", + "Anrede personalisieren, um den Empfänger direkt anzusprechen.", + "Hauptinhalt der E-Mail in kurzen, prägnanten Sätzen darstellen.", + "Wichtige Informationen oder Anweisungen in Stichpunkten auflisten.", + "Abschließende Grußformel und Kontaktdaten angeben." + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174203-031-chapter_2_section_section_2_response.txt b/prompts/20260322-174203-031-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..0b16b709 --- /dev/null +++ b/prompts/20260322-174203-031-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Betreff der E-Mail klar und prägnant formulieren.", + "Anrede personalisieren, um den Empfänger direkt anzusprechen.", + "Hauptinhalt der E-Mail in kurzen, prägnanten Sätzen darstellen.", + "Wichtige Informationen oder Anweisungen in Stichpunkten auflisten.", + "Abschließende Grußformel und Kontaktdaten angeben." + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174203-032-chapter_1_section_section_2_response.txt b/prompts/20260322-174203-032-chapter_1_section_section_2_response.txt new file mode 100644 index 00000000..5b285149 --- /dev/null +++ b/prompts/20260322-174203-032-chapter_1_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die Nachricht ist von entscheidender Bedeutung, da sie wichtige Informationen übermittelt, die für die Empfänger relevant sind. Sie dient dazu, Klarheit zu schaffen, Missverständnisse zu vermeiden und die Empfänger über wesentliche Entwicklungen oder Entscheidungen zu informieren. Eine präzise und gut formulierte Nachricht trägt dazu bei, dass alle Beteiligten auf dem gleichen Stand sind und entsprechend handeln können. Dies fördert die Effizienz und Effektivität in der Kommunikation und im weiteren Handeln." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174203-033-chapter_1_section_section_2_response.txt b/prompts/20260322-174203-033-chapter_1_section_section_2_response.txt new file mode 100644 index 00000000..5b285149 --- /dev/null +++ b/prompts/20260322-174203-033-chapter_1_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die Nachricht ist von entscheidender Bedeutung, da sie wichtige Informationen übermittelt, die für die Empfänger relevant sind. Sie dient dazu, Klarheit zu schaffen, Missverständnisse zu vermeiden und die Empfänger über wesentliche Entwicklungen oder Entscheidungen zu informieren. Eine präzise und gut formulierte Nachricht trägt dazu bei, dass alle Beteiligten auf dem gleichen Stand sind und entsprechend handeln können. Dies fördert die Effizienz und Effektivität in der Kommunikation und im weiteren Handeln." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174203-034-chapter_2_section_section_5_prompt.txt b/prompts/20260322-174203-034-chapter_2_section_section_5_prompt.txt new file mode 100644 index 00000000..54a520b1 --- /dev/null +++ b/prompts/20260322-174203-034-chapter_2_section_section_5_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_5 +- Content Type: paragraph +- Generation Hint: Abschluss des Hauptinhalts mit einem Aufruf zum Handeln oder einer abschließenden Bemerkung. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_3 (bullet_list): +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_4 (table): + diff --git a/prompts/20260322-174203-035-chapter_3_section_section_1_prompt.txt b/prompts/20260322-174203-035-chapter_3_section_section_1_prompt.txt new file mode 100644 index 00000000..9f3c6661 --- /dev/null +++ b/prompts/20260322-174203-035-chapter_3_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Zusammenfassung der E-Mail-Inhalte und abschließende Gedanken +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (paragraph): +- section_3 (bullet_list): + diff --git a/prompts/20260322-174204-036-chapter_1_section_section_3_response.txt b/prompts/20260322-174204-036-chapter_1_section_section_3_response.txt new file mode 100644 index 00000000..d37d8d72 --- /dev/null +++ b/prompts/20260322-174204-036-chapter_1_section_section_3_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Betreff der E-Mail klar und prägnant formulieren.", + "Einleitung mit einer kurzen Begrüßung und Vorstellung.", + "Hauptinhalt der Nachricht in klaren Punkten darstellen.", + "Wichtige Informationen oder Anfragen deutlich hervorheben.", + "Abschluss mit einem Dank und einer höflichen Verabschiedung." + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174204-037-chapter_1_section_section_3_response.txt b/prompts/20260322-174204-037-chapter_1_section_section_3_response.txt new file mode 100644 index 00000000..d37d8d72 --- /dev/null +++ b/prompts/20260322-174204-037-chapter_1_section_section_3_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Betreff der E-Mail klar und prägnant formulieren.", + "Einleitung mit einer kurzen Begrüßung und Vorstellung.", + "Hauptinhalt der Nachricht in klaren Punkten darstellen.", + "Wichtige Informationen oder Anfragen deutlich hervorheben.", + "Abschluss mit einem Dank und einer höflichen Verabschiedung." + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174205-038-chapter_2_section_section_5_response.txt b/prompts/20260322-174205-038-chapter_2_section_section_5_response.txt new file mode 100644 index 00000000..964c7eaa --- /dev/null +++ b/prompts/20260322-174205-038-chapter_2_section_section_5_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank, dass Sie sich die Zeit genommen haben, unseren Hauptinhalt zu lesen. Wir hoffen, dass die Informationen für Sie nützlich waren. Zögern Sie nicht, uns bei Fragen oder Anmerkungen zu kontaktieren. Wir freuen uns darauf, von Ihnen zu hören und stehen Ihnen jederzeit zur Verfügung, um Ihnen weiterzuhelfen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174205-039-chapter_2_section_section_5_response.txt b/prompts/20260322-174205-039-chapter_2_section_section_5_response.txt new file mode 100644 index 00000000..964c7eaa --- /dev/null +++ b/prompts/20260322-174205-039-chapter_2_section_section_5_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank, dass Sie sich die Zeit genommen haben, unseren Hauptinhalt zu lesen. Wir hoffen, dass die Informationen für Sie nützlich waren. Zögern Sie nicht, uns bei Fragen oder Anmerkungen zu kontaktieren. Wir freuen uns darauf, von Ihnen zu hören und stehen Ihnen jederzeit zur Verfügung, um Ihnen weiterzuhelfen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174205-040-chapter_2_section_section_3_response.txt b/prompts/20260322-174205-040-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..9c3480ee --- /dev/null +++ b/prompts/20260322-174205-040-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Beim Entwerfen einer E-Mail ist es wichtig, den Zweck klar zu definieren und die Nachricht prägnant zu halten. Beginnen Sie mit einer höflichen Anrede, gefolgt von einer kurzen Einführung, die den Kontext der E-Mail erklärt. Der Hauptteil sollte die wesentlichen Informationen oder Anfragen enthalten, klar strukturiert und leicht verständlich. Abschließend sollte die E-Mail mit einem freundlichen Gruß und, falls erforderlich, einem Hinweis auf mögliche nächste Schritte oder eine Antwortmöglichkeit enden. Achten Sie darauf, die E-Mail auf Rechtschreibung und Grammatik zu überprüfen, um Professionalität zu gewährleisten." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174205-041-chapter_2_section_section_3_response.txt b/prompts/20260322-174205-041-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..9c3480ee --- /dev/null +++ b/prompts/20260322-174205-041-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Beim Entwerfen einer E-Mail ist es wichtig, den Zweck klar zu definieren und die Nachricht prägnant zu halten. Beginnen Sie mit einer höflichen Anrede, gefolgt von einer kurzen Einführung, die den Kontext der E-Mail erklärt. Der Hauptteil sollte die wesentlichen Informationen oder Anfragen enthalten, klar strukturiert und leicht verständlich. Abschließend sollte die E-Mail mit einem freundlichen Gruß und, falls erforderlich, einem Hinweis auf mögliche nächste Schritte oder eine Antwortmöglichkeit enden. Achten Sie darauf, die E-Mail auf Rechtschreibung und Grammatik zu überprüfen, um Professionalität zu gewährleisten." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174205-042-chapter_2_section_section_4_response.txt b/prompts/20260322-174205-042-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..92eb9ecc --- /dev/null +++ b/prompts/20260322-174205-042-chapter_2_section_section_4_response.txt @@ -0,0 +1,17 @@ +{ + "elements": [ + { + "type": "table", + "content": { + "headers": ["Termin", "Frist"], + "rows": [ + ["Anmeldeschluss", "15. März 2024"], + ["Zahlungsfrist", "30. März 2024"], + ["Einreichung der Unterlagen", "10. April 2024"], + ["Veranstaltungsbeginn", "20. April 2024"], + ["Stornierungsfrist", "5. April 2024"] + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174205-043-chapter_2_section_section_4_response.txt b/prompts/20260322-174205-043-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..8e021872 --- /dev/null +++ b/prompts/20260322-174205-043-chapter_2_section_section_4_response.txt @@ -0,0 +1,35 @@ +{ + "elements": [ + { + "type": "table", + "content": { + "headers": [ + "Termin", + "Frist" + ], + "rows": [ + [ + "Anmeldeschluss", + "15. März 2024" + ], + [ + "Zahlungsfrist", + "30. März 2024" + ], + [ + "Einreichung der Unterlagen", + "10. April 2024" + ], + [ + "Veranstaltungsbeginn", + "20. April 2024" + ], + [ + "Stornierungsfrist", + "5. April 2024" + ] + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174206-044-chapter_3_section_section_1_response.txt b/prompts/20260322-174206-044-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..3f14f4ea --- /dev/null +++ b/prompts/20260322-174206-044-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen und bietet abschließende Gedanken. Sie enthält eine klare Übersicht über die besprochenen Themen und hebt die entscheidenden Informationen hervor. Abschließend wird ein Ausblick auf die nächsten Schritte gegeben, um die besprochenen Themen weiter zu verfolgen und die Kommunikation zu verbessern." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174206-045-chapter_3_section_section_1_response.txt b/prompts/20260322-174206-045-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..3f14f4ea --- /dev/null +++ b/prompts/20260322-174206-045-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen und bietet abschließende Gedanken. Sie enthält eine klare Übersicht über die besprochenen Themen und hebt die entscheidenden Informationen hervor. Abschließend wird ein Ausblick auf die nächsten Schritte gegeben, um die besprochenen Themen weiter zu verfolgen und die Kommunikation zu verbessern." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174206-046-document_generation_response.txt b/prompts/20260322-174206-046-document_generation_response.txt new file mode 100644 index 00000000..ae519fa4 --- /dev/null +++ b/prompts/20260322-174206-046-document_generation_response.txt @@ -0,0 +1,231 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "sections": [ + { + "id": "chapter_1_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Einleitung", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Kurze Einführung in den Zweck der E-Mail", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, den Zweck und die wichtigsten Informationen des vorherigen Dokuments zusammenzufassen. Sie bietet eine kurze Übersicht über die Hauptpunkte und soll als Einführung in die detaillierteren Abschnitte des Dokuments dienen." + } + } + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Kontext der Nachricht und warum sie wichtig ist", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die Nachricht ist von entscheidender Bedeutung, da sie wichtige Informationen übermittelt, die für die Empfänger relevant sind. Sie dient dazu, Klarheit zu schaffen, Missverständnisse zu vermeiden und die Empfänger über wesentliche Entwicklungen oder Entscheidungen zu informieren. Eine präzise und gut formulierte Nachricht trägt dazu bei, dass alle Beteiligten auf dem gleichen Stand sind und entsprechend handeln können. Dies fördert die Effizienz und Effektivität in der Kommunikation und im weiteren Handeln." + } + } + ] + }, + { + "id": "section_3", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Hauptpunkte der Nachricht", + "useAiCall": true, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Betreff der E-Mail klar und prägnant formulieren.", + "Einleitung mit einer kurzen Begrüßung und Vorstellung.", + "Hauptinhalt der Nachricht in klaren Punkten darstellen.", + "Wichtige Informationen oder Anfragen deutlich hervorheben.", + "Abschluss mit einem Dank und einer höflichen Verabschiedung." + ] + } + } + ] + }, + { + "id": "chapter_2_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Hauptinhalt", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung des Hauptinhalts mit einer kurzen Zusammenfassung der wichtigsten Punkte.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In dieser Einleitung werden die Hauptpunkte des Dokuments zusammengefasst. Der Fokus liegt auf der klaren Darstellung der wichtigsten Informationen, um dem Leser einen schnellen Überblick zu verschaffen. Die folgenden Abschnitte bieten detaillierte Einblicke und ergänzende Details zu den hier genannten Themen." + } + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Liste der wichtigsten Informationen oder Anweisungen.", + "useAiCall": true, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Betreff der E-Mail klar und prägnant formulieren.", + "Anrede personalisieren, um den Empfänger direkt anzusprechen.", + "Hauptinhalt der E-Mail in kurzen, prägnanten Sätzen darstellen.", + "Wichtige Informationen oder Anweisungen in Stichpunkten auflisten.", + "Abschließende Grußformel und Kontaktdaten angeben." + ] + } + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Beschreibung eines spezifischen Themas oder einer Anweisung.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Beim Entwerfen einer E-Mail ist es wichtig, den Zweck klar zu definieren und die Nachricht prägnant zu halten. Beginnen Sie mit einer höflichen Anrede, gefolgt von einer kurzen Einführung, die den Kontext der E-Mail erklärt. Der Hauptteil sollte die wesentlichen Informationen oder Anfragen enthalten, klar strukturiert und leicht verständlich. Abschließend sollte die E-Mail mit einem freundlichen Gruß und, falls erforderlich, einem Hinweis auf mögliche nächste Schritte oder eine Antwortmöglichkeit enden. Achten Sie darauf, die E-Mail auf Rechtschreibung und Grammatik zu überprüfen, um Professionalität zu gewährleisten." + } + } + ] + }, + { + "id": "section_4", + "content_type": "table", + "contentPartIds": [], + "generationHint": "Tabelle mit den wichtigsten Terminen und Fristen.", + "useAiCall": true, + "elements": [ + { + "type": "table", + "content": { + "headers": [ + "Termin", + "Frist" + ], + "rows": [ + [ + "Anmeldeschluss", + "15. März 2024" + ], + [ + "Zahlungsfrist", + "30. März 2024" + ], + [ + "Einreichung der Unterlagen", + "10. April 2024" + ], + [ + "Veranstaltungsbeginn", + "20. April 2024" + ], + [ + "Stornierungsfrist", + "5. April 2024" + ] + ] + } + } + ] + }, + { + "id": "section_5", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschluss des Hauptinhalts mit einem Aufruf zum Handeln oder einer abschließenden Bemerkung.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank, dass Sie sich die Zeit genommen haben, unseren Hauptinhalt zu lesen. Wir hoffen, dass die Informationen für Sie nützlich waren. Zögern Sie nicht, uns bei Fragen oder Anmerkungen zu kontaktieren. Wir freuen uns darauf, von Ihnen zu hören und stehen Ihnen jederzeit zur Verfügung, um Ihnen weiterzuhelfen." + } + } + ] + }, + { + "id": "chapter_3_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Abschluss", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung der E-Mail-Inhalte und abschließende Gedanken", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen und bietet abschließende Gedanken. Sie enthält eine klare Übersicht über die besprochenen Themen und hebt die entscheidenden Informationen hervor. Abschließend wird ein Ausblick auf die nächsten Schritte gegeben, um die besprochenen Themen weiter zu verfolgen und die Kommunikation zu verbessern." + } + } + ] + } + ], + "metadata": { + "outputStyle": "document" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174207-047-email_composition_prompt.txt b/prompts/20260322-174207-047-email_composition_prompt.txt new file mode 100644 index 00000000..5eb02180 --- /dev/null +++ b/prompts/20260322-174207-047-email_composition_prompt.txt @@ -0,0 +1,22 @@ +Compose an email based on this context: +------- +Compose an email. The upstream AI step did not produce output. +------- + +Recipients: (not specified - this is a draft) +Style: business +Max length: 1000 characters + +Available_Document_References: + - (no documents) + +Based on the context, decide which documents to attach. + +CRITICAL: Use EXACT document references from Available_Document_References above. For individual documents: ALWAYS use docItem:: format (include filename) + +Return JSON: +{ + "subject": "subject line", + "body": "email body (HTML allowed)", + "attachments": ["docItem::"] +} diff --git a/prompts/20260322-174208-048-email_composition_response.txt b/prompts/20260322-174208-048-email_composition_response.txt new file mode 100644 index 00000000..a2833315 --- /dev/null +++ b/prompts/20260322-174208-048-email_composition_response.txt @@ -0,0 +1,7 @@ +```json +{ + "subject": "Follow-up on Upstream AI Process", + "body": "

Dear Team,

I hope this message finds you well. I am writing to inform you that the upstream AI step did not produce any output as expected. We need to address this issue promptly to ensure the continuity of our workflow.

Please let me know if there are any specific actions you would like me to take or if there are any updates on resolving this matter.

Thank you for your attention to this issue.

Best regards,
Your Name

", + "attachments": [] +} +``` \ No newline at end of file diff --git a/prompts/20260322-174342-049-chapter_structure_generation_prompt.txt b/prompts/20260322-174342-049-chapter_structure_generation_prompt.txt new file mode 100644 index 00000000..49ba0ee5 --- /dev/null +++ b/prompts/20260322-174342-049-chapter_structure_generation_prompt.txt @@ -0,0 +1,119 @@ +# TASK: Plan Document Structure (Documents + Chapters) + +This is a STRUCTURE PLANNING task. You define which documents to create and which chapters each document will have. +Chapter CONTENT will be generated in a later step - here you only plan the STRUCTURE and assign content references. +Return EXACTLY ONE complete JSON object. Do not generate multiple JSON objects, alternatives, or variations. Do not use separators like "---" between JSON objects. + +## USER REQUEST (for context) +``` +entwirf eine email mit dem inhalt des files davor +``` + +## AVAILABLE CONTENT PARTS + +(No content parts available) + +## CONTENT ASSIGNMENT RULE + +CRITICAL: Every chapter MUST have contentParts assigned if it relates to documents/images/data from the user request. +If the user request mentions documents/images/data, then EVERY chapter that generates content related to those references MUST assign the relevant ContentParts explicitly. + +Assignment logic: +- If chapter DISPLAYS a document/image → assign "object" format ContentPart with "caption" +- If chapter generates text content ABOUT a document/image/data → assign ContentPart with "instruction": + - Prefer "extracted" format if available (contains analyzed/extracted content) + - If only "object" format is available, use "object" format with "instruction" (to write ABOUT the image/document) +- If chapter's generationHint or purpose relates to a document/image/data mentioned in user request → it MUST have ContentParts assigned +- Multiple chapters might assign the same ContentPart (e.g., one chapter displays image, another writes about it) +- Use ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above +- Empty contentParts are only allowed if chapter generates content WITHOUT referencing any documents/images/data from the user request + +CRITICAL RULE: If the user request mentions BOTH: + a) Documents/images/data (listed in AVAILABLE CONTENT PARTS above), AND + b) Generic content types (article text, main content, body text, etc.) +Then chapters that generate those generic content types MUST assign the relevant ContentParts, because the content should relate to or be based on the provided documents/images/data. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential information only +- AVOID verbose, lengthy, or repetitive text - be concise and direct +- Prioritize FACTS over filler text - no introductions like "In this chapter..." +- Minimize system resources: shorter content = faster processing +- Quality over quantity: precise, meaningful content rather than padding + +## CHAPTER STRUCTURE REQUIREMENTS +- Generate chapters based on USER REQUEST - analyze what structure the user wants +- Create ONLY the minimum chapters needed to cover the user's request - avoid over-structuring +- HARD LIMIT: Maximum 7 chapters per document. If the topic can be covered in fewer, prefer fewer. Combine related topics into single chapters rather than creating many small ones. +- IMPORTANT: Each chapter MUST have ALL these fields: + - id: Unique identifier (e.g., "chapter_1") + - level: Heading level (1, 2, 3, etc.) + - title: Chapter title + - contentParts: Object mapping ContentPart IDs to usage instructions (MUST assign if chapter relates to documents/data from user request) + - generationHint: Description of what content to generate (including formatting/styling requirements) + - sections: Empty array [] (REQUIRED - sections are generated in next phase) +- contentParts: {"partId": {"instruction": "..."} or {"caption": "..."} or both} - Assign ContentParts as required by CONTENT ASSIGNMENT RULE above +- The "instruction" field for each ContentPart MUST contain ALL relevant details from the USER REQUEST that apply to content extraction for this specific chapter. Include all formatting rules, data requirements, constraints, and specifications mentioned in the user request that are relevant for processing this ContentPart in this chapter. +- generationHint: Keep CONCISE but include relevant details from the USER REQUEST. Focus on WHAT to generate, not HOW to phrase it verbosely. +- The number of chapters depends on the user request - create only what is requested. Do NOT create chapters for topics without available data. + +CRITICAL: Only create chapters for CONTENT sections, not for formatting/styling requirements. Formatting/styling requirements to be included in each generationHint if needed. + +## DOCUMENT STRUCTURE + +For each document, determine: +- outputFormat: From USER REQUEST (explicit mention or infer from purpose/content type). Default: "txt". Multiple documents can have different formats. +- language: From USER REQUEST (map to ISO 639-1: de, en, fr, it...). Default: "de". Multiple documents can have different languages. +- chapters: Structure appropriately for the format (e.g., pptx=slides, docx=sections, xlsx=worksheets). Match format capabilities and constraints. + +Required JSON fields: +- metadata: {"title": "...", "language": "..."} +- documents: Array with id, title, filename, outputFormat, language, chapters[] +- chapters: Array with id, level, title, contentParts, generationHint, sections[] + +EXAMPLE STRUCTURE (for reference only - adapt to user request): +{ + "metadata": { + "title": "Document Title", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "Document Title", + "filename": "document.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Chapter Title", + "contentParts": { + "extracted_part_id": { + "instruction": "Use extracted content with ALL relevant details from user request" + } + }, + "generationHint": "Detailed description including ALL relevant details from user request for this chapter", + "sections": [] + } + ] + }] +} + +CRITICAL INSTRUCTIONS: +- Generate chapters based on USER REQUEST, NOT based on the example above +- The example shows the JSON structure format, NOT the required chapters +- Create only the chapters that match the user's request +- Adapt chapter titles and structure to match the user's specific request +- Determine outputFormat and language for each document by analyzing the USER REQUEST above +- The example shows placeholders "txt" and "de" - YOU MUST REPLACE THESE with actual values determined from the USER REQUEST + +MANDATORY CONTENT ASSIGNMENT CHECK: +For each chapter, verify: +1. Does the user request mention documents/images/data? (e.g., "photo", "image", "document", "data", "based on", "about") +2. Does this chapter's generationHint, title, or purpose relate to those documents/images/data mentioned in step 1? + - Examples: "article about the photo", "text describing the image", "analysis of the document", "content based on the data" + - Even if chapter doesn't explicitly say "about the image", if user request mentions both the image AND this chapter's content type → relate them +3. If YES to both → chapter MUST have contentParts assigned (cannot be empty {}) +4. If ContentPart is "object" format and chapter needs to write ABOUT it → assign with "instruction" field, not just "caption" + +OUTPUT FORMAT: Start with { and end with }. Do NOT use markdown code fences (```json). Do NOT add explanatory text before or after the JSON. Return ONLY the JSON object itself. diff --git a/prompts/20260322-174346-050-chapter_structure_generation_response.txt b/prompts/20260322-174346-050-chapter_structure_generation_response.txt new file mode 100644 index 00000000..5ae482c7 --- /dev/null +++ b/prompts/20260322-174346-050-chapter_structure_generation_response.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail, die den Zweck und den Kontext der Nachricht kurz beschreibt.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Hauptteil der E-Mail, der die wesentlichen Informationen und Details enthält, die kommuniziert werden sollen.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schlussfolgerung", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung oder einem abschließenden Gedanken.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174346-051-chapter_structure_generation_final_result.txt b/prompts/20260322-174346-051-chapter_structure_generation_final_result.txt new file mode 100644 index 00000000..5ae482c7 --- /dev/null +++ b/prompts/20260322-174346-051-chapter_structure_generation_final_result.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail, die den Zweck und den Kontext der Nachricht kurz beschreibt.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Hauptteil der E-Mail, der die wesentlichen Informationen und Details enthält, die kommuniziert werden sollen.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schlussfolgerung", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung oder einem abschließenden Gedanken.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174346-052-chapter_structure_chapter_1_prompt.txt b/prompts/20260322-174346-052-chapter_structure_chapter_1_prompt.txt new file mode 100644 index 00000000..6d4a119b --- /dev/null +++ b/prompts/20260322-174346-052-chapter_structure_chapter_1_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Einleitung (Level 1, ID: chapter_1) +GENERATION HINT: Einleitung der E-Mail, die den Zweck und den Kontext der Nachricht kurz beschreibt. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-174346-053-chapter_structure_chapter_2_prompt.txt b/prompts/20260322-174346-053-chapter_structure_chapter_2_prompt.txt new file mode 100644 index 00000000..d2123db1 --- /dev/null +++ b/prompts/20260322-174346-053-chapter_structure_chapter_2_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Hauptinhalt (Level 1, ID: chapter_2) +GENERATION HINT: Hauptteil der E-Mail, der die wesentlichen Informationen und Details enthält, die kommuniziert werden sollen. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-174346-054-chapter_structure_chapter_3_prompt.txt b/prompts/20260322-174346-054-chapter_structure_chapter_3_prompt.txt new file mode 100644 index 00000000..3ed483c5 --- /dev/null +++ b/prompts/20260322-174346-054-chapter_structure_chapter_3_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Schlussfolgerung (Level 1, ID: chapter_3) +GENERATION HINT: Abschluss der E-Mail mit einer Zusammenfassung oder einem abschließenden Gedanken. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-174348-055-chapter_structure_chapter_3_response.txt b/prompts/20260322-174348-055-chapter_structure_chapter_3_response.txt new file mode 100644 index 00000000..4bb34827 --- /dev/null +++ b/prompts/20260322-174348-055-chapter_structure_chapter_3_response.txt @@ -0,0 +1,19 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung oder einem abschließenden Gedanken", + "useAiCall": true, + "elements": [ + { + "type": "text", + "content": "In der Schlussfolgerung fassen wir die wichtigsten Punkte zusammen, die in der E-Mail behandelt wurden. Es ist entscheidend, den Empfänger mit einem klaren und prägnanten Abschluss zu hinterlassen, der die Hauptbotschaft verstärkt und eventuell nächste Schritte oder Erwartungen klärt. Ein abschließender Gedanke könnte auch eine Einladung zur weiteren Diskussion oder Zusammenarbeit sein, um die Beziehung zu stärken und zukünftige Kommunikation zu fördern." + } + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-174350-056-chapter_structure_chapter_1_response.txt b/prompts/20260322-174350-056-chapter_structure_chapter_1_response.txt new file mode 100644 index 00000000..2f87c0b9 --- /dev/null +++ b/prompts/20260322-174350-056-chapter_structure_chapter_1_response.txt @@ -0,0 +1,38 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung zur E-Mail, die den Zweck und den Kontext der Nachricht beschreibt", + "useAiCall": true, + "elements": [ + "Diese E-Mail dient dazu, den Empfänger über die neuesten Entwicklungen in unserem Projekt zu informieren. Wir möchten Ihnen einen Überblick über die aktuellen Fortschritte geben und die nächsten Schritte erläutern. Ihr Feedback ist uns wichtig, um sicherzustellen, dass wir auf dem richtigen Weg sind." + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Hauptziele der E-Mail zusammenfassen", + "useAiCall": true, + "elements": [ + "Information über den aktuellen Projektstatus", + "Darstellung der nächsten Schritte", + "Einladung zur Rückmeldung und Diskussion" + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Kontext der Nachricht im Rahmen des größeren Projekts", + "useAiCall": true, + "elements": [ + "Das Projekt, an dem wir arbeiten, ist ein wesentlicher Bestandteil unserer Unternehmensstrategie für das kommende Jahr. Es zielt darauf ab, unsere Marktposition zu stärken und neue Geschäftsmöglichkeiten zu erschließen." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-174353-057-chapter_structure_chapter_2_response.txt b/prompts/20260322-174353-057-chapter_structure_chapter_2_response.txt new file mode 100644 index 00000000..4de01a2d --- /dev/null +++ b/prompts/20260322-174353-057-chapter_structure_chapter_2_response.txt @@ -0,0 +1,87 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung und Überblick über die wesentlichen Informationen der E-Mail", + "useAiCall": true, + "elements": [ + { + "type": "text", + "content": "In diesem Abschnitt wird der Hauptinhalt der E-Mail vorgestellt. Hier werden die wichtigsten Informationen und Details zusammengefasst, die der Empfänger wissen muss. Der Fokus liegt darauf, die Kernaussagen klar und prägnant zu vermitteln." + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Auflistung der Hauptpunkte oder Themen, die in der E-Mail behandelt werden", + "useAiCall": true, + "elements": [ + { + "type": "item", + "content": "Ziel der E-Mail" + }, + { + "type": "item", + "content": "Wichtige Termine oder Fristen" + }, + { + "type": "item", + "content": "Erforderliche Maßnahmen oder Aktionen" + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Informationen zu einem spezifischen Thema oder Punkt", + "useAiCall": true, + "elements": [ + { + "type": "text", + "content": "Dieser Abschnitt bietet eine detaillierte Erklärung zu einem bestimmten Thema, das in der E-Mail behandelt wird. Hier werden alle relevanten Details und Hintergrundinformationen bereitgestellt, um ein umfassendes Verständnis zu gewährleisten." + } + ] + }, + { + "id": "section_4", + "content_type": "table", + "contentPartIds": [], + "generationHint": "Tabellarische Darstellung von Daten oder Informationen, die in der E-Mail enthalten sind", + "useAiCall": true, + "elements": [ + { + "type": "row", + "content": ["Thema", "Beschreibung"] + }, + { + "type": "row", + "content": ["Projektstatus", "Aktueller Stand des Projekts und nächste Schritte"] + }, + { + "type": "row", + "content": ["Budget", "Übersicht über die aktuellen Ausgaben und geplante Budgets"] + } + ] + }, + { + "id": "section_5", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung und abschließende Bemerkungen", + "useAiCall": true, + "elements": [ + { + "type": "text", + "content": "Zum Abschluss der E-Mail werden die wichtigsten Punkte noch einmal zusammengefasst. Es wird darauf hingewiesen, welche nächsten Schritte erforderlich sind und welche Fristen eingehalten werden müssen." + } + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-174353-058-chapter_1_section_section_1_prompt.txt b/prompts/20260322-174353-058-chapter_1_section_section_1_prompt.txt new file mode 100644 index 00000000..38559b8f --- /dev/null +++ b/prompts/20260322-174353-058-chapter_1_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einleitung zur E-Mail, die den Zweck und den Kontext der Nachricht beschreibt +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-174353-059-chapter_1_section_section_2_prompt.txt b/prompts/20260322-174353-059-chapter_1_section_section_2_prompt.txt new file mode 100644 index 00000000..ed415f71 --- /dev/null +++ b/prompts/20260322-174353-059-chapter_1_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: bullet_list +- Generation Hint: Hauptziele der E-Mail zusammenfassen +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-174353-060-chapter_1_section_section_3_prompt.txt b/prompts/20260322-174353-060-chapter_1_section_section_3_prompt.txt new file mode 100644 index 00000000..98971f56 --- /dev/null +++ b/prompts/20260322-174353-060-chapter_1_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: paragraph +- Generation Hint: Kontext der Nachricht im Rahmen des größeren Projekts +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_2 (bullet_list): + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-174353-061-chapter_2_section_section_1_prompt.txt b/prompts/20260322-174353-061-chapter_2_section_section_1_prompt.txt new file mode 100644 index 00000000..216a759e --- /dev/null +++ b/prompts/20260322-174353-061-chapter_2_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einleitung und Überblick über die wesentlichen Informationen der E-Mail +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-174353-062-chapter_2_section_section_2_prompt.txt b/prompts/20260322-174353-062-chapter_2_section_section_2_prompt.txt new file mode 100644 index 00000000..53a15d93 --- /dev/null +++ b/prompts/20260322-174353-062-chapter_2_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: bullet_list +- Generation Hint: Auflistung der Hauptpunkte oder Themen, die in der E-Mail behandelt werden +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-174355-063-chapter_1_section_section_2_response.txt b/prompts/20260322-174355-063-chapter_1_section_section_2_response.txt new file mode 100644 index 00000000..3e698c4f --- /dev/null +++ b/prompts/20260322-174355-063-chapter_1_section_section_2_response.txt @@ -0,0 +1,14 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Wichtige Informationen klar und prägnant kommunizieren", + "Empfänger über spezifische Aktionen oder Entscheidungen informieren", + "Erwartungen oder nächste Schritte deutlich machen" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174355-064-chapter_1_section_section_2_response.txt b/prompts/20260322-174355-064-chapter_1_section_section_2_response.txt new file mode 100644 index 00000000..3e698c4f --- /dev/null +++ b/prompts/20260322-174355-064-chapter_1_section_section_2_response.txt @@ -0,0 +1,14 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Wichtige Informationen klar und prägnant kommunizieren", + "Empfänger über spezifische Aktionen oder Entscheidungen informieren", + "Erwartungen oder nächste Schritte deutlich machen" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174355-065-chapter_2_section_section_3_prompt.txt b/prompts/20260322-174355-065-chapter_2_section_section_3_prompt.txt new file mode 100644 index 00000000..557be6c0 --- /dev/null +++ b/prompts/20260322-174355-065-chapter_2_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: paragraph +- Generation Hint: Detaillierte Informationen zu einem spezifischen Thema oder Punkt +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_2 (bullet_list): + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-174355-066-chapter_2_section_section_2_response.txt b/prompts/20260322-174355-066-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..0005b108 --- /dev/null +++ b/prompts/20260322-174355-066-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Begrüßung und Vorstellung des Absenders", + "Zweck der E-Mail und Hauptthemen", + "Wichtige Informationen oder Updates", + "Anfragen oder benötigte Aktionen vom Empfänger", + "Abschluss und Dankesworte" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174355-067-chapter_2_section_section_2_response.txt b/prompts/20260322-174355-067-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..0005b108 --- /dev/null +++ b/prompts/20260322-174355-067-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Begrüßung und Vorstellung des Absenders", + "Zweck der E-Mail und Hauptthemen", + "Wichtige Informationen oder Updates", + "Anfragen oder benötigte Aktionen vom Empfänger", + "Abschluss und Dankesworte" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174355-068-chapter_1_section_section_1_response.txt b/prompts/20260322-174355-068-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..356ec670 --- /dev/null +++ b/prompts/20260322-174355-068-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, den Zweck und den Kontext der Nachricht klar darzustellen. Sie enthält wichtige Informationen, die für das Verständnis des Themas notwendig sind. Bitte lesen Sie die folgenden Abschnitte sorgfältig, um alle relevanten Details zu erfassen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174355-069-chapter_1_section_section_1_response.txt b/prompts/20260322-174355-069-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..356ec670 --- /dev/null +++ b/prompts/20260322-174355-069-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, den Zweck und den Kontext der Nachricht klar darzustellen. Sie enthält wichtige Informationen, die für das Verständnis des Themas notwendig sind. Bitte lesen Sie die folgenden Abschnitte sorgfältig, um alle relevanten Details zu erfassen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174355-070-chapter_2_section_section_4_prompt.txt b/prompts/20260322-174355-070-chapter_2_section_section_4_prompt.txt new file mode 100644 index 00000000..258de074 --- /dev/null +++ b/prompts/20260322-174355-070-chapter_2_section_section_4_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_4 +- Content Type: table +- Generation Hint: Tabellarische Darstellung von Daten oder Informationen, die in der E-Mail enthalten sind +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (table). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "table", + "content": {{"headers": ["Column1", "Column2"], "rows": [["Value1", "Value2"], ["Value3", "Value4"]]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_2 (bullet_list): +- section_3 (paragraph): + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-174355-071-chapter_2_section_section_5_prompt.txt b/prompts/20260322-174355-071-chapter_2_section_section_5_prompt.txt new file mode 100644 index 00000000..31878a30 --- /dev/null +++ b/prompts/20260322-174355-071-chapter_2_section_section_5_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_5 +- Content Type: paragraph +- Generation Hint: Zusammenfassung und abschließende Bemerkungen +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_3 (paragraph): +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_4 (table): + diff --git a/prompts/20260322-174355-072-chapter_2_section_section_1_response.txt b/prompts/20260322-174355-072-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..b277c58a --- /dev/null +++ b/prompts/20260322-174355-072-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail bietet einen Überblick über die wichtigsten Informationen und Themen, die im vorherigen Dokument behandelt wurden. Sie fasst die wesentlichen Punkte zusammen, um den Empfängern einen schnellen und effektiven Einblick zu ermöglichen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174355-073-chapter_2_section_section_1_response.txt b/prompts/20260322-174355-073-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..b277c58a --- /dev/null +++ b/prompts/20260322-174355-073-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail bietet einen Überblick über die wichtigsten Informationen und Themen, die im vorherigen Dokument behandelt wurden. Sie fasst die wesentlichen Punkte zusammen, um den Empfängern einen schnellen und effektiven Einblick zu ermöglichen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174355-074-chapter_1_section_section_3_response.txt b/prompts/20260322-174355-074-chapter_1_section_section_3_response.txt new file mode 100644 index 00000000..4a1bd2db --- /dev/null +++ b/prompts/20260322-174355-074-chapter_1_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Im Rahmen des Projekts ist es entscheidend, die Kommunikation klar und präzise zu halten. Die Nachricht sollte den aktuellen Fortschritt, die nächsten Schritte und eventuelle Herausforderungen adressieren. Es ist wichtig, alle relevanten Stakeholder auf dem Laufenden zu halten und sicherzustellen, dass alle notwendigen Ressourcen und Informationen bereitgestellt werden, um die Projektziele effizient zu erreichen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174355-075-chapter_1_section_section_3_response.txt b/prompts/20260322-174355-075-chapter_1_section_section_3_response.txt new file mode 100644 index 00000000..4a1bd2db --- /dev/null +++ b/prompts/20260322-174355-075-chapter_1_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Im Rahmen des Projekts ist es entscheidend, die Kommunikation klar und präzise zu halten. Die Nachricht sollte den aktuellen Fortschritt, die nächsten Schritte und eventuelle Herausforderungen adressieren. Es ist wichtig, alle relevanten Stakeholder auf dem Laufenden zu halten und sicherzustellen, dass alle notwendigen Ressourcen und Informationen bereitgestellt werden, um die Projektziele effizient zu erreichen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174355-076-chapter_3_section_section_1_prompt.txt b/prompts/20260322-174355-076-chapter_3_section_section_1_prompt.txt new file mode 100644 index 00000000..ead49013 --- /dev/null +++ b/prompts/20260322-174355-076-chapter_3_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Abschluss der E-Mail mit einer Zusammenfassung oder einem abschließenden Gedanken +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-174356-077-chapter_3_section_section_1_response.txt b/prompts/20260322-174356-077-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..0892e9ff --- /dev/null +++ b/prompts/20260322-174356-077-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Abschließend möchte ich mich für Ihre Aufmerksamkeit und Unterstützung bedanken. Ich freue mich auf Ihre Rückmeldung und hoffe auf eine positive Zusammenarbeit. Bei weiteren Fragen stehe ich Ihnen gerne zur Verfügung." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174356-078-chapter_3_section_section_1_response.txt b/prompts/20260322-174356-078-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..0892e9ff --- /dev/null +++ b/prompts/20260322-174356-078-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Abschließend möchte ich mich für Ihre Aufmerksamkeit und Unterstützung bedanken. Ich freue mich auf Ihre Rückmeldung und hoffe auf eine positive Zusammenarbeit. Bei weiteren Fragen stehe ich Ihnen gerne zur Verfügung." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174357-079-chapter_2_section_section_3_response.txt b/prompts/20260322-174357-079-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..06e958a7 --- /dev/null +++ b/prompts/20260322-174357-079-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Beim Entwerfen einer E-Mail ist es wichtig, den Zweck klar zu definieren und die Nachricht präzise zu formulieren. Beginnen Sie mit einer höflichen Anrede, gefolgt von einer kurzen Einführung in das Thema. Der Hauptteil sollte die wesentlichen Informationen enthalten, die der Empfänger benötigt, um die Nachricht zu verstehen und darauf zu reagieren. Abschließend sollte die E-Mail mit einem klaren Aufruf zum Handeln oder einer Zusammenfassung der nächsten Schritte enden. Höfliche Grüße und eine Signatur runden die E-Mail ab." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174357-080-chapter_2_section_section_3_response.txt b/prompts/20260322-174357-080-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..06e958a7 --- /dev/null +++ b/prompts/20260322-174357-080-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Beim Entwerfen einer E-Mail ist es wichtig, den Zweck klar zu definieren und die Nachricht präzise zu formulieren. Beginnen Sie mit einer höflichen Anrede, gefolgt von einer kurzen Einführung in das Thema. Der Hauptteil sollte die wesentlichen Informationen enthalten, die der Empfänger benötigt, um die Nachricht zu verstehen und darauf zu reagieren. Abschließend sollte die E-Mail mit einem klaren Aufruf zum Handeln oder einer Zusammenfassung der nächsten Schritte enden. Höfliche Grüße und eine Signatur runden die E-Mail ab." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174357-081-chapter_2_section_section_4_response.txt b/prompts/20260322-174357-081-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..a1284740 --- /dev/null +++ b/prompts/20260322-174357-081-chapter_2_section_section_4_response.txt @@ -0,0 +1,17 @@ +{ + "elements": [ + { + "type": "table", + "content": { + "headers": ["Betreff", "Inhalt"], + "rows": [ + ["Anrede", "Sehr geehrte Damen und Herren,"], + ["Einleitung", "Ich hoffe, diese Nachricht trifft Sie wohl."], + ["Hauptteil", "Im Anhang finden Sie die erforderlichen Informationen."], + ["Schluss", "Vielen Dank für Ihre Aufmerksamkeit."], + ["Grüße", "Mit freundlichen Grüßen, [Ihr Name]"] + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174357-082-chapter_2_section_section_4_response.txt b/prompts/20260322-174357-082-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..ebbd9745 --- /dev/null +++ b/prompts/20260322-174357-082-chapter_2_section_section_4_response.txt @@ -0,0 +1,35 @@ +{ + "elements": [ + { + "type": "table", + "content": { + "headers": [ + "Betreff", + "Inhalt" + ], + "rows": [ + [ + "Anrede", + "Sehr geehrte Damen und Herren," + ], + [ + "Einleitung", + "Ich hoffe, diese Nachricht trifft Sie wohl." + ], + [ + "Hauptteil", + "Im Anhang finden Sie die erforderlichen Informationen." + ], + [ + "Schluss", + "Vielen Dank für Ihre Aufmerksamkeit." + ], + [ + "Grüße", + "Mit freundlichen Grüßen, [Ihr Name]" + ] + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174357-083-chapter_2_section_section_5_response.txt b/prompts/20260322-174357-083-chapter_2_section_section_5_response.txt new file mode 100644 index 00000000..9c885660 --- /dev/null +++ b/prompts/20260322-174357-083-chapter_2_section_section_5_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass die besprochenen Themen eine klare Richtung für zukünftige Maßnahmen vorgeben. Die Analyse der Daten zeigt deutliche Trends, die berücksichtigt werden müssen, um effektive Strategien zu entwickeln. Abschließend ist es wichtig, die gewonnenen Erkenntnisse in konkrete Handlungen umzusetzen, um die gewünschten Ergebnisse zu erzielen. Eine kontinuierliche Überprüfung und Anpassung der Strategien wird empfohlen, um auf Veränderungen im Umfeld flexibel reagieren zu können." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174357-084-chapter_2_section_section_5_response.txt b/prompts/20260322-174357-084-chapter_2_section_section_5_response.txt new file mode 100644 index 00000000..9c885660 --- /dev/null +++ b/prompts/20260322-174357-084-chapter_2_section_section_5_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass die besprochenen Themen eine klare Richtung für zukünftige Maßnahmen vorgeben. Die Analyse der Daten zeigt deutliche Trends, die berücksichtigt werden müssen, um effektive Strategien zu entwickeln. Abschließend ist es wichtig, die gewonnenen Erkenntnisse in konkrete Handlungen umzusetzen, um die gewünschten Ergebnisse zu erzielen. Eine kontinuierliche Überprüfung und Anpassung der Strategien wird empfohlen, um auf Veränderungen im Umfeld flexibel reagieren zu können." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174357-085-document_generation_response.txt b/prompts/20260322-174357-085-document_generation_response.txt new file mode 100644 index 00000000..3938c43e --- /dev/null +++ b/prompts/20260322-174357-085-document_generation_response.txt @@ -0,0 +1,229 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "sections": [ + { + "id": "chapter_1_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Einleitung", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung zur E-Mail, die den Zweck und den Kontext der Nachricht beschreibt", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, den Zweck und den Kontext der Nachricht klar darzustellen. Sie enthält wichtige Informationen, die für das Verständnis des Themas notwendig sind. Bitte lesen Sie die folgenden Abschnitte sorgfältig, um alle relevanten Details zu erfassen." + } + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Hauptziele der E-Mail zusammenfassen", + "useAiCall": true, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Wichtige Informationen klar und prägnant kommunizieren", + "Empfänger über spezifische Aktionen oder Entscheidungen informieren", + "Erwartungen oder nächste Schritte deutlich machen" + ] + } + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Kontext der Nachricht im Rahmen des größeren Projekts", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Im Rahmen des Projekts ist es entscheidend, die Kommunikation klar und präzise zu halten. Die Nachricht sollte den aktuellen Fortschritt, die nächsten Schritte und eventuelle Herausforderungen adressieren. Es ist wichtig, alle relevanten Stakeholder auf dem Laufenden zu halten und sicherzustellen, dass alle notwendigen Ressourcen und Informationen bereitgestellt werden, um die Projektziele effizient zu erreichen." + } + } + ] + }, + { + "id": "chapter_2_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Hauptinhalt", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung und Überblick über die wesentlichen Informationen der E-Mail", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail bietet einen Überblick über die wichtigsten Informationen und Themen, die im vorherigen Dokument behandelt wurden. Sie fasst die wesentlichen Punkte zusammen, um den Empfängern einen schnellen und effektiven Einblick zu ermöglichen." + } + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Auflistung der Hauptpunkte oder Themen, die in der E-Mail behandelt werden", + "useAiCall": true, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Begrüßung und Vorstellung des Absenders", + "Zweck der E-Mail und Hauptthemen", + "Wichtige Informationen oder Updates", + "Anfragen oder benötigte Aktionen vom Empfänger", + "Abschluss und Dankesworte" + ] + } + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Informationen zu einem spezifischen Thema oder Punkt", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Beim Entwerfen einer E-Mail ist es wichtig, den Zweck klar zu definieren und die Nachricht präzise zu formulieren. Beginnen Sie mit einer höflichen Anrede, gefolgt von einer kurzen Einführung in das Thema. Der Hauptteil sollte die wesentlichen Informationen enthalten, die der Empfänger benötigt, um die Nachricht zu verstehen und darauf zu reagieren. Abschließend sollte die E-Mail mit einem klaren Aufruf zum Handeln oder einer Zusammenfassung der nächsten Schritte enden. Höfliche Grüße und eine Signatur runden die E-Mail ab." + } + } + ] + }, + { + "id": "section_4", + "content_type": "table", + "contentPartIds": [], + "generationHint": "Tabellarische Darstellung von Daten oder Informationen, die in der E-Mail enthalten sind", + "useAiCall": true, + "elements": [ + { + "type": "table", + "content": { + "headers": [ + "Betreff", + "Inhalt" + ], + "rows": [ + [ + "Anrede", + "Sehr geehrte Damen und Herren," + ], + [ + "Einleitung", + "Ich hoffe, diese Nachricht trifft Sie wohl." + ], + [ + "Hauptteil", + "Im Anhang finden Sie die erforderlichen Informationen." + ], + [ + "Schluss", + "Vielen Dank für Ihre Aufmerksamkeit." + ], + [ + "Grüße", + "Mit freundlichen Grüßen, [Ihr Name]" + ] + ] + } + } + ] + }, + { + "id": "section_5", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung und abschließende Bemerkungen", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass die besprochenen Themen eine klare Richtung für zukünftige Maßnahmen vorgeben. Die Analyse der Daten zeigt deutliche Trends, die berücksichtigt werden müssen, um effektive Strategien zu entwickeln. Abschließend ist es wichtig, die gewonnenen Erkenntnisse in konkrete Handlungen umzusetzen, um die gewünschten Ergebnisse zu erzielen. Eine kontinuierliche Überprüfung und Anpassung der Strategien wird empfohlen, um auf Veränderungen im Umfeld flexibel reagieren zu können." + } + } + ] + }, + { + "id": "chapter_3_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Schlussfolgerung", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung oder einem abschließenden Gedanken", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Abschließend möchte ich mich für Ihre Aufmerksamkeit und Unterstützung bedanken. Ich freue mich auf Ihre Rückmeldung und hoffe auf eine positive Zusammenarbeit. Bei weiteren Fragen stehe ich Ihnen gerne zur Verfügung." + } + } + ] + } + ], + "metadata": { + "outputStyle": "document" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174452-086-chapter_structure_generation_prompt.txt b/prompts/20260322-174452-086-chapter_structure_generation_prompt.txt new file mode 100644 index 00000000..49ba0ee5 --- /dev/null +++ b/prompts/20260322-174452-086-chapter_structure_generation_prompt.txt @@ -0,0 +1,119 @@ +# TASK: Plan Document Structure (Documents + Chapters) + +This is a STRUCTURE PLANNING task. You define which documents to create and which chapters each document will have. +Chapter CONTENT will be generated in a later step - here you only plan the STRUCTURE and assign content references. +Return EXACTLY ONE complete JSON object. Do not generate multiple JSON objects, alternatives, or variations. Do not use separators like "---" between JSON objects. + +## USER REQUEST (for context) +``` +entwirf eine email mit dem inhalt des files davor +``` + +## AVAILABLE CONTENT PARTS + +(No content parts available) + +## CONTENT ASSIGNMENT RULE + +CRITICAL: Every chapter MUST have contentParts assigned if it relates to documents/images/data from the user request. +If the user request mentions documents/images/data, then EVERY chapter that generates content related to those references MUST assign the relevant ContentParts explicitly. + +Assignment logic: +- If chapter DISPLAYS a document/image → assign "object" format ContentPart with "caption" +- If chapter generates text content ABOUT a document/image/data → assign ContentPart with "instruction": + - Prefer "extracted" format if available (contains analyzed/extracted content) + - If only "object" format is available, use "object" format with "instruction" (to write ABOUT the image/document) +- If chapter's generationHint or purpose relates to a document/image/data mentioned in user request → it MUST have ContentParts assigned +- Multiple chapters might assign the same ContentPart (e.g., one chapter displays image, another writes about it) +- Use ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above +- Empty contentParts are only allowed if chapter generates content WITHOUT referencing any documents/images/data from the user request + +CRITICAL RULE: If the user request mentions BOTH: + a) Documents/images/data (listed in AVAILABLE CONTENT PARTS above), AND + b) Generic content types (article text, main content, body text, etc.) +Then chapters that generate those generic content types MUST assign the relevant ContentParts, because the content should relate to or be based on the provided documents/images/data. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential information only +- AVOID verbose, lengthy, or repetitive text - be concise and direct +- Prioritize FACTS over filler text - no introductions like "In this chapter..." +- Minimize system resources: shorter content = faster processing +- Quality over quantity: precise, meaningful content rather than padding + +## CHAPTER STRUCTURE REQUIREMENTS +- Generate chapters based on USER REQUEST - analyze what structure the user wants +- Create ONLY the minimum chapters needed to cover the user's request - avoid over-structuring +- HARD LIMIT: Maximum 7 chapters per document. If the topic can be covered in fewer, prefer fewer. Combine related topics into single chapters rather than creating many small ones. +- IMPORTANT: Each chapter MUST have ALL these fields: + - id: Unique identifier (e.g., "chapter_1") + - level: Heading level (1, 2, 3, etc.) + - title: Chapter title + - contentParts: Object mapping ContentPart IDs to usage instructions (MUST assign if chapter relates to documents/data from user request) + - generationHint: Description of what content to generate (including formatting/styling requirements) + - sections: Empty array [] (REQUIRED - sections are generated in next phase) +- contentParts: {"partId": {"instruction": "..."} or {"caption": "..."} or both} - Assign ContentParts as required by CONTENT ASSIGNMENT RULE above +- The "instruction" field for each ContentPart MUST contain ALL relevant details from the USER REQUEST that apply to content extraction for this specific chapter. Include all formatting rules, data requirements, constraints, and specifications mentioned in the user request that are relevant for processing this ContentPart in this chapter. +- generationHint: Keep CONCISE but include relevant details from the USER REQUEST. Focus on WHAT to generate, not HOW to phrase it verbosely. +- The number of chapters depends on the user request - create only what is requested. Do NOT create chapters for topics without available data. + +CRITICAL: Only create chapters for CONTENT sections, not for formatting/styling requirements. Formatting/styling requirements to be included in each generationHint if needed. + +## DOCUMENT STRUCTURE + +For each document, determine: +- outputFormat: From USER REQUEST (explicit mention or infer from purpose/content type). Default: "txt". Multiple documents can have different formats. +- language: From USER REQUEST (map to ISO 639-1: de, en, fr, it...). Default: "de". Multiple documents can have different languages. +- chapters: Structure appropriately for the format (e.g., pptx=slides, docx=sections, xlsx=worksheets). Match format capabilities and constraints. + +Required JSON fields: +- metadata: {"title": "...", "language": "..."} +- documents: Array with id, title, filename, outputFormat, language, chapters[] +- chapters: Array with id, level, title, contentParts, generationHint, sections[] + +EXAMPLE STRUCTURE (for reference only - adapt to user request): +{ + "metadata": { + "title": "Document Title", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "Document Title", + "filename": "document.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Chapter Title", + "contentParts": { + "extracted_part_id": { + "instruction": "Use extracted content with ALL relevant details from user request" + } + }, + "generationHint": "Detailed description including ALL relevant details from user request for this chapter", + "sections": [] + } + ] + }] +} + +CRITICAL INSTRUCTIONS: +- Generate chapters based on USER REQUEST, NOT based on the example above +- The example shows the JSON structure format, NOT the required chapters +- Create only the chapters that match the user's request +- Adapt chapter titles and structure to match the user's specific request +- Determine outputFormat and language for each document by analyzing the USER REQUEST above +- The example shows placeholders "txt" and "de" - YOU MUST REPLACE THESE with actual values determined from the USER REQUEST + +MANDATORY CONTENT ASSIGNMENT CHECK: +For each chapter, verify: +1. Does the user request mention documents/images/data? (e.g., "photo", "image", "document", "data", "based on", "about") +2. Does this chapter's generationHint, title, or purpose relate to those documents/images/data mentioned in step 1? + - Examples: "article about the photo", "text describing the image", "analysis of the document", "content based on the data" + - Even if chapter doesn't explicitly say "about the image", if user request mentions both the image AND this chapter's content type → relate them +3. If YES to both → chapter MUST have contentParts assigned (cannot be empty {}) +4. If ContentPart is "object" format and chapter needs to write ABOUT it → assign with "instruction" field, not just "caption" + +OUTPUT FORMAT: Start with { and end with }. Do NOT use markdown code fences (```json). Do NOT add explanatory text before or after the JSON. Return ONLY the JSON object itself. diff --git a/prompts/20260322-174456-087-chapter_structure_generation_response.txt b/prompts/20260322-174456-087-chapter_structure_generation_response.txt new file mode 100644 index 00000000..7a3071e3 --- /dev/null +++ b/prompts/20260322-174456-087-chapter_structure_generation_response.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail mit einer Begrüßung und Vorstellung des Themas.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptteil", + "contentParts": {}, + "generationHint": "Hauptinhalt der E-Mail, der die wesentlichen Informationen und Anliegen beschreibt.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schluss", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung und einem freundlichen Gruß.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174456-088-chapter_structure_generation_final_result.txt b/prompts/20260322-174456-088-chapter_structure_generation_final_result.txt new file mode 100644 index 00000000..7a3071e3 --- /dev/null +++ b/prompts/20260322-174456-088-chapter_structure_generation_final_result.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail mit einer Begrüßung und Vorstellung des Themas.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptteil", + "contentParts": {}, + "generationHint": "Hauptinhalt der E-Mail, der die wesentlichen Informationen und Anliegen beschreibt.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schluss", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung und einem freundlichen Gruß.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174456-089-chapter_structure_chapter_1_prompt.txt b/prompts/20260322-174456-089-chapter_structure_chapter_1_prompt.txt new file mode 100644 index 00000000..f3725e73 --- /dev/null +++ b/prompts/20260322-174456-089-chapter_structure_chapter_1_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Einleitung (Level 1, ID: chapter_1) +GENERATION HINT: Einleitung der E-Mail mit einer Begrüßung und Vorstellung des Themas. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-174456-090-chapter_structure_chapter_2_prompt.txt b/prompts/20260322-174456-090-chapter_structure_chapter_2_prompt.txt new file mode 100644 index 00000000..b9e70526 --- /dev/null +++ b/prompts/20260322-174456-090-chapter_structure_chapter_2_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Hauptteil (Level 1, ID: chapter_2) +GENERATION HINT: Hauptinhalt der E-Mail, der die wesentlichen Informationen und Anliegen beschreibt. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-174457-091-chapter_structure_chapter_3_prompt.txt b/prompts/20260322-174457-091-chapter_structure_chapter_3_prompt.txt new file mode 100644 index 00000000..66689f56 --- /dev/null +++ b/prompts/20260322-174457-091-chapter_structure_chapter_3_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Schluss (Level 1, ID: chapter_3) +GENERATION HINT: Abschluss der E-Mail mit einer Zusammenfassung und einem freundlichen Gruß. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-174458-092-chapter_structure_chapter_1_response.txt b/prompts/20260322-174458-092-chapter_structure_chapter_1_response.txt new file mode 100644 index 00000000..c4990c8d --- /dev/null +++ b/prompts/20260322-174458-092-chapter_structure_chapter_1_response.txt @@ -0,0 +1,16 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung mit Begrüßung und Vorstellung des Themas", + "useAiCall": true, + "elements": [ + "Herzlich willkommen zu unserer Einführung in das Thema. In dieser Einleitung möchten wir Ihnen einen Überblick über die wichtigsten Aspekte und Ziele geben, die wir in den folgenden Kapiteln behandeln werden. Unser Ziel ist es, Ihnen ein umfassendes Verständnis für die Thematik zu vermitteln und Sie auf die kommenden Inhalte vorzubereiten." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-174459-093-chapter_structure_chapter_3_response.txt b/prompts/20260322-174459-093-chapter_structure_chapter_3_response.txt new file mode 100644 index 00000000..5116e5d6 --- /dev/null +++ b/prompts/20260322-174459-093-chapter_structure_chapter_3_response.txt @@ -0,0 +1,26 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung der wichtigsten Punkte.", + "useAiCall": true, + "elements": [ + "Zum Abschluss möchten wir die wichtigsten Punkte unserer E-Mail zusammenfassen. Wir haben die aktuellen Entwicklungen und zukünftigen Schritte besprochen, um sicherzustellen, dass alle Beteiligten gut informiert sind. Sollten Sie weitere Fragen haben, zögern Sie bitte nicht, uns zu kontaktieren." + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Freundlicher Gruß zum Abschluss der E-Mail.", + "useAiCall": true, + "elements": [ + "Wir danken Ihnen für Ihre Aufmerksamkeit und freuen uns auf eine erfolgreiche Zusammenarbeit. Mit freundlichen Grüßen, [Ihr Name]" + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-174502-094-chapter_structure_chapter_2_response.txt b/prompts/20260322-174502-094-chapter_structure_chapter_2_response.txt new file mode 100644 index 00000000..9727e4de --- /dev/null +++ b/prompts/20260322-174502-094-chapter_structure_chapter_2_response.txt @@ -0,0 +1,49 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung und Kontext des Hauptinhalts der E-Mail", + "useAiCall": false, + "elements": [ + "In diesem Abschnitt wird der Hauptinhalt der E-Mail vorgestellt, der die wesentlichen Informationen und Anliegen beschreibt. Ziel ist es, dem Empfänger einen klaren Überblick über das Thema und die wichtigsten Punkte zu geben." + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Auflistung der Hauptpunkte oder Anliegen der E-Mail", + "useAiCall": false, + "elements": [ + "Hauptanliegen des Absenders", + "Wichtige Informationen oder Daten, die mitgeteilt werden müssen", + "Fragen oder Anliegen, die geklärt werden sollen", + "Erwartungen oder gewünschte Handlungen des Empfängers" + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Beschreibung eines spezifischen Anliegens oder Themas", + "useAiCall": false, + "elements": [ + "Ein spezifisches Anliegen oder Thema wird hier detailliert beschrieben, um dem Empfänger ein tieferes Verständnis zu ermöglichen. Dies kann beispielsweise eine Erklärung eines Problems oder die Darstellung einer Lösung sein." + ] + }, + { + "id": "section_4", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung und Schlussfolgerung des Hauptinhalts", + "useAiCall": false, + "elements": [ + "In der Zusammenfassung werden die wichtigsten Punkte des Hauptinhalts noch einmal hervorgehoben. Der Abschnitt endet mit einer Schlussfolgerung oder einem Aufruf zum Handeln, um den Empfänger zu einer Reaktion zu bewegen." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-174502-095-chapter_1_section_section_1_prompt.txt b/prompts/20260322-174502-095-chapter_1_section_section_1_prompt.txt new file mode 100644 index 00000000..9fdf1977 --- /dev/null +++ b/prompts/20260322-174502-095-chapter_1_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einleitung mit Begrüßung und Vorstellung des Themas +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-174502-096-chapter_2_section_section_1_prompt.txt b/prompts/20260322-174502-096-chapter_2_section_section_1_prompt.txt new file mode 100644 index 00000000..e2b3b34a --- /dev/null +++ b/prompts/20260322-174502-096-chapter_2_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einleitung und Kontext des Hauptinhalts der E-Mail +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-174502-097-chapter_2_section_section_2_prompt.txt b/prompts/20260322-174502-097-chapter_2_section_section_2_prompt.txt new file mode 100644 index 00000000..2cbf1865 --- /dev/null +++ b/prompts/20260322-174502-097-chapter_2_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: bullet_list +- Generation Hint: Auflistung der Hauptpunkte oder Anliegen der E-Mail +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-174502-098-chapter_2_section_section_3_prompt.txt b/prompts/20260322-174502-098-chapter_2_section_section_3_prompt.txt new file mode 100644 index 00000000..7bca8623 --- /dev/null +++ b/prompts/20260322-174502-098-chapter_2_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: paragraph +- Generation Hint: Detaillierte Beschreibung eines spezifischen Anliegens oder Themas +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_4 (paragraph): + diff --git a/prompts/20260322-174502-099-chapter_2_section_section_4_prompt.txt b/prompts/20260322-174502-099-chapter_2_section_section_4_prompt.txt new file mode 100644 index 00000000..4905c185 --- /dev/null +++ b/prompts/20260322-174502-099-chapter_2_section_section_4_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_4 +- Content Type: paragraph +- Generation Hint: Zusammenfassung und Schlussfolgerung des Hauptinhalts +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_2 (bullet_list): + +Following sections: +- section_4 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-174504-100-chapter_2_section_section_2_response.txt b/prompts/20260322-174504-100-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..15190d01 --- /dev/null +++ b/prompts/20260322-174504-100-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Anfrage zur Klärung eines offenen Punktes", + "Vorschlag für einen gemeinsamen Termin", + "Bitte um Rückmeldung bis Ende der Woche", + "Erinnerung an die bevorstehende Frist", + "Bereitstellung zusätzlicher Informationen auf Anfrage" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174504-101-chapter_2_section_section_2_response.txt b/prompts/20260322-174504-101-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..15190d01 --- /dev/null +++ b/prompts/20260322-174504-101-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Anfrage zur Klärung eines offenen Punktes", + "Vorschlag für einen gemeinsamen Termin", + "Bitte um Rückmeldung bis Ende der Woche", + "Erinnerung an die bevorstehende Frist", + "Bereitstellung zusätzlicher Informationen auf Anfrage" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174504-102-chapter_3_section_section_1_prompt.txt b/prompts/20260322-174504-102-chapter_3_section_section_1_prompt.txt new file mode 100644 index 00000000..5eb4fd67 --- /dev/null +++ b/prompts/20260322-174504-102-chapter_3_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Abschluss der E-Mail mit einer Zusammenfassung der wichtigsten Punkte. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-174504-103-chapter_2_section_section_1_response.txt b/prompts/20260322-174504-103-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..112376dd --- /dev/null +++ b/prompts/20260322-174504-103-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Sehr geehrte Damen und Herren, wir möchten Ihnen einige wichtige Informationen mitteilen, die für Ihre zukünftigen Entscheidungen von Bedeutung sein könnten. Bitte nehmen Sie sich einen Moment Zeit, um die folgenden Details zu lesen, die Ihnen helfen werden, die nächsten Schritte zu planen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174504-104-chapter_2_section_section_1_response.txt b/prompts/20260322-174504-104-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..112376dd --- /dev/null +++ b/prompts/20260322-174504-104-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Sehr geehrte Damen und Herren, wir möchten Ihnen einige wichtige Informationen mitteilen, die für Ihre zukünftigen Entscheidungen von Bedeutung sein könnten. Bitte nehmen Sie sich einen Moment Zeit, um die folgenden Details zu lesen, die Ihnen helfen werden, die nächsten Schritte zu planen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174504-105-chapter_3_section_section_2_prompt.txt b/prompts/20260322-174504-105-chapter_3_section_section_2_prompt.txt new file mode 100644 index 00000000..52954501 --- /dev/null +++ b/prompts/20260322-174504-105-chapter_3_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: paragraph +- Generation Hint: Freundlicher Gruß zum Abschluss der E-Mail. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-174504-106-chapter_2_section_section_3_response.txt b/prompts/20260322-174504-106-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..1c48f504 --- /dev/null +++ b/prompts/20260322-174504-106-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In der heutigen digitalen Welt ist die Sicherheit von Informationen von größter Bedeutung. Unternehmen müssen sicherstellen, dass ihre Daten vor unbefugtem Zugriff geschützt sind. Dies erfordert den Einsatz fortschrittlicher Verschlüsselungstechnologien und strenger Zugriffsrichtlinien. Darüber hinaus ist es wichtig, regelmäßige Sicherheitsüberprüfungen durchzuführen und Mitarbeiter im Umgang mit sensiblen Daten zu schulen. Nur durch eine umfassende Sicherheitsstrategie können Unternehmen ihre Daten effektiv schützen und das Vertrauen ihrer Kunden bewahren." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174504-107-chapter_2_section_section_3_response.txt b/prompts/20260322-174504-107-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..1c48f504 --- /dev/null +++ b/prompts/20260322-174504-107-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In der heutigen digitalen Welt ist die Sicherheit von Informationen von größter Bedeutung. Unternehmen müssen sicherstellen, dass ihre Daten vor unbefugtem Zugriff geschützt sind. Dies erfordert den Einsatz fortschrittlicher Verschlüsselungstechnologien und strenger Zugriffsrichtlinien. Darüber hinaus ist es wichtig, regelmäßige Sicherheitsüberprüfungen durchzuführen und Mitarbeiter im Umgang mit sensiblen Daten zu schulen. Nur durch eine umfassende Sicherheitsstrategie können Unternehmen ihre Daten effektiv schützen und das Vertrauen ihrer Kunden bewahren." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174504-108-chapter_1_section_section_1_response.txt b/prompts/20260322-174504-108-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..eaadfde6 --- /dev/null +++ b/prompts/20260322-174504-108-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Herzlich willkommen zu unserer Einführung in das Thema. Wir freuen uns, Ihnen einen Überblick über die wesentlichen Aspekte zu geben, die in den folgenden Abschnitten behandelt werden. Unser Ziel ist es, Ihnen ein klares Verständnis zu vermitteln und die wichtigsten Punkte prägnant darzustellen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174504-109-chapter_1_section_section_1_response.txt b/prompts/20260322-174504-109-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..eaadfde6 --- /dev/null +++ b/prompts/20260322-174504-109-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Herzlich willkommen zu unserer Einführung in das Thema. Wir freuen uns, Ihnen einen Überblick über die wesentlichen Aspekte zu geben, die in den folgenden Abschnitten behandelt werden. Unser Ziel ist es, Ihnen ein klares Verständnis zu vermitteln und die wichtigsten Punkte prägnant darzustellen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174504-110-chapter_2_section_section_4_response.txt b/prompts/20260322-174504-110-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..276e4f05 --- /dev/null +++ b/prompts/20260322-174504-110-chapter_2_section_section_4_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass die im vorherigen Dokument behandelten Themen klar und prägnant dargestellt wurden. Die Hauptpunkte umfassen die wesentlichen Aspekte des Themas und bieten eine fundierte Grundlage für weitere Diskussionen oder Entscheidungen. Die Schlussfolgerungen basieren auf den analysierten Daten und bieten wertvolle Einblicke, die für zukünftige Entwicklungen von Bedeutung sein können. Insgesamt wird ein umfassendes Verständnis des behandelten Themas vermittelt, das sowohl für Fachleute als auch für Interessierte von Nutzen ist." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174504-111-chapter_2_section_section_4_response.txt b/prompts/20260322-174504-111-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..276e4f05 --- /dev/null +++ b/prompts/20260322-174504-111-chapter_2_section_section_4_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass die im vorherigen Dokument behandelten Themen klar und prägnant dargestellt wurden. Die Hauptpunkte umfassen die wesentlichen Aspekte des Themas und bieten eine fundierte Grundlage für weitere Diskussionen oder Entscheidungen. Die Schlussfolgerungen basieren auf den analysierten Daten und bieten wertvolle Einblicke, die für zukünftige Entwicklungen von Bedeutung sein können. Insgesamt wird ein umfassendes Verständnis des behandelten Themas vermittelt, das sowohl für Fachleute als auch für Interessierte von Nutzen ist." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174505-112-chapter_3_section_section_2_response.txt b/prompts/20260322-174505-112-chapter_3_section_section_2_response.txt new file mode 100644 index 00000000..b4b5eaf6 --- /dev/null +++ b/prompts/20260322-174505-112-chapter_3_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Mit freundlichen Grüßen,\n\n[Ihr Name]" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174505-113-chapter_3_section_section_2_response.txt b/prompts/20260322-174505-113-chapter_3_section_section_2_response.txt new file mode 100644 index 00000000..b4b5eaf6 --- /dev/null +++ b/prompts/20260322-174505-113-chapter_3_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Mit freundlichen Grüßen,\n\n[Ihr Name]" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174506-114-chapter_3_section_section_1_response.txt b/prompts/20260322-174506-114-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..7b22b291 --- /dev/null +++ b/prompts/20260322-174506-114-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass die besprochenen Punkte von großer Bedeutung für den Erfolg unseres Projekts sind. Wir haben die wichtigsten Meilensteine und Verantwortlichkeiten festgelegt, um sicherzustellen, dass alle Teammitglieder auf dem gleichen Stand sind. Bitte überprüfen Sie die angehängten Dokumente für weitere Details und zögern Sie nicht, bei Fragen oder Anmerkungen Kontakt aufzunehmen. Vielen Dank für Ihre Aufmerksamkeit und Unterstützung." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174506-115-chapter_3_section_section_1_response.txt b/prompts/20260322-174506-115-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..7b22b291 --- /dev/null +++ b/prompts/20260322-174506-115-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass die besprochenen Punkte von großer Bedeutung für den Erfolg unseres Projekts sind. Wir haben die wichtigsten Meilensteine und Verantwortlichkeiten festgelegt, um sicherzustellen, dass alle Teammitglieder auf dem gleichen Stand sind. Bitte überprüfen Sie die angehängten Dokumente für weitere Details und zögern Sie nicht, bei Fragen oder Anmerkungen Kontakt aufzunehmen. Vielen Dank für Ihre Aufmerksamkeit und Unterstützung." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-174506-116-document_generation_response.txt b/prompts/20260322-174506-116-document_generation_response.txt new file mode 100644 index 00000000..21f1d9b6 --- /dev/null +++ b/prompts/20260322-174506-116-document_generation_response.txt @@ -0,0 +1,170 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "sections": [ + { + "id": "chapter_1_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Einleitung", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung mit Begrüßung und Vorstellung des Themas", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Herzlich willkommen zu unserer Einführung in das Thema. Wir freuen uns, Ihnen einen Überblick über die wesentlichen Aspekte zu geben, die in den folgenden Abschnitten behandelt werden. Unser Ziel ist es, Ihnen ein klares Verständnis zu vermitteln und die wichtigsten Punkte prägnant darzustellen." + } + } + ] + }, + { + "id": "chapter_2_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Hauptteil", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung und Kontext des Hauptinhalts der E-Mail", + "useAiCall": false, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Sehr geehrte Damen und Herren, wir möchten Ihnen einige wichtige Informationen mitteilen, die für Ihre zukünftigen Entscheidungen von Bedeutung sein könnten. Bitte nehmen Sie sich einen Moment Zeit, um die folgenden Details zu lesen, die Ihnen helfen werden, die nächsten Schritte zu planen." + } + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Auflistung der Hauptpunkte oder Anliegen der E-Mail", + "useAiCall": false, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Anfrage zur Klärung eines offenen Punktes", + "Vorschlag für einen gemeinsamen Termin", + "Bitte um Rückmeldung bis Ende der Woche", + "Erinnerung an die bevorstehende Frist", + "Bereitstellung zusätzlicher Informationen auf Anfrage" + ] + } + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Beschreibung eines spezifischen Anliegens oder Themas", + "useAiCall": false, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In der heutigen digitalen Welt ist die Sicherheit von Informationen von größter Bedeutung. Unternehmen müssen sicherstellen, dass ihre Daten vor unbefugtem Zugriff geschützt sind. Dies erfordert den Einsatz fortschrittlicher Verschlüsselungstechnologien und strenger Zugriffsrichtlinien. Darüber hinaus ist es wichtig, regelmäßige Sicherheitsüberprüfungen durchzuführen und Mitarbeiter im Umgang mit sensiblen Daten zu schulen. Nur durch eine umfassende Sicherheitsstrategie können Unternehmen ihre Daten effektiv schützen und das Vertrauen ihrer Kunden bewahren." + } + } + ] + }, + { + "id": "section_4", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung und Schlussfolgerung des Hauptinhalts", + "useAiCall": false, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass die im vorherigen Dokument behandelten Themen klar und prägnant dargestellt wurden. Die Hauptpunkte umfassen die wesentlichen Aspekte des Themas und bieten eine fundierte Grundlage für weitere Diskussionen oder Entscheidungen. Die Schlussfolgerungen basieren auf den analysierten Daten und bieten wertvolle Einblicke, die für zukünftige Entwicklungen von Bedeutung sein können. Insgesamt wird ein umfassendes Verständnis des behandelten Themas vermittelt, das sowohl für Fachleute als auch für Interessierte von Nutzen ist." + } + } + ] + }, + { + "id": "chapter_3_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Schluss", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung der wichtigsten Punkte.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass die besprochenen Punkte von großer Bedeutung für den Erfolg unseres Projekts sind. Wir haben die wichtigsten Meilensteine und Verantwortlichkeiten festgelegt, um sicherzustellen, dass alle Teammitglieder auf dem gleichen Stand sind. Bitte überprüfen Sie die angehängten Dokumente für weitere Details und zögern Sie nicht, bei Fragen oder Anmerkungen Kontakt aufzunehmen. Vielen Dank für Ihre Aufmerksamkeit und Unterstützung." + } + } + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Freundlicher Gruß zum Abschluss der E-Mail.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Mit freundlichen Grüßen,\n\n[Ihr Name]" + } + } + ] + } + ], + "metadata": { + "outputStyle": "document" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175107-117-chapter_structure_generation_prompt.txt b/prompts/20260322-175107-117-chapter_structure_generation_prompt.txt new file mode 100644 index 00000000..49ba0ee5 --- /dev/null +++ b/prompts/20260322-175107-117-chapter_structure_generation_prompt.txt @@ -0,0 +1,119 @@ +# TASK: Plan Document Structure (Documents + Chapters) + +This is a STRUCTURE PLANNING task. You define which documents to create and which chapters each document will have. +Chapter CONTENT will be generated in a later step - here you only plan the STRUCTURE and assign content references. +Return EXACTLY ONE complete JSON object. Do not generate multiple JSON objects, alternatives, or variations. Do not use separators like "---" between JSON objects. + +## USER REQUEST (for context) +``` +entwirf eine email mit dem inhalt des files davor +``` + +## AVAILABLE CONTENT PARTS + +(No content parts available) + +## CONTENT ASSIGNMENT RULE + +CRITICAL: Every chapter MUST have contentParts assigned if it relates to documents/images/data from the user request. +If the user request mentions documents/images/data, then EVERY chapter that generates content related to those references MUST assign the relevant ContentParts explicitly. + +Assignment logic: +- If chapter DISPLAYS a document/image → assign "object" format ContentPart with "caption" +- If chapter generates text content ABOUT a document/image/data → assign ContentPart with "instruction": + - Prefer "extracted" format if available (contains analyzed/extracted content) + - If only "object" format is available, use "object" format with "instruction" (to write ABOUT the image/document) +- If chapter's generationHint or purpose relates to a document/image/data mentioned in user request → it MUST have ContentParts assigned +- Multiple chapters might assign the same ContentPart (e.g., one chapter displays image, another writes about it) +- Use ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above +- Empty contentParts are only allowed if chapter generates content WITHOUT referencing any documents/images/data from the user request + +CRITICAL RULE: If the user request mentions BOTH: + a) Documents/images/data (listed in AVAILABLE CONTENT PARTS above), AND + b) Generic content types (article text, main content, body text, etc.) +Then chapters that generate those generic content types MUST assign the relevant ContentParts, because the content should relate to or be based on the provided documents/images/data. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential information only +- AVOID verbose, lengthy, or repetitive text - be concise and direct +- Prioritize FACTS over filler text - no introductions like "In this chapter..." +- Minimize system resources: shorter content = faster processing +- Quality over quantity: precise, meaningful content rather than padding + +## CHAPTER STRUCTURE REQUIREMENTS +- Generate chapters based on USER REQUEST - analyze what structure the user wants +- Create ONLY the minimum chapters needed to cover the user's request - avoid over-structuring +- HARD LIMIT: Maximum 7 chapters per document. If the topic can be covered in fewer, prefer fewer. Combine related topics into single chapters rather than creating many small ones. +- IMPORTANT: Each chapter MUST have ALL these fields: + - id: Unique identifier (e.g., "chapter_1") + - level: Heading level (1, 2, 3, etc.) + - title: Chapter title + - contentParts: Object mapping ContentPart IDs to usage instructions (MUST assign if chapter relates to documents/data from user request) + - generationHint: Description of what content to generate (including formatting/styling requirements) + - sections: Empty array [] (REQUIRED - sections are generated in next phase) +- contentParts: {"partId": {"instruction": "..."} or {"caption": "..."} or both} - Assign ContentParts as required by CONTENT ASSIGNMENT RULE above +- The "instruction" field for each ContentPart MUST contain ALL relevant details from the USER REQUEST that apply to content extraction for this specific chapter. Include all formatting rules, data requirements, constraints, and specifications mentioned in the user request that are relevant for processing this ContentPart in this chapter. +- generationHint: Keep CONCISE but include relevant details from the USER REQUEST. Focus on WHAT to generate, not HOW to phrase it verbosely. +- The number of chapters depends on the user request - create only what is requested. Do NOT create chapters for topics without available data. + +CRITICAL: Only create chapters for CONTENT sections, not for formatting/styling requirements. Formatting/styling requirements to be included in each generationHint if needed. + +## DOCUMENT STRUCTURE + +For each document, determine: +- outputFormat: From USER REQUEST (explicit mention or infer from purpose/content type). Default: "txt". Multiple documents can have different formats. +- language: From USER REQUEST (map to ISO 639-1: de, en, fr, it...). Default: "de". Multiple documents can have different languages. +- chapters: Structure appropriately for the format (e.g., pptx=slides, docx=sections, xlsx=worksheets). Match format capabilities and constraints. + +Required JSON fields: +- metadata: {"title": "...", "language": "..."} +- documents: Array with id, title, filename, outputFormat, language, chapters[] +- chapters: Array with id, level, title, contentParts, generationHint, sections[] + +EXAMPLE STRUCTURE (for reference only - adapt to user request): +{ + "metadata": { + "title": "Document Title", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "Document Title", + "filename": "document.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Chapter Title", + "contentParts": { + "extracted_part_id": { + "instruction": "Use extracted content with ALL relevant details from user request" + } + }, + "generationHint": "Detailed description including ALL relevant details from user request for this chapter", + "sections": [] + } + ] + }] +} + +CRITICAL INSTRUCTIONS: +- Generate chapters based on USER REQUEST, NOT based on the example above +- The example shows the JSON structure format, NOT the required chapters +- Create only the chapters that match the user's request +- Adapt chapter titles and structure to match the user's specific request +- Determine outputFormat and language for each document by analyzing the USER REQUEST above +- The example shows placeholders "txt" and "de" - YOU MUST REPLACE THESE with actual values determined from the USER REQUEST + +MANDATORY CONTENT ASSIGNMENT CHECK: +For each chapter, verify: +1. Does the user request mention documents/images/data? (e.g., "photo", "image", "document", "data", "based on", "about") +2. Does this chapter's generationHint, title, or purpose relate to those documents/images/data mentioned in step 1? + - Examples: "article about the photo", "text describing the image", "analysis of the document", "content based on the data" + - Even if chapter doesn't explicitly say "about the image", if user request mentions both the image AND this chapter's content type → relate them +3. If YES to both → chapter MUST have contentParts assigned (cannot be empty {}) +4. If ContentPart is "object" format and chapter needs to write ABOUT it → assign with "instruction" field, not just "caption" + +OUTPUT FORMAT: Start with { and end with }. Do NOT use markdown code fences (```json). Do NOT add explanatory text before or after the JSON. Return ONLY the JSON object itself. diff --git a/prompts/20260322-175109-118-chapter_structure_generation_response.txt b/prompts/20260322-175109-118-chapter_structure_generation_response.txt new file mode 100644 index 00000000..382c5f1d --- /dev/null +++ b/prompts/20260322-175109-118-chapter_structure_generation_response.txt @@ -0,0 +1,25 @@ +{ + "metadata": { + "title": "Email Draft", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Draft", + "filename": "email.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Email Content", + "contentParts": {}, + "generationHint": "Draft an email in German based on the user's request. Include a greeting, main message, and closing.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175109-119-chapter_structure_generation_final_result.txt b/prompts/20260322-175109-119-chapter_structure_generation_final_result.txt new file mode 100644 index 00000000..382c5f1d --- /dev/null +++ b/prompts/20260322-175109-119-chapter_structure_generation_final_result.txt @@ -0,0 +1,25 @@ +{ + "metadata": { + "title": "Email Draft", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Draft", + "filename": "email.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Email Content", + "contentParts": {}, + "generationHint": "Draft an email in German based on the user's request. Include a greeting, main message, and closing.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175109-120-chapter_structure_chapter_1_prompt.txt b/prompts/20260322-175109-120-chapter_structure_chapter_1_prompt.txt new file mode 100644 index 00000000..66e0b5af --- /dev/null +++ b/prompts/20260322-175109-120-chapter_structure_chapter_1_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Email Content (Level 1, ID: chapter_1) +GENERATION HINT: Draft an email in German based on the user's request. Include a greeting, main message, and closing. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-175111-121-chapter_structure_chapter_1_response.txt b/prompts/20260322-175111-121-chapter_structure_chapter_1_response.txt new file mode 100644 index 00000000..1ee5368c --- /dev/null +++ b/prompts/20260322-175111-121-chapter_structure_chapter_1_response.txt @@ -0,0 +1,19 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Draft an email in German including a greeting, main message, and closing.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "text": "Sehr geehrte Damen und Herren,\n\nich hoffe, diese Nachricht trifft Sie wohl. Ich möchte Ihnen mitteilen, dass unser Team an einem neuen Projekt arbeitet, das voraussichtlich im nächsten Quartal abgeschlossen wird. Wir sind zuversichtlich, dass dieses Projekt erhebliche Vorteile für unser Unternehmen bringen wird.\n\nFalls Sie Fragen oder Anmerkungen haben, zögern Sie bitte nicht, mich zu kontaktieren.\n\nMit freundlichen Grüßen,\n\n[Ihr Name]" + } + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-175111-122-chapter_1_section_section_1_prompt.txt b/prompts/20260322-175111-122-chapter_1_section_section_1_prompt.txt new file mode 100644 index 00000000..403d1fc7 --- /dev/null +++ b/prompts/20260322-175111-122-chapter_1_section_section_1_prompt.txt @@ -0,0 +1,50 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Draft an email in German including a greeting, main message, and closing. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + diff --git a/prompts/20260322-175114-123-chapter_1_section_section_1_response.txt b/prompts/20260322-175114-123-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..efd5b22c --- /dev/null +++ b/prompts/20260322-175114-123-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Betreff: Anfrage bezüglich unserer letzten Besprechung\n\nSehr geehrte Damen und Herren,\n\nich hoffe, diese Nachricht trifft Sie wohl. Ich möchte mich auf unsere letzte Besprechung beziehen und einige Punkte klären, die wir besprochen haben. Es wäre hilfreich, wenn wir die nächsten Schritte und die damit verbundenen Fristen festlegen könnten. Bitte lassen Sie mich wissen, wann Sie Zeit für ein weiteres Treffen haben.\n\nVielen Dank im Voraus für Ihre Unterstützung.\n\nMit freundlichen Grüßen,\n\n[Ihr Name]" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175114-124-chapter_1_section_section_1_response.txt b/prompts/20260322-175114-124-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..efd5b22c --- /dev/null +++ b/prompts/20260322-175114-124-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Betreff: Anfrage bezüglich unserer letzten Besprechung\n\nSehr geehrte Damen und Herren,\n\nich hoffe, diese Nachricht trifft Sie wohl. Ich möchte mich auf unsere letzte Besprechung beziehen und einige Punkte klären, die wir besprochen haben. Es wäre hilfreich, wenn wir die nächsten Schritte und die damit verbundenen Fristen festlegen könnten. Bitte lassen Sie mich wissen, wann Sie Zeit für ein weiteres Treffen haben.\n\nVielen Dank im Voraus für Ihre Unterstützung.\n\nMit freundlichen Grüßen,\n\n[Ihr Name]" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175114-125-document_generation_response.txt b/prompts/20260322-175114-125-document_generation_response.txt new file mode 100644 index 00000000..a0f71747 --- /dev/null +++ b/prompts/20260322-175114-125-document_generation_response.txt @@ -0,0 +1,48 @@ +{ + "metadata": { + "title": "Email Draft", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Draft", + "filename": "email.txt", + "outputFormat": "txt", + "language": "de", + "sections": [ + { + "id": "chapter_1_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Email Content", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Draft an email in German including a greeting, main message, and closing.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Betreff: Anfrage bezüglich unserer letzten Besprechung\n\nSehr geehrte Damen und Herren,\n\nich hoffe, diese Nachricht trifft Sie wohl. Ich möchte mich auf unsere letzte Besprechung beziehen und einige Punkte klären, die wir besprochen haben. Es wäre hilfreich, wenn wir die nächsten Schritte und die damit verbundenen Fristen festlegen könnten. Bitte lassen Sie mich wissen, wann Sie Zeit für ein weiteres Treffen haben.\n\nVielen Dank im Voraus für Ihre Unterstützung.\n\nMit freundlichen Grüßen,\n\n[Ihr Name]" + } + } + ] + } + ], + "metadata": { + "outputStyle": "document" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175649-126-chapter_structure_generation_prompt.txt b/prompts/20260322-175649-126-chapter_structure_generation_prompt.txt new file mode 100644 index 00000000..49ba0ee5 --- /dev/null +++ b/prompts/20260322-175649-126-chapter_structure_generation_prompt.txt @@ -0,0 +1,119 @@ +# TASK: Plan Document Structure (Documents + Chapters) + +This is a STRUCTURE PLANNING task. You define which documents to create and which chapters each document will have. +Chapter CONTENT will be generated in a later step - here you only plan the STRUCTURE and assign content references. +Return EXACTLY ONE complete JSON object. Do not generate multiple JSON objects, alternatives, or variations. Do not use separators like "---" between JSON objects. + +## USER REQUEST (for context) +``` +entwirf eine email mit dem inhalt des files davor +``` + +## AVAILABLE CONTENT PARTS + +(No content parts available) + +## CONTENT ASSIGNMENT RULE + +CRITICAL: Every chapter MUST have contentParts assigned if it relates to documents/images/data from the user request. +If the user request mentions documents/images/data, then EVERY chapter that generates content related to those references MUST assign the relevant ContentParts explicitly. + +Assignment logic: +- If chapter DISPLAYS a document/image → assign "object" format ContentPart with "caption" +- If chapter generates text content ABOUT a document/image/data → assign ContentPart with "instruction": + - Prefer "extracted" format if available (contains analyzed/extracted content) + - If only "object" format is available, use "object" format with "instruction" (to write ABOUT the image/document) +- If chapter's generationHint or purpose relates to a document/image/data mentioned in user request → it MUST have ContentParts assigned +- Multiple chapters might assign the same ContentPart (e.g., one chapter displays image, another writes about it) +- Use ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above +- Empty contentParts are only allowed if chapter generates content WITHOUT referencing any documents/images/data from the user request + +CRITICAL RULE: If the user request mentions BOTH: + a) Documents/images/data (listed in AVAILABLE CONTENT PARTS above), AND + b) Generic content types (article text, main content, body text, etc.) +Then chapters that generate those generic content types MUST assign the relevant ContentParts, because the content should relate to or be based on the provided documents/images/data. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential information only +- AVOID verbose, lengthy, or repetitive text - be concise and direct +- Prioritize FACTS over filler text - no introductions like "In this chapter..." +- Minimize system resources: shorter content = faster processing +- Quality over quantity: precise, meaningful content rather than padding + +## CHAPTER STRUCTURE REQUIREMENTS +- Generate chapters based on USER REQUEST - analyze what structure the user wants +- Create ONLY the minimum chapters needed to cover the user's request - avoid over-structuring +- HARD LIMIT: Maximum 7 chapters per document. If the topic can be covered in fewer, prefer fewer. Combine related topics into single chapters rather than creating many small ones. +- IMPORTANT: Each chapter MUST have ALL these fields: + - id: Unique identifier (e.g., "chapter_1") + - level: Heading level (1, 2, 3, etc.) + - title: Chapter title + - contentParts: Object mapping ContentPart IDs to usage instructions (MUST assign if chapter relates to documents/data from user request) + - generationHint: Description of what content to generate (including formatting/styling requirements) + - sections: Empty array [] (REQUIRED - sections are generated in next phase) +- contentParts: {"partId": {"instruction": "..."} or {"caption": "..."} or both} - Assign ContentParts as required by CONTENT ASSIGNMENT RULE above +- The "instruction" field for each ContentPart MUST contain ALL relevant details from the USER REQUEST that apply to content extraction for this specific chapter. Include all formatting rules, data requirements, constraints, and specifications mentioned in the user request that are relevant for processing this ContentPart in this chapter. +- generationHint: Keep CONCISE but include relevant details from the USER REQUEST. Focus on WHAT to generate, not HOW to phrase it verbosely. +- The number of chapters depends on the user request - create only what is requested. Do NOT create chapters for topics without available data. + +CRITICAL: Only create chapters for CONTENT sections, not for formatting/styling requirements. Formatting/styling requirements to be included in each generationHint if needed. + +## DOCUMENT STRUCTURE + +For each document, determine: +- outputFormat: From USER REQUEST (explicit mention or infer from purpose/content type). Default: "txt". Multiple documents can have different formats. +- language: From USER REQUEST (map to ISO 639-1: de, en, fr, it...). Default: "de". Multiple documents can have different languages. +- chapters: Structure appropriately for the format (e.g., pptx=slides, docx=sections, xlsx=worksheets). Match format capabilities and constraints. + +Required JSON fields: +- metadata: {"title": "...", "language": "..."} +- documents: Array with id, title, filename, outputFormat, language, chapters[] +- chapters: Array with id, level, title, contentParts, generationHint, sections[] + +EXAMPLE STRUCTURE (for reference only - adapt to user request): +{ + "metadata": { + "title": "Document Title", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "Document Title", + "filename": "document.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Chapter Title", + "contentParts": { + "extracted_part_id": { + "instruction": "Use extracted content with ALL relevant details from user request" + } + }, + "generationHint": "Detailed description including ALL relevant details from user request for this chapter", + "sections": [] + } + ] + }] +} + +CRITICAL INSTRUCTIONS: +- Generate chapters based on USER REQUEST, NOT based on the example above +- The example shows the JSON structure format, NOT the required chapters +- Create only the chapters that match the user's request +- Adapt chapter titles and structure to match the user's specific request +- Determine outputFormat and language for each document by analyzing the USER REQUEST above +- The example shows placeholders "txt" and "de" - YOU MUST REPLACE THESE with actual values determined from the USER REQUEST + +MANDATORY CONTENT ASSIGNMENT CHECK: +For each chapter, verify: +1. Does the user request mention documents/images/data? (e.g., "photo", "image", "document", "data", "based on", "about") +2. Does this chapter's generationHint, title, or purpose relate to those documents/images/data mentioned in step 1? + - Examples: "article about the photo", "text describing the image", "analysis of the document", "content based on the data" + - Even if chapter doesn't explicitly say "about the image", if user request mentions both the image AND this chapter's content type → relate them +3. If YES to both → chapter MUST have contentParts assigned (cannot be empty {}) +4. If ContentPart is "object" format and chapter needs to write ABOUT it → assign with "instruction" field, not just "caption" + +OUTPUT FORMAT: Start with { and end with }. Do NOT use markdown code fences (```json). Do NOT add explanatory text before or after the JSON. Return ONLY the JSON object itself. diff --git a/prompts/20260322-175653-127-chapter_structure_generation_response.txt b/prompts/20260322-175653-127-chapter_structure_generation_response.txt new file mode 100644 index 00000000..d067f360 --- /dev/null +++ b/prompts/20260322-175653-127-chapter_structure_generation_response.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail mit einer Begrüßung und einer kurzen Einführung in das Thema.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Hauptteil der E-Mail, der die wesentlichen Informationen und den Zweck der Nachricht vermittelt.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schlussfolgerung", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung und einem höflichen Abschluss.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175653-128-chapter_structure_generation_final_result.txt b/prompts/20260322-175653-128-chapter_structure_generation_final_result.txt new file mode 100644 index 00000000..d067f360 --- /dev/null +++ b/prompts/20260322-175653-128-chapter_structure_generation_final_result.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail mit einer Begrüßung und einer kurzen Einführung in das Thema.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Hauptteil der E-Mail, der die wesentlichen Informationen und den Zweck der Nachricht vermittelt.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schlussfolgerung", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung und einem höflichen Abschluss.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175653-129-chapter_structure_chapter_1_prompt.txt b/prompts/20260322-175653-129-chapter_structure_chapter_1_prompt.txt new file mode 100644 index 00000000..a4d6314b --- /dev/null +++ b/prompts/20260322-175653-129-chapter_structure_chapter_1_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Einleitung (Level 1, ID: chapter_1) +GENERATION HINT: Einleitung der E-Mail mit einer Begrüßung und einer kurzen Einführung in das Thema. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-175653-130-chapter_structure_chapter_2_prompt.txt b/prompts/20260322-175653-130-chapter_structure_chapter_2_prompt.txt new file mode 100644 index 00000000..b57d22c5 --- /dev/null +++ b/prompts/20260322-175653-130-chapter_structure_chapter_2_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Hauptinhalt (Level 1, ID: chapter_2) +GENERATION HINT: Hauptteil der E-Mail, der die wesentlichen Informationen und den Zweck der Nachricht vermittelt. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-175653-131-chapter_structure_chapter_3_prompt.txt b/prompts/20260322-175653-131-chapter_structure_chapter_3_prompt.txt new file mode 100644 index 00000000..4c3323c0 --- /dev/null +++ b/prompts/20260322-175653-131-chapter_structure_chapter_3_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Schlussfolgerung (Level 1, ID: chapter_3) +GENERATION HINT: Abschluss der E-Mail mit einer Zusammenfassung und einem höflichen Abschluss. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-175655-132-chapter_structure_chapter_1_response.txt b/prompts/20260322-175655-132-chapter_structure_chapter_1_response.txt new file mode 100644 index 00000000..112da33c --- /dev/null +++ b/prompts/20260322-175655-132-chapter_structure_chapter_1_response.txt @@ -0,0 +1,17 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Begrüßung und Einführung in das Thema der E-Mail", + "useAiCall": false, + "elements": [ + "Sehr geehrte Damen und Herren,", + "Willkommen zu unserer Einführung in das Thema der E-Mail-Kommunikation. In der heutigen digitalen Welt ist die E-Mail ein unverzichtbares Werkzeug für den Austausch von Informationen und die Pflege von Beziehungen. In diesem Kapitel werden wir die Grundlagen der effektiven E-Mail-Kommunikation und deren Bedeutung im beruflichen und privaten Kontext beleuchten." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-175656-133-chapter_structure_chapter_3_response.txt b/prompts/20260322-175656-133-chapter_structure_chapter_3_response.txt new file mode 100644 index 00000000..a5f04f74 --- /dev/null +++ b/prompts/20260322-175656-133-chapter_structure_chapter_3_response.txt @@ -0,0 +1,26 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung der Hauptpunkte der E-Mail", + "useAiCall": true, + "elements": [ + "In dieser E-Mail haben wir die wichtigsten Themen und Erkenntnisse zusammengefasst. Wir haben die zentralen Punkte hervorgehoben, um sicherzustellen, dass alle relevanten Informationen klar und prägnant vermittelt werden." + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Höflicher Abschluss der E-Mail", + "useAiCall": true, + "elements": [ + "Wir danken Ihnen für Ihre Aufmerksamkeit und stehen für weitere Fragen oder Anmerkungen jederzeit zur Verfügung. Wir freuen uns auf Ihre Rückmeldung und wünschen Ihnen einen erfolgreichen Tag." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-175659-134-chapter_structure_chapter_2_response.txt b/prompts/20260322-175659-134-chapter_structure_chapter_2_response.txt new file mode 100644 index 00000000..074bdaab --- /dev/null +++ b/prompts/20260322-175659-134-chapter_structure_chapter_2_response.txt @@ -0,0 +1,59 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung des Hauptinhalts, die den Zweck der E-Mail beschreibt", + "useAiCall": false, + "elements": [ + "In dieser E-Mail möchten wir Ihnen die neuesten Informationen und Updates zu unserem Produkt vorstellen. Unser Ziel ist es, Ihnen einen umfassenden Überblick über die aktuellen Entwicklungen zu geben und wie diese Ihre Nutzung unseres Produkts verbessern können." + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Hauptpunkte und Vorteile des Produkts", + "useAiCall": false, + "elements": [ + "Erhöhte Effizienz durch neue Funktionen", + "Verbesserte Benutzeroberfläche für eine einfachere Navigation", + "Erweiterte Sicherheitsmaßnahmen zum Schutz Ihrer Daten", + "Kosteneinsparungen durch optimierte Prozesse" + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Erklärung eines wichtigen Features", + "useAiCall": false, + "elements": [ + "Ein herausragendes Merkmal unseres neuesten Updates ist die Integration von KI-gestützten Analysetools. Diese Tools ermöglichen es Ihnen, tiefere Einblicke in Ihre Daten zu gewinnen und fundierte Entscheidungen zu treffen, die auf präzisen Analysen basieren." + ] + }, + { + "id": "section_4", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Anleitung zur Nutzung eines neuen Features", + "useAiCall": false, + "elements": [ + "Um das neue KI-Analysetool zu nutzen, navigieren Sie einfach zum Dashboard und wählen Sie die Option 'Datenanalyse'. Von dort aus können Sie spezifische Parameter einstellen, um maßgeschneiderte Berichte zu erstellen, die Ihren individuellen Anforderungen entsprechen." + ] + }, + { + "id": "section_5", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschluss und Kontaktinformationen", + "useAiCall": false, + "elements": [ + "Wir hoffen, dass diese Informationen hilfreich für Sie sind und freuen uns darauf, Ihnen weiterhin den bestmöglichen Service zu bieten. Bei Fragen oder Anregungen stehen wir Ihnen jederzeit zur Verfügung. Kontaktieren Sie uns einfach über unsere Support-Hotline oder per E-Mail." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-175659-135-chapter_1_section_section_1_prompt.txt b/prompts/20260322-175659-135-chapter_1_section_section_1_prompt.txt new file mode 100644 index 00000000..55dceb04 --- /dev/null +++ b/prompts/20260322-175659-135-chapter_1_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Begrüßung und Einführung in das Thema der E-Mail +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-175659-136-chapter_2_section_section_1_prompt.txt b/prompts/20260322-175659-136-chapter_2_section_section_1_prompt.txt new file mode 100644 index 00000000..ab498727 --- /dev/null +++ b/prompts/20260322-175659-136-chapter_2_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einleitung des Hauptinhalts, die den Zweck der E-Mail beschreibt +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-175659-137-chapter_2_section_section_2_prompt.txt b/prompts/20260322-175659-137-chapter_2_section_section_2_prompt.txt new file mode 100644 index 00000000..5513700d --- /dev/null +++ b/prompts/20260322-175659-137-chapter_2_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: bullet_list +- Generation Hint: Hauptpunkte und Vorteile des Produkts +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-175659-138-chapter_2_section_section_3_prompt.txt b/prompts/20260322-175659-138-chapter_2_section_section_3_prompt.txt new file mode 100644 index 00000000..fbfa5f64 --- /dev/null +++ b/prompts/20260322-175659-138-chapter_2_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: paragraph +- Generation Hint: Detaillierte Erklärung eines wichtigen Features +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_4 (paragraph): + diff --git a/prompts/20260322-175659-139-chapter_2_section_section_4_prompt.txt b/prompts/20260322-175659-139-chapter_2_section_section_4_prompt.txt new file mode 100644 index 00000000..efdbb64b --- /dev/null +++ b/prompts/20260322-175659-139-chapter_2_section_section_4_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_4 +- Content Type: paragraph +- Generation Hint: Anleitung zur Nutzung eines neuen Features +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_2 (bullet_list): + +Following sections: +- section_4 (paragraph): +- section_5 (paragraph): + diff --git a/prompts/20260322-175700-140-chapter_2_section_section_2_response.txt b/prompts/20260322-175700-140-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..cb10d7d4 --- /dev/null +++ b/prompts/20260322-175700-140-chapter_2_section_section_2_response.txt @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Hochwertige Materialien für Langlebigkeit", + "Energieeffizientes Design spart Kosten", + "Benutzerfreundliche Bedienung", + "Modernes und ansprechendes Design", + "Vielseitige Einsatzmöglichkeiten", + "Umweltfreundliche Produktion", + "Exzellenter Kundenservice" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175700-141-chapter_2_section_section_2_response.txt b/prompts/20260322-175700-141-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..cb10d7d4 --- /dev/null +++ b/prompts/20260322-175700-141-chapter_2_section_section_2_response.txt @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Hochwertige Materialien für Langlebigkeit", + "Energieeffizientes Design spart Kosten", + "Benutzerfreundliche Bedienung", + "Modernes und ansprechendes Design", + "Vielseitige Einsatzmöglichkeiten", + "Umweltfreundliche Produktion", + "Exzellenter Kundenservice" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175700-142-chapter_2_section_section_5_prompt.txt b/prompts/20260322-175700-142-chapter_2_section_section_5_prompt.txt new file mode 100644 index 00000000..45fde45e --- /dev/null +++ b/prompts/20260322-175700-142-chapter_2_section_section_5_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_5 +- Content Type: paragraph +- Generation Hint: Abschluss und Kontaktinformationen +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_2 (bullet_list): +- section_3 (paragraph): + +Following sections: +- section_5 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-175701-143-chapter_2_section_section_1_response.txt b/prompts/20260322-175701-143-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..86e12473 --- /dev/null +++ b/prompts/20260322-175701-143-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, den Hauptinhalt des vorherigen Dokuments zusammenzufassen und die wichtigsten Punkte hervorzuheben. Ziel ist es, den Empfänger über die wesentlichen Informationen zu informieren und gegebenenfalls weitere Schritte oder Maßnahmen zu empfehlen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175701-144-chapter_2_section_section_1_response.txt b/prompts/20260322-175701-144-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..86e12473 --- /dev/null +++ b/prompts/20260322-175701-144-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, den Hauptinhalt des vorherigen Dokuments zusammenzufassen und die wichtigsten Punkte hervorzuheben. Ziel ist es, den Empfänger über die wesentlichen Informationen zu informieren und gegebenenfalls weitere Schritte oder Maßnahmen zu empfehlen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175701-145-chapter_3_section_section_1_prompt.txt b/prompts/20260322-175701-145-chapter_3_section_section_1_prompt.txt new file mode 100644 index 00000000..83eb1c6e --- /dev/null +++ b/prompts/20260322-175701-145-chapter_3_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Zusammenfassung der Hauptpunkte der E-Mail +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-175701-146-chapter_1_section_section_1_response.txt b/prompts/20260322-175701-146-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..b7e57fd8 --- /dev/null +++ b/prompts/20260322-175701-146-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Herzlich willkommen! In dieser E-Mail möchten wir Ihnen einen Überblick über das Thema geben, das wir in den folgenden Abschnitten näher beleuchten werden. Wir freuen uns, Ihnen wertvolle Informationen und Einblicke zu präsentieren, die Ihnen bei Ihren Entscheidungen helfen können." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175701-147-chapter_1_section_section_1_response.txt b/prompts/20260322-175701-147-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..b7e57fd8 --- /dev/null +++ b/prompts/20260322-175701-147-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Herzlich willkommen! In dieser E-Mail möchten wir Ihnen einen Überblick über das Thema geben, das wir in den folgenden Abschnitten näher beleuchten werden. Wir freuen uns, Ihnen wertvolle Informationen und Einblicke zu präsentieren, die Ihnen bei Ihren Entscheidungen helfen können." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175701-148-chapter_3_section_section_2_prompt.txt b/prompts/20260322-175701-148-chapter_3_section_section_2_prompt.txt new file mode 100644 index 00000000..e0d03a41 --- /dev/null +++ b/prompts/20260322-175701-148-chapter_3_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: paragraph +- Generation Hint: Höflicher Abschluss der E-Mail +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-175701-149-chapter_2_section_section_3_response.txt b/prompts/20260322-175701-149-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..3dc17f65 --- /dev/null +++ b/prompts/20260322-175701-149-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Ein wichtiges Feature unserer Software ist die automatische Datensicherung. Diese Funktion ermöglicht es Benutzern, ihre Daten in regelmäßigen Abständen ohne manuelle Eingriffe zu sichern. Die Sicherungen werden in einem verschlüsselten Format gespeichert, um maximale Sicherheit zu gewährleisten. Benutzer können den Sicherungszeitplan individuell anpassen und erhalten Benachrichtigungen über den Status der Sicherungen. Diese Funktion minimiert das Risiko von Datenverlusten und sorgt für eine kontinuierliche Verfügbarkeit wichtiger Informationen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175701-150-chapter_2_section_section_3_response.txt b/prompts/20260322-175701-150-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..3dc17f65 --- /dev/null +++ b/prompts/20260322-175701-150-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Ein wichtiges Feature unserer Software ist die automatische Datensicherung. Diese Funktion ermöglicht es Benutzern, ihre Daten in regelmäßigen Abständen ohne manuelle Eingriffe zu sichern. Die Sicherungen werden in einem verschlüsselten Format gespeichert, um maximale Sicherheit zu gewährleisten. Benutzer können den Sicherungszeitplan individuell anpassen und erhalten Benachrichtigungen über den Status der Sicherungen. Diese Funktion minimiert das Risiko von Datenverlusten und sorgt für eine kontinuierliche Verfügbarkeit wichtiger Informationen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175701-151-chapter_2_section_section_4_response.txt b/prompts/20260322-175701-151-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..cd8c3389 --- /dev/null +++ b/prompts/20260322-175701-151-chapter_2_section_section_4_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Um das neue Feature zu nutzen, öffnen Sie die Anwendung und navigieren Sie zum Einstellungsmenü. Aktivieren Sie die Option 'Neues Feature' unter dem Abschnitt 'Erweiterte Funktionen'. Stellen Sie sicher, dass Ihre Software auf dem neuesten Stand ist, um alle Vorteile zu nutzen. Nach der Aktivierung können Sie die erweiterten Optionen im Hauptmenü einsehen. Bei Fragen steht Ihnen der Support zur Verfügung." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175701-152-chapter_2_section_section_4_response.txt b/prompts/20260322-175701-152-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..cd8c3389 --- /dev/null +++ b/prompts/20260322-175701-152-chapter_2_section_section_4_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Um das neue Feature zu nutzen, öffnen Sie die Anwendung und navigieren Sie zum Einstellungsmenü. Aktivieren Sie die Option 'Neues Feature' unter dem Abschnitt 'Erweiterte Funktionen'. Stellen Sie sicher, dass Ihre Software auf dem neuesten Stand ist, um alle Vorteile zu nutzen. Nach der Aktivierung können Sie die erweiterten Optionen im Hauptmenü einsehen. Bei Fragen steht Ihnen der Support zur Verfügung." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175702-153-chapter_2_section_section_5_response.txt b/prompts/20260322-175702-153-chapter_2_section_section_5_response.txt new file mode 100644 index 00000000..55570c01 --- /dev/null +++ b/prompts/20260322-175702-153-chapter_2_section_section_5_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihr Interesse an unseren Dienstleistungen. Für weitere Informationen oder bei Fragen stehen wir Ihnen gerne zur Verfügung. Sie können uns jederzeit per E-Mail unter info@unternehmen.de oder telefonisch unter +49 123 456789 erreichen. Wir freuen uns darauf, von Ihnen zu hören und Ihnen weiterhelfen zu können." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175702-154-chapter_2_section_section_5_response.txt b/prompts/20260322-175702-154-chapter_2_section_section_5_response.txt new file mode 100644 index 00000000..55570c01 --- /dev/null +++ b/prompts/20260322-175702-154-chapter_2_section_section_5_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihr Interesse an unseren Dienstleistungen. Für weitere Informationen oder bei Fragen stehen wir Ihnen gerne zur Verfügung. Sie können uns jederzeit per E-Mail unter info@unternehmen.de oder telefonisch unter +49 123 456789 erreichen. Wir freuen uns darauf, von Ihnen zu hören und Ihnen weiterhelfen zu können." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175702-155-chapter_3_section_section_2_response.txt b/prompts/20260322-175702-155-chapter_3_section_section_2_response.txt new file mode 100644 index 00000000..c6cf5fd8 --- /dev/null +++ b/prompts/20260322-175702-155-chapter_3_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Aufmerksamkeit und Unterstützung. Ich freue mich auf Ihre Rückmeldung und stehe für weitere Fragen jederzeit zur Verfügung. Mit freundlichen Grüßen, [Ihr Name]" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175702-156-chapter_3_section_section_2_response.txt b/prompts/20260322-175702-156-chapter_3_section_section_2_response.txt new file mode 100644 index 00000000..c6cf5fd8 --- /dev/null +++ b/prompts/20260322-175702-156-chapter_3_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Aufmerksamkeit und Unterstützung. Ich freue mich auf Ihre Rückmeldung und stehe für weitere Fragen jederzeit zur Verfügung. Mit freundlichen Grüßen, [Ihr Name]" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175702-157-chapter_3_section_section_1_response.txt b/prompts/20260322-175702-157-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..cba07168 --- /dev/null +++ b/prompts/20260322-175702-157-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen: Der aktuelle Projektstatus wird erläutert, einschließlich der erreichten Meilensteine und der noch offenen Aufgaben. Es wird auf die nächsten Schritte eingegangen und die Verantwortlichkeiten der Teammitglieder werden hervorgehoben. Zudem werden Fristen für die kommenden Aufgaben festgelegt und es wird um Rückmeldungen zu spezifischen Fragen gebeten. Abschließend wird die Bedeutung der Zusammenarbeit betont, um die Projektziele erfolgreich zu erreichen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175702-158-chapter_3_section_section_1_response.txt b/prompts/20260322-175702-158-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..cba07168 --- /dev/null +++ b/prompts/20260322-175702-158-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen: Der aktuelle Projektstatus wird erläutert, einschließlich der erreichten Meilensteine und der noch offenen Aufgaben. Es wird auf die nächsten Schritte eingegangen und die Verantwortlichkeiten der Teammitglieder werden hervorgehoben. Zudem werden Fristen für die kommenden Aufgaben festgelegt und es wird um Rückmeldungen zu spezifischen Fragen gebeten. Abschließend wird die Bedeutung der Zusammenarbeit betont, um die Projektziele erfolgreich zu erreichen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175702-159-document_generation_response.txt b/prompts/20260322-175702-159-document_generation_response.txt new file mode 100644 index 00000000..d934c6f6 --- /dev/null +++ b/prompts/20260322-175702-159-document_generation_response.txt @@ -0,0 +1,187 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "sections": [ + { + "id": "chapter_1_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Einleitung", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Begrüßung und Einführung in das Thema der E-Mail", + "useAiCall": false, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Herzlich willkommen! In dieser E-Mail möchten wir Ihnen einen Überblick über das Thema geben, das wir in den folgenden Abschnitten näher beleuchten werden. Wir freuen uns, Ihnen wertvolle Informationen und Einblicke zu präsentieren, die Ihnen bei Ihren Entscheidungen helfen können." + } + } + ] + }, + { + "id": "chapter_2_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Hauptinhalt", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung des Hauptinhalts, die den Zweck der E-Mail beschreibt", + "useAiCall": false, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, den Hauptinhalt des vorherigen Dokuments zusammenzufassen und die wichtigsten Punkte hervorzuheben. Ziel ist es, den Empfänger über die wesentlichen Informationen zu informieren und gegebenenfalls weitere Schritte oder Maßnahmen zu empfehlen." + } + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Hauptpunkte und Vorteile des Produkts", + "useAiCall": false, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Hochwertige Materialien für Langlebigkeit", + "Energieeffizientes Design spart Kosten", + "Benutzerfreundliche Bedienung", + "Modernes und ansprechendes Design", + "Vielseitige Einsatzmöglichkeiten", + "Umweltfreundliche Produktion", + "Exzellenter Kundenservice" + ] + } + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Erklärung eines wichtigen Features", + "useAiCall": false, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Ein wichtiges Feature unserer Software ist die automatische Datensicherung. Diese Funktion ermöglicht es Benutzern, ihre Daten in regelmäßigen Abständen ohne manuelle Eingriffe zu sichern. Die Sicherungen werden in einem verschlüsselten Format gespeichert, um maximale Sicherheit zu gewährleisten. Benutzer können den Sicherungszeitplan individuell anpassen und erhalten Benachrichtigungen über den Status der Sicherungen. Diese Funktion minimiert das Risiko von Datenverlusten und sorgt für eine kontinuierliche Verfügbarkeit wichtiger Informationen." + } + } + ] + }, + { + "id": "section_4", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Anleitung zur Nutzung eines neuen Features", + "useAiCall": false, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Um das neue Feature zu nutzen, öffnen Sie die Anwendung und navigieren Sie zum Einstellungsmenü. Aktivieren Sie die Option 'Neues Feature' unter dem Abschnitt 'Erweiterte Funktionen'. Stellen Sie sicher, dass Ihre Software auf dem neuesten Stand ist, um alle Vorteile zu nutzen. Nach der Aktivierung können Sie die erweiterten Optionen im Hauptmenü einsehen. Bei Fragen steht Ihnen der Support zur Verfügung." + } + } + ] + }, + { + "id": "section_5", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschluss und Kontaktinformationen", + "useAiCall": false, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihr Interesse an unseren Dienstleistungen. Für weitere Informationen oder bei Fragen stehen wir Ihnen gerne zur Verfügung. Sie können uns jederzeit per E-Mail unter info@unternehmen.de oder telefonisch unter +49 123 456789 erreichen. Wir freuen uns darauf, von Ihnen zu hören und Ihnen weiterhelfen zu können." + } + } + ] + }, + { + "id": "chapter_3_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Schlussfolgerung", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung der Hauptpunkte der E-Mail", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen: Der aktuelle Projektstatus wird erläutert, einschließlich der erreichten Meilensteine und der noch offenen Aufgaben. Es wird auf die nächsten Schritte eingegangen und die Verantwortlichkeiten der Teammitglieder werden hervorgehoben. Zudem werden Fristen für die kommenden Aufgaben festgelegt und es wird um Rückmeldungen zu spezifischen Fragen gebeten. Abschließend wird die Bedeutung der Zusammenarbeit betont, um die Projektziele erfolgreich zu erreichen." + } + } + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Höflicher Abschluss der E-Mail", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Aufmerksamkeit und Unterstützung. Ich freue mich auf Ihre Rückmeldung und stehe für weitere Fragen jederzeit zur Verfügung. Mit freundlichen Grüßen, [Ihr Name]" + } + } + ] + } + ], + "metadata": { + "outputStyle": "document" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175703-160-email_composition_prompt.txt b/prompts/20260322-175703-160-email_composition_prompt.txt new file mode 100644 index 00000000..4ef8ba53 --- /dev/null +++ b/prompts/20260322-175703-160-email_composition_prompt.txt @@ -0,0 +1,22 @@ +Compose an email based on this context: +------- +Email Entwurf\n=============\n\nEinleitung\n==========\n\nHerzlich willkommen! In dieser E-Mail möchten wir Ihnen einen Überblick über das Thema geben, das wir in den folgenden Abschnitten näher beleuchten werden. Wir freuen uns, Ihnen wertvolle Informationen und Einblicke zu präsentieren, die Ihnen bei Ihren Entscheidungen helfen können.\n\nHauptinhalt\n===========\n\nDiese E-Mail dient dazu, den Hauptinhalt des vorherigen Dokuments zusammenzufassen und die wichtigsten Punkte hervorzuheben. Ziel ist es, den Empfänger über die wesentlichen Informationen zu informieren und gegebenenfalls weitere Schritte oder Maßnahmen zu empfehlen.\n\n- Hochwertige Materialien für Langlebigkeit\n- Energieeffizientes Design spart Kosten\n- Benutzerfreundliche Bedienung\n- Modernes und ansprechendes Design\n- Vielseitige Einsatzmöglichkeiten\n- Umweltfreundliche Produktion\n- Exzellenter Kundenservice\n\nEin wichtiges Feature unserer Software ist die automatische Datensicherung. Diese Funktion ermöglicht es Benutzern, ihre Daten in regelmäßigen Abständen ohne manuelle Eingriffe zu sichern. Die Sicherungen werden in einem verschlüsselten Format gespeichert, um maximale Sicherheit zu gewährleisten. Benutzer können den Sicherungszeitplan individuell anpassen und erhalten Benachrichtigungen über den Status der Sicherungen. Diese Funktion minimiert das Risiko von Datenverlusten und sorgt für eine kontinuierliche Verfügbarkeit wichtiger Informationen.\n\nUm das neue Feature zu nutzen, öffnen Sie die Anwendung und navigieren Sie zum Einstellungsmenü. Aktivieren Sie die Option 'Neues Feature' unter dem Abschnitt 'Erweiterte Funktionen'. Stellen Sie sicher, dass Ihre Software auf dem neuesten Stand ist, um alle Vorteile zu nutzen. Nach der Aktivierung können Sie die erweiterten Optionen im Hauptmenü einsehen. Bei Fragen steht Ihnen der Support zur Verfügung.\n\nVielen Dank für Ihr Interesse an unseren Dienstleistungen. Für weitere Informationen oder bei Fragen stehen wir Ihnen gerne zur Verfügung. Sie können uns jederzeit per E-Mail unter info@unternehmen.de oder telefonisch unter +49 123 456789 erreichen. Wir freuen uns darauf, von Ihnen zu hören und Ihnen weiterhelfen zu können.\n\nSchlussfolgerung\n================\n\nDie E-Mail fasst die wichtigsten Punkte zusammen: Der aktuelle Projektstatus wird erläutert, einschließlich der erreichten Meilensteine und der noch offenen Aufgaben. Es wird auf die nächsten Schritte eingegangen und die Verantwortlichkeiten der Teammitglieder werden hervorgehoben. Zudem werden Fristen für die kommenden Aufgaben festgelegt und es wird um Rückmeldungen zu spezifischen Fragen gebeten. Abschließend wird die Bedeutung der Zusammenarbeit betont, um die Projektziele erfolgreich zu erreichen.\n\nVielen Dank für Ihre Aufmerksamkeit und Unterstützung. Ich freue mich auf Ihre Rückmeldung und stehe für weitere Fragen jederzeit zur Verfügung. Mit freundlichen Grüßen, [Ihr Name]\n\n\nGenerated: 2026-03-22 17:57:02 UTC +------- + +Recipients: (not specified - this is a draft) +Style: business +Max length: 1000 characters + +Available_Document_References: + - (no documents) + +Based on the context, decide which documents to attach. + +CRITICAL: Use EXACT document references from Available_Document_References above. For individual documents: ALWAYS use docItem:: format (include filename) + +Return JSON: +{ + "subject": "subject line", + "body": "email body (HTML allowed)", + "attachments": ["docItem::"] +} diff --git a/prompts/20260322-175706-161-email_composition_response.txt b/prompts/20260322-175706-161-email_composition_response.txt new file mode 100644 index 00000000..52282f01 --- /dev/null +++ b/prompts/20260322-175706-161-email_composition_response.txt @@ -0,0 +1,7 @@ +```json +{ + "subject": "Einführung in unsere neuesten Funktionen und Vorteile", + "body": "Sehr geehrte Damen und Herren,

Herzlich willkommen! In dieser E-Mail möchten wir Ihnen einen Überblick über unsere neuesten Funktionen und Vorteile geben, die Ihnen bei Ihren Entscheidungen helfen können.

Hauptinhalt:
- Hochwertige Materialien für Langlebigkeit
- Energieeffizientes Design spart Kosten
- Benutzerfreundliche Bedienung
- Modernes und ansprechendes Design
- Vielseitige Einsatzmöglichkeiten
- Umweltfreundliche Produktion
- Exzellenter Kundenservice

Ein wichtiges Feature unserer Software ist die automatische Datensicherung, die maximale Sicherheit und kontinuierliche Verfügbarkeit Ihrer Daten gewährleistet.

Um das neue Feature zu nutzen, öffnen Sie die Anwendung und navigieren Sie zum Einstellungsmenü. Bei Fragen steht Ihnen unser Support zur Verfügung.

Vielen Dank für Ihr Interesse an unseren Dienstleistungen. Für weitere Informationen oder bei Fragen erreichen Sie uns jederzeit per E-Mail unter info@unternehmen.de oder telefonisch unter +49 123 456789.

Mit freundlichen Grüßen,
[Ihr Name]", + "attachments": [] +} +``` \ No newline at end of file diff --git a/prompts/20260322-175827-162-chapter_structure_generation_prompt.txt b/prompts/20260322-175827-162-chapter_structure_generation_prompt.txt new file mode 100644 index 00000000..49ba0ee5 --- /dev/null +++ b/prompts/20260322-175827-162-chapter_structure_generation_prompt.txt @@ -0,0 +1,119 @@ +# TASK: Plan Document Structure (Documents + Chapters) + +This is a STRUCTURE PLANNING task. You define which documents to create and which chapters each document will have. +Chapter CONTENT will be generated in a later step - here you only plan the STRUCTURE and assign content references. +Return EXACTLY ONE complete JSON object. Do not generate multiple JSON objects, alternatives, or variations. Do not use separators like "---" between JSON objects. + +## USER REQUEST (for context) +``` +entwirf eine email mit dem inhalt des files davor +``` + +## AVAILABLE CONTENT PARTS + +(No content parts available) + +## CONTENT ASSIGNMENT RULE + +CRITICAL: Every chapter MUST have contentParts assigned if it relates to documents/images/data from the user request. +If the user request mentions documents/images/data, then EVERY chapter that generates content related to those references MUST assign the relevant ContentParts explicitly. + +Assignment logic: +- If chapter DISPLAYS a document/image → assign "object" format ContentPart with "caption" +- If chapter generates text content ABOUT a document/image/data → assign ContentPart with "instruction": + - Prefer "extracted" format if available (contains analyzed/extracted content) + - If only "object" format is available, use "object" format with "instruction" (to write ABOUT the image/document) +- If chapter's generationHint or purpose relates to a document/image/data mentioned in user request → it MUST have ContentParts assigned +- Multiple chapters might assign the same ContentPart (e.g., one chapter displays image, another writes about it) +- Use ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above +- Empty contentParts are only allowed if chapter generates content WITHOUT referencing any documents/images/data from the user request + +CRITICAL RULE: If the user request mentions BOTH: + a) Documents/images/data (listed in AVAILABLE CONTENT PARTS above), AND + b) Generic content types (article text, main content, body text, etc.) +Then chapters that generate those generic content types MUST assign the relevant ContentParts, because the content should relate to or be based on the provided documents/images/data. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential information only +- AVOID verbose, lengthy, or repetitive text - be concise and direct +- Prioritize FACTS over filler text - no introductions like "In this chapter..." +- Minimize system resources: shorter content = faster processing +- Quality over quantity: precise, meaningful content rather than padding + +## CHAPTER STRUCTURE REQUIREMENTS +- Generate chapters based on USER REQUEST - analyze what structure the user wants +- Create ONLY the minimum chapters needed to cover the user's request - avoid over-structuring +- HARD LIMIT: Maximum 7 chapters per document. If the topic can be covered in fewer, prefer fewer. Combine related topics into single chapters rather than creating many small ones. +- IMPORTANT: Each chapter MUST have ALL these fields: + - id: Unique identifier (e.g., "chapter_1") + - level: Heading level (1, 2, 3, etc.) + - title: Chapter title + - contentParts: Object mapping ContentPart IDs to usage instructions (MUST assign if chapter relates to documents/data from user request) + - generationHint: Description of what content to generate (including formatting/styling requirements) + - sections: Empty array [] (REQUIRED - sections are generated in next phase) +- contentParts: {"partId": {"instruction": "..."} or {"caption": "..."} or both} - Assign ContentParts as required by CONTENT ASSIGNMENT RULE above +- The "instruction" field for each ContentPart MUST contain ALL relevant details from the USER REQUEST that apply to content extraction for this specific chapter. Include all formatting rules, data requirements, constraints, and specifications mentioned in the user request that are relevant for processing this ContentPart in this chapter. +- generationHint: Keep CONCISE but include relevant details from the USER REQUEST. Focus on WHAT to generate, not HOW to phrase it verbosely. +- The number of chapters depends on the user request - create only what is requested. Do NOT create chapters for topics without available data. + +CRITICAL: Only create chapters for CONTENT sections, not for formatting/styling requirements. Formatting/styling requirements to be included in each generationHint if needed. + +## DOCUMENT STRUCTURE + +For each document, determine: +- outputFormat: From USER REQUEST (explicit mention or infer from purpose/content type). Default: "txt". Multiple documents can have different formats. +- language: From USER REQUEST (map to ISO 639-1: de, en, fr, it...). Default: "de". Multiple documents can have different languages. +- chapters: Structure appropriately for the format (e.g., pptx=slides, docx=sections, xlsx=worksheets). Match format capabilities and constraints. + +Required JSON fields: +- metadata: {"title": "...", "language": "..."} +- documents: Array with id, title, filename, outputFormat, language, chapters[] +- chapters: Array with id, level, title, contentParts, generationHint, sections[] + +EXAMPLE STRUCTURE (for reference only - adapt to user request): +{ + "metadata": { + "title": "Document Title", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "Document Title", + "filename": "document.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Chapter Title", + "contentParts": { + "extracted_part_id": { + "instruction": "Use extracted content with ALL relevant details from user request" + } + }, + "generationHint": "Detailed description including ALL relevant details from user request for this chapter", + "sections": [] + } + ] + }] +} + +CRITICAL INSTRUCTIONS: +- Generate chapters based on USER REQUEST, NOT based on the example above +- The example shows the JSON structure format, NOT the required chapters +- Create only the chapters that match the user's request +- Adapt chapter titles and structure to match the user's specific request +- Determine outputFormat and language for each document by analyzing the USER REQUEST above +- The example shows placeholders "txt" and "de" - YOU MUST REPLACE THESE with actual values determined from the USER REQUEST + +MANDATORY CONTENT ASSIGNMENT CHECK: +For each chapter, verify: +1. Does the user request mention documents/images/data? (e.g., "photo", "image", "document", "data", "based on", "about") +2. Does this chapter's generationHint, title, or purpose relate to those documents/images/data mentioned in step 1? + - Examples: "article about the photo", "text describing the image", "analysis of the document", "content based on the data" + - Even if chapter doesn't explicitly say "about the image", if user request mentions both the image AND this chapter's content type → relate them +3. If YES to both → chapter MUST have contentParts assigned (cannot be empty {}) +4. If ContentPart is "object" format and chapter needs to write ABOUT it → assign with "instruction" field, not just "caption" + +OUTPUT FORMAT: Start with { and end with }. Do NOT use markdown code fences (```json). Do NOT add explanatory text before or after the JSON. Return ONLY the JSON object itself. diff --git a/prompts/20260322-175830-163-chapter_structure_generation_response.txt b/prompts/20260322-175830-163-chapter_structure_generation_response.txt new file mode 100644 index 00000000..7e961297 --- /dev/null +++ b/prompts/20260322-175830-163-chapter_structure_generation_response.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail mit einer Begrüßung und dem Zweck der Nachricht.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Hauptteil der E-Mail, der den Inhalt des vorherigen Dokuments zusammenfasst oder beschreibt.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Abschluss", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung und einem freundlichen Abschiedsgruß.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175830-164-chapter_structure_generation_final_result.txt b/prompts/20260322-175830-164-chapter_structure_generation_final_result.txt new file mode 100644 index 00000000..7e961297 --- /dev/null +++ b/prompts/20260322-175830-164-chapter_structure_generation_final_result.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail mit einer Begrüßung und dem Zweck der Nachricht.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Hauptteil der E-Mail, der den Inhalt des vorherigen Dokuments zusammenfasst oder beschreibt.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Abschluss", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung und einem freundlichen Abschiedsgruß.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175830-165-chapter_structure_chapter_1_prompt.txt b/prompts/20260322-175830-165-chapter_structure_chapter_1_prompt.txt new file mode 100644 index 00000000..2a739a39 --- /dev/null +++ b/prompts/20260322-175830-165-chapter_structure_chapter_1_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Einleitung (Level 1, ID: chapter_1) +GENERATION HINT: Einleitung der E-Mail mit einer Begrüßung und dem Zweck der Nachricht. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-175830-166-chapter_structure_chapter_2_prompt.txt b/prompts/20260322-175830-166-chapter_structure_chapter_2_prompt.txt new file mode 100644 index 00000000..85ac275f --- /dev/null +++ b/prompts/20260322-175830-166-chapter_structure_chapter_2_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Hauptinhalt (Level 1, ID: chapter_2) +GENERATION HINT: Hauptteil der E-Mail, der den Inhalt des vorherigen Dokuments zusammenfasst oder beschreibt. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-175830-167-chapter_structure_chapter_3_prompt.txt b/prompts/20260322-175830-167-chapter_structure_chapter_3_prompt.txt new file mode 100644 index 00000000..18b70633 --- /dev/null +++ b/prompts/20260322-175830-167-chapter_structure_chapter_3_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Abschluss (Level 1, ID: chapter_3) +GENERATION HINT: Abschluss der E-Mail mit einer Zusammenfassung und einem freundlichen Abschiedsgruß. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-175833-168-chapter_structure_chapter_1_response.txt b/prompts/20260322-175833-168-chapter_structure_chapter_1_response.txt new file mode 100644 index 00000000..9f83fe0d --- /dev/null +++ b/prompts/20260322-175833-168-chapter_structure_chapter_1_response.txt @@ -0,0 +1,19 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung der E-Mail mit einer Begrüßung und dem Zweck der Nachricht.", + "useAiCall": true, + "elements": [ + { + "type": "text", + "content": "Sehr geehrte Damen und Herren, ich hoffe, diese Nachricht trifft Sie wohl. Ich schreibe Ihnen, um Ihnen die neuesten Informationen zu unserem Projekt mitzuteilen und um sicherzustellen, dass alle Beteiligten auf dem gleichen Stand sind. Unser Ziel ist es, die Kommunikation zu verbessern und die nächsten Schritte zu koordinieren." + } + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-175833-169-chapter_structure_chapter_2_response.txt b/prompts/20260322-175833-169-chapter_structure_chapter_2_response.txt new file mode 100644 index 00000000..624eb764 --- /dev/null +++ b/prompts/20260322-175833-169-chapter_structure_chapter_2_response.txt @@ -0,0 +1,39 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung des Hauptinhalts des Dokuments", + "useAiCall": true, + "elements": [ + "Der Hauptinhalt der E-Mail fasst die wesentlichen Punkte des vorherigen Dokuments zusammen. Es werden die wichtigsten Informationen und Erkenntnisse präsentiert, um dem Empfänger einen klaren Überblick zu verschaffen. Dabei wird auf die zentralen Themen eingegangen und relevante Details hervorgehoben, um die Kernaussagen verständlich zu machen." + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Auflistung der wichtigsten Punkte des Dokuments", + "useAiCall": true, + "elements": [ + "Hauptthema des Dokuments", + "Wichtige Erkenntnisse und Schlussfolgerungen", + "Relevante Daten und Statistiken", + "Empfehlungen für weitere Schritte" + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Beschreibung der Zielsetzung des Dokuments", + "useAiCall": true, + "elements": [ + "Das Dokument zielt darauf ab, die Leser über die neuesten Entwicklungen und Erkenntnisse in einem bestimmten Bereich zu informieren. Es soll als Grundlage für fundierte Entscheidungen dienen und bietet eine detaillierte Analyse der behandelten Themen." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-175833-170-chapter_structure_chapter_3_response.txt b/prompts/20260322-175833-170-chapter_structure_chapter_3_response.txt new file mode 100644 index 00000000..057651ac --- /dev/null +++ b/prompts/20260322-175833-170-chapter_structure_chapter_3_response.txt @@ -0,0 +1,26 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung der E-Mail-Inhalte", + "useAiCall": true, + "elements": [ + "In dieser E-Mail haben wir die wichtigsten Punkte unserer Diskussion zusammengefasst. Wir haben die aktuellen Fortschritte, zukünftige Schritte und alle offenen Fragen besprochen. Bitte zögern Sie nicht, sich bei weiteren Fragen oder Anmerkungen an uns zu wenden." + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Freundlicher Abschiedsgruß", + "useAiCall": true, + "elements": [ + "Vielen Dank für Ihre Aufmerksamkeit und Unterstützung. Wir freuen uns auf die weitere Zusammenarbeit und wünschen Ihnen einen angenehmen Tag. Mit freundlichen Grüßen, [Ihr Name]" + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-175833-171-chapter_1_section_section_1_prompt.txt b/prompts/20260322-175833-171-chapter_1_section_section_1_prompt.txt new file mode 100644 index 00000000..45eed644 --- /dev/null +++ b/prompts/20260322-175833-171-chapter_1_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einleitung der E-Mail mit einer Begrüßung und dem Zweck der Nachricht. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-175833-172-chapter_2_section_section_1_prompt.txt b/prompts/20260322-175833-172-chapter_2_section_section_1_prompt.txt new file mode 100644 index 00000000..0a67813d --- /dev/null +++ b/prompts/20260322-175833-172-chapter_2_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Zusammenfassung des Hauptinhalts des Dokuments +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-175834-173-chapter_2_section_section_2_prompt.txt b/prompts/20260322-175834-173-chapter_2_section_section_2_prompt.txt new file mode 100644 index 00000000..79b99962 --- /dev/null +++ b/prompts/20260322-175834-173-chapter_2_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: bullet_list +- Generation Hint: Auflistung der wichtigsten Punkte des Dokuments +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-175834-174-chapter_2_section_section_3_prompt.txt b/prompts/20260322-175834-174-chapter_2_section_section_3_prompt.txt new file mode 100644 index 00000000..efdabf3d --- /dev/null +++ b/prompts/20260322-175834-174-chapter_2_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: paragraph +- Generation Hint: Beschreibung der Zielsetzung des Dokuments +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-175834-175-chapter_3_section_section_1_prompt.txt b/prompts/20260322-175834-175-chapter_3_section_section_1_prompt.txt new file mode 100644 index 00000000..597695ff --- /dev/null +++ b/prompts/20260322-175834-175-chapter_3_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Zusammenfassung der E-Mail-Inhalte +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-175835-176-chapter_1_section_section_1_response.txt b/prompts/20260322-175835-176-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..a18abecb --- /dev/null +++ b/prompts/20260322-175835-176-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Sehr geehrte Damen und Herren, ich hoffe, diese Nachricht trifft Sie wohl. Ich schreibe Ihnen, um den Zweck unserer bevorstehenden Zusammenarbeit zu erläutern und die nächsten Schritte zu besprechen. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen oder Fragen haben." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175835-177-chapter_1_section_section_1_response.txt b/prompts/20260322-175835-177-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..a18abecb --- /dev/null +++ b/prompts/20260322-175835-177-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Sehr geehrte Damen und Herren, ich hoffe, diese Nachricht trifft Sie wohl. Ich schreibe Ihnen, um den Zweck unserer bevorstehenden Zusammenarbeit zu erläutern und die nächsten Schritte zu besprechen. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen oder Fragen haben." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175835-178-chapter_3_section_section_2_prompt.txt b/prompts/20260322-175835-178-chapter_3_section_section_2_prompt.txt new file mode 100644 index 00000000..21b7d095 --- /dev/null +++ b/prompts/20260322-175835-178-chapter_3_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: paragraph +- Generation Hint: Freundlicher Abschiedsgruß +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-175835-179-chapter_3_section_section_1_response.txt b/prompts/20260322-175835-179-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..9a553567 --- /dev/null +++ b/prompts/20260322-175835-179-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen, die im vorherigen Dokument behandelt wurden. Es wird auf die wesentlichen Themen eingegangen, die für den Empfänger von Bedeutung sind. Die E-Mail enthält prägnante Informationen, die den Leser über die Hauptinhalte informieren, ohne unnötige Details oder Wiederholungen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175835-180-chapter_3_section_section_1_response.txt b/prompts/20260322-175835-180-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..9a553567 --- /dev/null +++ b/prompts/20260322-175835-180-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen, die im vorherigen Dokument behandelt wurden. Es wird auf die wesentlichen Themen eingegangen, die für den Empfänger von Bedeutung sind. Die E-Mail enthält prägnante Informationen, die den Leser über die Hauptinhalte informieren, ohne unnötige Details oder Wiederholungen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175836-181-chapter_2_section_section_2_response.txt b/prompts/20260322-175836-181-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..1f822513 --- /dev/null +++ b/prompts/20260322-175836-181-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Kernpunkte des Dokuments zusammengefasst.", + "Wichtige Themen und Diskussionen hervorgehoben.", + "Relevante Daten und Statistiken präsentiert.", + "Schlussfolgerungen und Empfehlungen gegeben.", + "Nächste Schritte und Aktionspunkte definiert." + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175836-182-chapter_2_section_section_2_response.txt b/prompts/20260322-175836-182-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..1f822513 --- /dev/null +++ b/prompts/20260322-175836-182-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Kernpunkte des Dokuments zusammengefasst.", + "Wichtige Themen und Diskussionen hervorgehoben.", + "Relevante Daten und Statistiken präsentiert.", + "Schlussfolgerungen und Empfehlungen gegeben.", + "Nächste Schritte und Aktionspunkte definiert." + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175836-183-chapter_2_section_section_1_response.txt b/prompts/20260322-175836-183-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..926ea283 --- /dev/null +++ b/prompts/20260322-175836-183-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Das Dokument behandelt die wesentlichen Punkte eines Projekts, einschließlich der Ziele, des Zeitplans und der erwarteten Ergebnisse. Es beschreibt die Verantwortlichkeiten der Teammitglieder und die Ressourcen, die zur Verfügung stehen. Zudem werden potenzielle Risiken und deren Managementstrategien erläutert. Abschließend wird auf die Bedeutung der Kommunikation und der regelmäßigen Berichterstattung hingewiesen, um den Fortschritt zu überwachen und Anpassungen vorzunehmen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175836-184-chapter_2_section_section_1_response.txt b/prompts/20260322-175836-184-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..926ea283 --- /dev/null +++ b/prompts/20260322-175836-184-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Das Dokument behandelt die wesentlichen Punkte eines Projekts, einschließlich der Ziele, des Zeitplans und der erwarteten Ergebnisse. Es beschreibt die Verantwortlichkeiten der Teammitglieder und die Ressourcen, die zur Verfügung stehen. Zudem werden potenzielle Risiken und deren Managementstrategien erläutert. Abschließend wird auf die Bedeutung der Kommunikation und der regelmäßigen Berichterstattung hingewiesen, um den Fortschritt zu überwachen und Anpassungen vorzunehmen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175836-185-chapter_2_section_section_3_response.txt b/prompts/20260322-175836-185-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..cdcc66ba --- /dev/null +++ b/prompts/20260322-175836-185-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Dieses Dokument zielt darauf ab, die wesentlichen Ziele und Absichten klar zu definieren. Es dient als Leitfaden für die Umsetzung spezifischer Maßnahmen und stellt sicher, dass alle Beteiligten ein gemeinsames Verständnis der angestrebten Ergebnisse haben. Die Zielsetzung umfasst die Festlegung von Prioritäten, die Identifizierung von Herausforderungen und die Entwicklung von Strategien zur Erreichung der gesetzten Ziele. Durch die klare Definition der Zielsetzung wird die Effizienz gesteigert und die Zusammenarbeit gefördert." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175836-186-chapter_2_section_section_3_response.txt b/prompts/20260322-175836-186-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..cdcc66ba --- /dev/null +++ b/prompts/20260322-175836-186-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Dieses Dokument zielt darauf ab, die wesentlichen Ziele und Absichten klar zu definieren. Es dient als Leitfaden für die Umsetzung spezifischer Maßnahmen und stellt sicher, dass alle Beteiligten ein gemeinsames Verständnis der angestrebten Ergebnisse haben. Die Zielsetzung umfasst die Festlegung von Prioritäten, die Identifizierung von Herausforderungen und die Entwicklung von Strategien zur Erreichung der gesetzten Ziele. Durch die klare Definition der Zielsetzung wird die Effizienz gesteigert und die Zusammenarbeit gefördert." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175836-187-chapter_3_section_section_2_response.txt b/prompts/20260322-175836-187-chapter_3_section_section_2_response.txt new file mode 100644 index 00000000..cb7f0263 --- /dev/null +++ b/prompts/20260322-175836-187-chapter_3_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Zusammenarbeit und Unterstützung. Es war eine Freude, mit Ihnen zu arbeiten. Ich wünsche Ihnen alles Gute für die Zukunft und hoffe, dass sich unsere Wege bald wieder kreuzen. Bleiben Sie gesund und erfolgreich!" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175836-188-chapter_3_section_section_2_response.txt b/prompts/20260322-175836-188-chapter_3_section_section_2_response.txt new file mode 100644 index 00000000..cb7f0263 --- /dev/null +++ b/prompts/20260322-175836-188-chapter_3_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Zusammenarbeit und Unterstützung. Es war eine Freude, mit Ihnen zu arbeiten. Ich wünsche Ihnen alles Gute für die Zukunft und hoffe, dass sich unsere Wege bald wieder kreuzen. Bleiben Sie gesund und erfolgreich!" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175836-189-document_generation_response.txt b/prompts/20260322-175836-189-document_generation_response.txt new file mode 100644 index 00000000..91b15e46 --- /dev/null +++ b/prompts/20260322-175836-189-document_generation_response.txt @@ -0,0 +1,155 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "sections": [ + { + "id": "chapter_1_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Einleitung", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung der E-Mail mit einer Begrüßung und dem Zweck der Nachricht.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Sehr geehrte Damen und Herren, ich hoffe, diese Nachricht trifft Sie wohl. Ich schreibe Ihnen, um den Zweck unserer bevorstehenden Zusammenarbeit zu erläutern und die nächsten Schritte zu besprechen. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen oder Fragen haben." + } + } + ] + }, + { + "id": "chapter_2_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Hauptinhalt", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung des Hauptinhalts des Dokuments", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Das Dokument behandelt die wesentlichen Punkte eines Projekts, einschließlich der Ziele, des Zeitplans und der erwarteten Ergebnisse. Es beschreibt die Verantwortlichkeiten der Teammitglieder und die Ressourcen, die zur Verfügung stehen. Zudem werden potenzielle Risiken und deren Managementstrategien erläutert. Abschließend wird auf die Bedeutung der Kommunikation und der regelmäßigen Berichterstattung hingewiesen, um den Fortschritt zu überwachen und Anpassungen vorzunehmen." + } + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Auflistung der wichtigsten Punkte des Dokuments", + "useAiCall": true, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Kernpunkte des Dokuments zusammengefasst.", + "Wichtige Themen und Diskussionen hervorgehoben.", + "Relevante Daten und Statistiken präsentiert.", + "Schlussfolgerungen und Empfehlungen gegeben.", + "Nächste Schritte und Aktionspunkte definiert." + ] + } + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Beschreibung der Zielsetzung des Dokuments", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Dieses Dokument zielt darauf ab, die wesentlichen Ziele und Absichten klar zu definieren. Es dient als Leitfaden für die Umsetzung spezifischer Maßnahmen und stellt sicher, dass alle Beteiligten ein gemeinsames Verständnis der angestrebten Ergebnisse haben. Die Zielsetzung umfasst die Festlegung von Prioritäten, die Identifizierung von Herausforderungen und die Entwicklung von Strategien zur Erreichung der gesetzten Ziele. Durch die klare Definition der Zielsetzung wird die Effizienz gesteigert und die Zusammenarbeit gefördert." + } + } + ] + }, + { + "id": "chapter_3_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Abschluss", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung der E-Mail-Inhalte", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen, die im vorherigen Dokument behandelt wurden. Es wird auf die wesentlichen Themen eingegangen, die für den Empfänger von Bedeutung sind. Die E-Mail enthält prägnante Informationen, die den Leser über die Hauptinhalte informieren, ohne unnötige Details oder Wiederholungen." + } + } + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Freundlicher Abschiedsgruß", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Zusammenarbeit und Unterstützung. Es war eine Freude, mit Ihnen zu arbeiten. Ich wünsche Ihnen alles Gute für die Zukunft und hoffe, dass sich unsere Wege bald wieder kreuzen. Bleiben Sie gesund und erfolgreich!" + } + } + ] + } + ], + "metadata": { + "outputStyle": "document" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-175837-190-email_composition_prompt.txt b/prompts/20260322-175837-190-email_composition_prompt.txt new file mode 100644 index 00000000..7fcced39 --- /dev/null +++ b/prompts/20260322-175837-190-email_composition_prompt.txt @@ -0,0 +1,22 @@ +Compose an email based on this context: +------- +Email Entwurf\n=============\n\nEinleitung\n==========\n\nSehr geehrte Damen und Herren, ich hoffe, diese Nachricht trifft Sie wohl. Ich schreibe Ihnen, um den Zweck unserer bevorstehenden Zusammenarbeit zu erläutern und die nächsten Schritte zu besprechen. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen oder Fragen haben.\n\nHauptinhalt\n===========\n\nDas Dokument behandelt die wesentlichen Punkte eines Projekts, einschließlich der Ziele, des Zeitplans und der erwarteten Ergebnisse. Es beschreibt die Verantwortlichkeiten der Teammitglieder und die Ressourcen, die zur Verfügung stehen. Zudem werden potenzielle Risiken und deren Managementstrategien erläutert. Abschließend wird auf die Bedeutung der Kommunikation und der regelmäßigen Berichterstattung hingewiesen, um den Fortschritt zu überwachen und Anpassungen vorzunehmen.\n\n- Kernpunkte des Dokuments zusammengefasst.\n- Wichtige Themen und Diskussionen hervorgehoben.\n- Relevante Daten und Statistiken präsentiert.\n- Schlussfolgerungen und Empfehlungen gegeben.\n- Nächste Schritte und Aktionspunkte definiert.\n\nDieses Dokument zielt darauf ab, die wesentlichen Ziele und Absichten klar zu definieren. Es dient als Leitfaden für die Umsetzung spezifischer Maßnahmen und stellt sicher, dass alle Beteiligten ein gemeinsames Verständnis der angestrebten Ergebnisse haben. Die Zielsetzung umfasst die Festlegung von Prioritäten, die Identifizierung von Herausforderungen und die Entwicklung von Strategien zur Erreichung der gesetzten Ziele. Durch die klare Definition der Zielsetzung wird die Effizienz gesteigert und die Zusammenarbeit gefördert.\n\nAbschluss\n=========\n\nDie E-Mail fasst die wichtigsten Punkte zusammen, die im vorherigen Dokument behandelt wurden. Es wird auf die wesentlichen Themen eingegangen, die für den Empfänger von Bedeutung sind. Die E-Mail enthält prägnante Informationen, die den Leser über die Hauptinhalte informieren, ohne unnötige Details oder Wiederholungen.\n\nVielen Dank für Ihre Zusammenarbeit und Unterstützung. Es war eine Freude, mit Ihnen zu arbeiten. Ich wünsche Ihnen alles Gute für die Zukunft und hoffe, dass sich unsere Wege bald wieder kreuzen. Bleiben Sie gesund und erfolgreich!\n\n\nGenerated: 2026-03-22 17:58:36 UTC +------- + +Recipients: (not specified - this is a draft) +Style: business +Max length: 1000 characters + +Available_Document_References: + - (no documents) + +Based on the context, decide which documents to attach. + +CRITICAL: Use EXACT document references from Available_Document_References above. For individual documents: ALWAYS use docItem:: format (include filename) + +Return JSON: +{ + "subject": "subject line", + "body": "email body (HTML allowed)", + "attachments": ["docItem::"] +} diff --git a/prompts/20260322-175839-191-email_composition_response.txt b/prompts/20260322-175839-191-email_composition_response.txt new file mode 100644 index 00000000..6ce6ef86 --- /dev/null +++ b/prompts/20260322-175839-191-email_composition_response.txt @@ -0,0 +1,7 @@ +```json +{ + "subject": "Zusammenarbeit und nächste Schritte", + "body": "Sehr geehrte Damen und Herren,

ich hoffe, diese Nachricht trifft Sie wohl. Ich schreibe Ihnen, um den Zweck unserer bevorstehenden Zusammenarbeit zu erläutern und die nächsten Schritte zu besprechen. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen oder Fragen haben.

Das Dokument behandelt die wesentlichen Punkte eines Projekts, einschließlich der Ziele, des Zeitplans und der erwarteten Ergebnisse. Es beschreibt die Verantwortlichkeiten der Teammitglieder und die Ressourcen, die zur Verfügung stehen. Zudem werden potenzielle Risiken und deren Managementstrategien erläutert. Abschließend wird auf die Bedeutung der Kommunikation und der regelmäßigen Berichterstattung hingewiesen, um den Fortschritt zu überwachen und Anpassungen vorzunehmen.

Vielen Dank für Ihre Zusammenarbeit und Unterstützung. Es war eine Freude, mit Ihnen zu arbeiten. Ich wünsche Ihnen alles Gute für die Zukunft und hoffe, dass sich unsere Wege bald wieder kreuzen. Bleiben Sie gesund und erfolgreich!

Mit freundlichen Grüßen,
[Ihr Name]", + "attachments": [] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180140-192-chapter_structure_generation_prompt.txt b/prompts/20260322-180140-192-chapter_structure_generation_prompt.txt new file mode 100644 index 00000000..49ba0ee5 --- /dev/null +++ b/prompts/20260322-180140-192-chapter_structure_generation_prompt.txt @@ -0,0 +1,119 @@ +# TASK: Plan Document Structure (Documents + Chapters) + +This is a STRUCTURE PLANNING task. You define which documents to create and which chapters each document will have. +Chapter CONTENT will be generated in a later step - here you only plan the STRUCTURE and assign content references. +Return EXACTLY ONE complete JSON object. Do not generate multiple JSON objects, alternatives, or variations. Do not use separators like "---" between JSON objects. + +## USER REQUEST (for context) +``` +entwirf eine email mit dem inhalt des files davor +``` + +## AVAILABLE CONTENT PARTS + +(No content parts available) + +## CONTENT ASSIGNMENT RULE + +CRITICAL: Every chapter MUST have contentParts assigned if it relates to documents/images/data from the user request. +If the user request mentions documents/images/data, then EVERY chapter that generates content related to those references MUST assign the relevant ContentParts explicitly. + +Assignment logic: +- If chapter DISPLAYS a document/image → assign "object" format ContentPart with "caption" +- If chapter generates text content ABOUT a document/image/data → assign ContentPart with "instruction": + - Prefer "extracted" format if available (contains analyzed/extracted content) + - If only "object" format is available, use "object" format with "instruction" (to write ABOUT the image/document) +- If chapter's generationHint or purpose relates to a document/image/data mentioned in user request → it MUST have ContentParts assigned +- Multiple chapters might assign the same ContentPart (e.g., one chapter displays image, another writes about it) +- Use ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above +- Empty contentParts are only allowed if chapter generates content WITHOUT referencing any documents/images/data from the user request + +CRITICAL RULE: If the user request mentions BOTH: + a) Documents/images/data (listed in AVAILABLE CONTENT PARTS above), AND + b) Generic content types (article text, main content, body text, etc.) +Then chapters that generate those generic content types MUST assign the relevant ContentParts, because the content should relate to or be based on the provided documents/images/data. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential information only +- AVOID verbose, lengthy, or repetitive text - be concise and direct +- Prioritize FACTS over filler text - no introductions like "In this chapter..." +- Minimize system resources: shorter content = faster processing +- Quality over quantity: precise, meaningful content rather than padding + +## CHAPTER STRUCTURE REQUIREMENTS +- Generate chapters based on USER REQUEST - analyze what structure the user wants +- Create ONLY the minimum chapters needed to cover the user's request - avoid over-structuring +- HARD LIMIT: Maximum 7 chapters per document. If the topic can be covered in fewer, prefer fewer. Combine related topics into single chapters rather than creating many small ones. +- IMPORTANT: Each chapter MUST have ALL these fields: + - id: Unique identifier (e.g., "chapter_1") + - level: Heading level (1, 2, 3, etc.) + - title: Chapter title + - contentParts: Object mapping ContentPart IDs to usage instructions (MUST assign if chapter relates to documents/data from user request) + - generationHint: Description of what content to generate (including formatting/styling requirements) + - sections: Empty array [] (REQUIRED - sections are generated in next phase) +- contentParts: {"partId": {"instruction": "..."} or {"caption": "..."} or both} - Assign ContentParts as required by CONTENT ASSIGNMENT RULE above +- The "instruction" field for each ContentPart MUST contain ALL relevant details from the USER REQUEST that apply to content extraction for this specific chapter. Include all formatting rules, data requirements, constraints, and specifications mentioned in the user request that are relevant for processing this ContentPart in this chapter. +- generationHint: Keep CONCISE but include relevant details from the USER REQUEST. Focus on WHAT to generate, not HOW to phrase it verbosely. +- The number of chapters depends on the user request - create only what is requested. Do NOT create chapters for topics without available data. + +CRITICAL: Only create chapters for CONTENT sections, not for formatting/styling requirements. Formatting/styling requirements to be included in each generationHint if needed. + +## DOCUMENT STRUCTURE + +For each document, determine: +- outputFormat: From USER REQUEST (explicit mention or infer from purpose/content type). Default: "txt". Multiple documents can have different formats. +- language: From USER REQUEST (map to ISO 639-1: de, en, fr, it...). Default: "de". Multiple documents can have different languages. +- chapters: Structure appropriately for the format (e.g., pptx=slides, docx=sections, xlsx=worksheets). Match format capabilities and constraints. + +Required JSON fields: +- metadata: {"title": "...", "language": "..."} +- documents: Array with id, title, filename, outputFormat, language, chapters[] +- chapters: Array with id, level, title, contentParts, generationHint, sections[] + +EXAMPLE STRUCTURE (for reference only - adapt to user request): +{ + "metadata": { + "title": "Document Title", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "Document Title", + "filename": "document.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Chapter Title", + "contentParts": { + "extracted_part_id": { + "instruction": "Use extracted content with ALL relevant details from user request" + } + }, + "generationHint": "Detailed description including ALL relevant details from user request for this chapter", + "sections": [] + } + ] + }] +} + +CRITICAL INSTRUCTIONS: +- Generate chapters based on USER REQUEST, NOT based on the example above +- The example shows the JSON structure format, NOT the required chapters +- Create only the chapters that match the user's request +- Adapt chapter titles and structure to match the user's specific request +- Determine outputFormat and language for each document by analyzing the USER REQUEST above +- The example shows placeholders "txt" and "de" - YOU MUST REPLACE THESE with actual values determined from the USER REQUEST + +MANDATORY CONTENT ASSIGNMENT CHECK: +For each chapter, verify: +1. Does the user request mention documents/images/data? (e.g., "photo", "image", "document", "data", "based on", "about") +2. Does this chapter's generationHint, title, or purpose relate to those documents/images/data mentioned in step 1? + - Examples: "article about the photo", "text describing the image", "analysis of the document", "content based on the data" + - Even if chapter doesn't explicitly say "about the image", if user request mentions both the image AND this chapter's content type → relate them +3. If YES to both → chapter MUST have contentParts assigned (cannot be empty {}) +4. If ContentPart is "object" format and chapter needs to write ABOUT it → assign with "instruction" field, not just "caption" + +OUTPUT FORMAT: Start with { and end with }. Do NOT use markdown code fences (```json). Do NOT add explanatory text before or after the JSON. Return ONLY the JSON object itself. diff --git a/prompts/20260322-180143-193-chapter_structure_generation_response.txt b/prompts/20260322-180143-193-chapter_structure_generation_response.txt new file mode 100644 index 00000000..ef0b47fd --- /dev/null +++ b/prompts/20260322-180143-193-chapter_structure_generation_response.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail, die den Kontext und den Zweck der Nachricht beschreibt.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptteil", + "contentParts": {}, + "generationHint": "Hauptinhalt der E-Mail, der die wichtigsten Informationen und Details enthält.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schluss", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung oder einem Aufruf zum Handeln.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180143-194-chapter_structure_generation_final_result.txt b/prompts/20260322-180143-194-chapter_structure_generation_final_result.txt new file mode 100644 index 00000000..ef0b47fd --- /dev/null +++ b/prompts/20260322-180143-194-chapter_structure_generation_final_result.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail, die den Kontext und den Zweck der Nachricht beschreibt.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptteil", + "contentParts": {}, + "generationHint": "Hauptinhalt der E-Mail, der die wichtigsten Informationen und Details enthält.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schluss", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung oder einem Aufruf zum Handeln.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180143-195-chapter_structure_chapter_1_prompt.txt b/prompts/20260322-180143-195-chapter_structure_chapter_1_prompt.txt new file mode 100644 index 00000000..83eb5724 --- /dev/null +++ b/prompts/20260322-180143-195-chapter_structure_chapter_1_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Einleitung (Level 1, ID: chapter_1) +GENERATION HINT: Einleitung der E-Mail, die den Kontext und den Zweck der Nachricht beschreibt. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-180143-196-chapter_structure_chapter_2_prompt.txt b/prompts/20260322-180143-196-chapter_structure_chapter_2_prompt.txt new file mode 100644 index 00000000..106878f8 --- /dev/null +++ b/prompts/20260322-180143-196-chapter_structure_chapter_2_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Hauptteil (Level 1, ID: chapter_2) +GENERATION HINT: Hauptinhalt der E-Mail, der die wichtigsten Informationen und Details enthält. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-180143-197-chapter_structure_chapter_3_prompt.txt b/prompts/20260322-180143-197-chapter_structure_chapter_3_prompt.txt new file mode 100644 index 00000000..fca4dccb --- /dev/null +++ b/prompts/20260322-180143-197-chapter_structure_chapter_3_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Schluss (Level 1, ID: chapter_3) +GENERATION HINT: Abschluss der E-Mail mit einer Zusammenfassung oder einem Aufruf zum Handeln. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-180146-198-chapter_structure_chapter_3_response.txt b/prompts/20260322-180146-198-chapter_structure_chapter_3_response.txt new file mode 100644 index 00000000..fb5a6e61 --- /dev/null +++ b/prompts/20260322-180146-198-chapter_structure_chapter_3_response.txt @@ -0,0 +1,26 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung der wichtigsten Punkte.", + "useAiCall": true, + "elements": [ + "Zusammenfassend lässt sich sagen, dass die besprochenen Themen von großer Bedeutung für unsere zukünftigen Schritte sind. Es ist entscheidend, dass wir die besprochenen Maßnahmen umsetzen, um unsere Ziele zu erreichen." + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Aufruf zum Handeln, um die Empfänger zur Umsetzung der besprochenen Maßnahmen zu motivieren.", + "useAiCall": true, + "elements": [ + "Wir bitten Sie, die nächsten Schritte in Angriff zu nehmen und die vorgeschlagenen Maßnahmen zeitnah umzusetzen. Ihre Unterstützung und Ihr Engagement sind entscheidend für den Erfolg unseres Projekts." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180148-199-chapter_structure_chapter_2_response.txt b/prompts/20260322-180148-199-chapter_structure_chapter_2_response.txt new file mode 100644 index 00000000..f9a3b85d --- /dev/null +++ b/prompts/20260322-180148-199-chapter_structure_chapter_2_response.txt @@ -0,0 +1,65 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung des Hauptteils mit einer kurzen Zusammenfassung der E-Mail-Inhalte.", + "useAiCall": true, + "elements": [ + "In diesem Abschnitt wird der Hauptinhalt der E-Mail vorgestellt. Hier finden Sie eine Übersicht über die wichtigsten Informationen und Details, die in der E-Mail behandelt werden." + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Auflistung der wichtigsten Punkte oder Themen, die in der E-Mail behandelt werden.", + "useAiCall": true, + "elements": [ + "Wichtiger Punkt 1: Beschreibung und Details.", + "Wichtiger Punkt 2: Beschreibung und Details.", + "Wichtiger Punkt 3: Beschreibung und Details." + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Erklärung eines spezifischen Themas oder Aspekts der E-Mail.", + "useAiCall": true, + "elements": [ + "Dieser Abschnitt bietet eine tiefere Einsicht in ein spezifisches Thema, das in der E-Mail behandelt wird. Hier werden die relevanten Details und Informationen ausführlich erklärt, um ein besseres Verständnis zu ermöglichen." + ] + }, + { + "id": "section_4", + "content_type": "table", + "contentPartIds": [], + "generationHint": "Tabelle mit wichtigen Daten oder Statistiken, die in der E-Mail erwähnt werden.", + "useAiCall": true, + "elements": [ + { + "headers": ["Thema", "Details"], + "rows": [ + ["Thema 1", "Details zu Thema 1"], + ["Thema 2", "Details zu Thema 2"], + ["Thema 3", "Details zu Thema 3"] + ] + } + ] + }, + { + "id": "section_5", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschluss des Hauptteils mit einer Zusammenfassung oder einem Ausblick.", + "useAiCall": true, + "elements": [ + "Zum Abschluss des Hauptteils werden die wichtigsten Punkte zusammengefasst und ein Ausblick auf die nächsten Schritte oder zukünftige Entwicklungen gegeben." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180149-200-chapter_structure_chapter_1_response.txt b/prompts/20260322-180149-200-chapter_structure_chapter_1_response.txt new file mode 100644 index 00000000..d4d1a9a0 --- /dev/null +++ b/prompts/20260322-180149-200-chapter_structure_chapter_1_response.txt @@ -0,0 +1,53 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einführung in den Kontext der E-Mail und den Zweck der Nachricht", + "useAiCall": true, + "elements": [ + { + "type": "text", + "content": "Diese E-Mail dient dazu, den Empfänger über die aktuellen Entwicklungen und Ziele des Projekts zu informieren. Sie bietet einen Überblick über die wichtigsten Themen und gibt Hinweise auf die nächsten Schritte, die unternommen werden müssen, um die gesetzten Ziele zu erreichen." + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Hauptziele der Nachricht zusammenfassen", + "useAiCall": true, + "elements": [ + { + "type": "item", + "content": "Information über den aktuellen Projektstatus" + }, + { + "type": "item", + "content": "Darstellung der nächsten Schritte und Fristen" + }, + { + "type": "item", + "content": "Erklärung der erwarteten Ergebnisse und deren Bedeutung" + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Erklärung der Relevanz der Nachricht für den Empfänger", + "useAiCall": true, + "elements": [ + { + "type": "text", + "content": "Die Informationen in dieser E-Mail sind entscheidend, um sicherzustellen, dass alle Beteiligten auf dem gleichen Stand sind und effektiv zusammenarbeiten können. Dies trägt dazu bei, Missverständnisse zu vermeiden und die Effizienz des Teams zu steigern." + } + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180149-201-chapter_1_section_section_1_prompt.txt b/prompts/20260322-180149-201-chapter_1_section_section_1_prompt.txt new file mode 100644 index 00000000..d7929017 --- /dev/null +++ b/prompts/20260322-180149-201-chapter_1_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einführung in den Kontext der E-Mail und den Zweck der Nachricht +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-180149-202-chapter_1_section_section_2_prompt.txt b/prompts/20260322-180149-202-chapter_1_section_section_2_prompt.txt new file mode 100644 index 00000000..b77c4fd5 --- /dev/null +++ b/prompts/20260322-180149-202-chapter_1_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: bullet_list +- Generation Hint: Hauptziele der Nachricht zusammenfassen +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-180149-203-chapter_1_section_section_3_prompt.txt b/prompts/20260322-180149-203-chapter_1_section_section_3_prompt.txt new file mode 100644 index 00000000..f2cab613 --- /dev/null +++ b/prompts/20260322-180149-203-chapter_1_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: paragraph +- Generation Hint: Erklärung der Relevanz der Nachricht für den Empfänger +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_2 (bullet_list): + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-180149-204-chapter_2_section_section_1_prompt.txt b/prompts/20260322-180149-204-chapter_2_section_section_1_prompt.txt new file mode 100644 index 00000000..246981cb --- /dev/null +++ b/prompts/20260322-180149-204-chapter_2_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einleitung des Hauptteils mit einer kurzen Zusammenfassung der E-Mail-Inhalte. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-180149-205-chapter_2_section_section_2_prompt.txt b/prompts/20260322-180149-205-chapter_2_section_section_2_prompt.txt new file mode 100644 index 00000000..44bd8260 --- /dev/null +++ b/prompts/20260322-180149-205-chapter_2_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: bullet_list +- Generation Hint: Auflistung der wichtigsten Punkte oder Themen, die in der E-Mail behandelt werden. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-180150-206-chapter_1_section_section_2_response.txt b/prompts/20260322-180150-206-chapter_1_section_section_2_response.txt new file mode 100644 index 00000000..81166dc6 --- /dev/null +++ b/prompts/20260322-180150-206-chapter_1_section_section_2_response.txt @@ -0,0 +1,14 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Hauptziel der Nachricht klären", + "Wichtige Informationen prägnant zusammenfassen", + "Empfänger zur Handlung auffordern" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180150-207-chapter_1_section_section_2_response.txt b/prompts/20260322-180150-207-chapter_1_section_section_2_response.txt new file mode 100644 index 00000000..81166dc6 --- /dev/null +++ b/prompts/20260322-180150-207-chapter_1_section_section_2_response.txt @@ -0,0 +1,14 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Hauptziel der Nachricht klären", + "Wichtige Informationen prägnant zusammenfassen", + "Empfänger zur Handlung auffordern" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180150-208-chapter_2_section_section_3_prompt.txt b/prompts/20260322-180150-208-chapter_2_section_section_3_prompt.txt new file mode 100644 index 00000000..4dd099ca --- /dev/null +++ b/prompts/20260322-180150-208-chapter_2_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: paragraph +- Generation Hint: Detaillierte Erklärung eines spezifischen Themas oder Aspekts der E-Mail. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_2 (bullet_list): + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-180151-209-chapter_2_section_section_2_response.txt b/prompts/20260322-180151-209-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..520c4524 --- /dev/null +++ b/prompts/20260322-180151-209-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Begrüßung und Vorstellung des Absenders", + "Zweck der E-Mail und Hauptanliegen", + "Wichtige Informationen oder Updates", + "Erforderliche Aktionen oder Antworten des Empfängers", + "Abschluss und Dank für die Aufmerksamkeit" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180151-210-chapter_2_section_section_2_response.txt b/prompts/20260322-180151-210-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..520c4524 --- /dev/null +++ b/prompts/20260322-180151-210-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Begrüßung und Vorstellung des Absenders", + "Zweck der E-Mail und Hauptanliegen", + "Wichtige Informationen oder Updates", + "Erforderliche Aktionen oder Antworten des Empfängers", + "Abschluss und Dank für die Aufmerksamkeit" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180151-211-chapter_2_section_section_1_response.txt b/prompts/20260322-180151-211-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..dae47efa --- /dev/null +++ b/prompts/20260322-180151-211-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte des vorherigen Dokuments zusammen. Sie enthält eine Übersicht über die besprochenen Themen und die daraus resultierenden Aufgaben. Zudem werden die nächsten Schritte und Fristen für die Umsetzung der besprochenen Maßnahmen festgelegt." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180151-212-chapter_2_section_section_1_response.txt b/prompts/20260322-180151-212-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..dae47efa --- /dev/null +++ b/prompts/20260322-180151-212-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte des vorherigen Dokuments zusammen. Sie enthält eine Übersicht über die besprochenen Themen und die daraus resultierenden Aufgaben. Zudem werden die nächsten Schritte und Fristen für die Umsetzung der besprochenen Maßnahmen festgelegt." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180151-213-chapter_2_section_section_4_prompt.txt b/prompts/20260322-180151-213-chapter_2_section_section_4_prompt.txt new file mode 100644 index 00000000..8cf790a9 --- /dev/null +++ b/prompts/20260322-180151-213-chapter_2_section_section_4_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_4 +- Content Type: table +- Generation Hint: Tabelle mit wichtigen Daten oder Statistiken, die in der E-Mail erwähnt werden. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (table). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "table", + "content": {{"headers": ["Column1", "Column2"], "rows": [["Value1", "Value2"], ["Value3", "Value4"]]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_2 (bullet_list): +- section_3 (paragraph): + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-180151-214-chapter_2_section_section_5_prompt.txt b/prompts/20260322-180151-214-chapter_2_section_section_5_prompt.txt new file mode 100644 index 00000000..8a79acbc --- /dev/null +++ b/prompts/20260322-180151-214-chapter_2_section_section_5_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_5 +- Content Type: paragraph +- Generation Hint: Abschluss des Hauptteils mit einer Zusammenfassung oder einem Ausblick. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_3 (paragraph): +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_4 (table): + diff --git a/prompts/20260322-180151-215-chapter_1_section_section_1_response.txt b/prompts/20260322-180151-215-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..412fb426 --- /dev/null +++ b/prompts/20260322-180151-215-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, den Empfänger über die wichtigsten Informationen und den Zweck der Nachricht zu informieren. Sie enthält wesentliche Details, die für das Verständnis des Kontextes und der beabsichtigten Maßnahmen erforderlich sind. Ziel ist es, Klarheit zu schaffen und die nächsten Schritte zu erleichtern." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180151-216-chapter_1_section_section_1_response.txt b/prompts/20260322-180151-216-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..412fb426 --- /dev/null +++ b/prompts/20260322-180151-216-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, den Empfänger über die wichtigsten Informationen und den Zweck der Nachricht zu informieren. Sie enthält wesentliche Details, die für das Verständnis des Kontextes und der beabsichtigten Maßnahmen erforderlich sind. Ziel ist es, Klarheit zu schaffen und die nächsten Schritte zu erleichtern." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180151-217-chapter_3_section_section_1_prompt.txt b/prompts/20260322-180151-217-chapter_3_section_section_1_prompt.txt new file mode 100644 index 00000000..397f5687 --- /dev/null +++ b/prompts/20260322-180151-217-chapter_3_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Abschluss der E-Mail mit einer Zusammenfassung der wichtigsten Punkte. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-180152-218-chapter_1_section_section_3_response.txt b/prompts/20260322-180152-218-chapter_1_section_section_3_response.txt new file mode 100644 index 00000000..cd81fa84 --- /dev/null +++ b/prompts/20260322-180152-218-chapter_1_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die Nachricht ist für den Empfänger von großer Bedeutung, da sie wichtige Informationen enthält, die direkte Auswirkungen auf aktuelle Projekte und Entscheidungen haben können. Sie bietet Einblicke in relevante Entwicklungen und unterstützt fundierte Entscheidungen. Durch das Verständnis dieser Nachricht kann der Empfänger strategische Vorteile erlangen und mögliche Risiken besser einschätzen. Die Relevanz liegt auch in der Möglichkeit, auf Basis der Informationen proaktiv zu handeln und somit die Effizienz und Effektivität der eigenen Arbeit zu steigern." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180152-219-chapter_1_section_section_3_response.txt b/prompts/20260322-180152-219-chapter_1_section_section_3_response.txt new file mode 100644 index 00000000..cd81fa84 --- /dev/null +++ b/prompts/20260322-180152-219-chapter_1_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die Nachricht ist für den Empfänger von großer Bedeutung, da sie wichtige Informationen enthält, die direkte Auswirkungen auf aktuelle Projekte und Entscheidungen haben können. Sie bietet Einblicke in relevante Entwicklungen und unterstützt fundierte Entscheidungen. Durch das Verständnis dieser Nachricht kann der Empfänger strategische Vorteile erlangen und mögliche Risiken besser einschätzen. Die Relevanz liegt auch in der Möglichkeit, auf Basis der Informationen proaktiv zu handeln und somit die Effizienz und Effektivität der eigenen Arbeit zu steigern." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180152-220-chapter_3_section_section_2_prompt.txt b/prompts/20260322-180152-220-chapter_3_section_section_2_prompt.txt new file mode 100644 index 00000000..34d6526c --- /dev/null +++ b/prompts/20260322-180152-220-chapter_3_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: paragraph +- Generation Hint: Aufruf zum Handeln, um die Empfänger zur Umsetzung der besprochenen Maßnahmen zu motivieren. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-180152-221-chapter_2_section_section_4_response.txt b/prompts/20260322-180152-221-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..d14b4d85 --- /dev/null +++ b/prompts/20260322-180152-221-chapter_2_section_section_4_response.txt @@ -0,0 +1,17 @@ +{ + "elements": [ + { + "type": "table", + "content": { + "headers": ["Datum", "Statistik"], + "rows": [ + ["01.01.2023", "Umsatz: 10.000€"], + ["01.02.2023", "Umsatz: 12.000€"], + ["01.03.2023", "Umsatz: 15.000€"], + ["01.04.2023", "Umsatz: 14.000€"], + ["01.05.2023", "Umsatz: 16.500€"] + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180152-222-chapter_2_section_section_4_response.txt b/prompts/20260322-180152-222-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..1109cf6f --- /dev/null +++ b/prompts/20260322-180152-222-chapter_2_section_section_4_response.txt @@ -0,0 +1,35 @@ +{ + "elements": [ + { + "type": "table", + "content": { + "headers": [ + "Datum", + "Statistik" + ], + "rows": [ + [ + "01.01.2023", + "Umsatz: 10.000€" + ], + [ + "01.02.2023", + "Umsatz: 12.000€" + ], + [ + "01.03.2023", + "Umsatz: 15.000€" + ], + [ + "01.04.2023", + "Umsatz: 14.000€" + ], + [ + "01.05.2023", + "Umsatz: 16.500€" + ] + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180153-223-chapter_2_section_section_5_response.txt b/prompts/20260322-180153-223-chapter_2_section_section_5_response.txt new file mode 100644 index 00000000..04a06e7b --- /dev/null +++ b/prompts/20260322-180153-223-chapter_2_section_section_5_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Abschließend lässt sich festhalten, dass die im Hauptteil dargestellten Argumente und Analysen eine solide Grundlage für zukünftige Entscheidungen bieten. Die gewonnenen Erkenntnisse ermöglichen es, strategische Maßnahmen zu entwickeln, die sowohl kurz- als auch langfristige Ziele unterstützen. Ein Ausblick auf kommende Entwicklungen zeigt, dass Flexibilität und Anpassungsfähigkeit entscheidend sein werden, um auf dynamische Veränderungen im Marktumfeld reagieren zu können. Die kontinuierliche Beobachtung und Bewertung der relevanten Faktoren bleibt daher unerlässlich, um nachhaltig erfolgreich zu sein." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180153-224-chapter_2_section_section_5_response.txt b/prompts/20260322-180153-224-chapter_2_section_section_5_response.txt new file mode 100644 index 00000000..04a06e7b --- /dev/null +++ b/prompts/20260322-180153-224-chapter_2_section_section_5_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Abschließend lässt sich festhalten, dass die im Hauptteil dargestellten Argumente und Analysen eine solide Grundlage für zukünftige Entscheidungen bieten. Die gewonnenen Erkenntnisse ermöglichen es, strategische Maßnahmen zu entwickeln, die sowohl kurz- als auch langfristige Ziele unterstützen. Ein Ausblick auf kommende Entwicklungen zeigt, dass Flexibilität und Anpassungsfähigkeit entscheidend sein werden, um auf dynamische Veränderungen im Marktumfeld reagieren zu können. Die kontinuierliche Beobachtung und Bewertung der relevanten Faktoren bleibt daher unerlässlich, um nachhaltig erfolgreich zu sein." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180153-225-chapter_3_section_section_1_response.txt b/prompts/20260322-180153-225-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..557fa783 --- /dev/null +++ b/prompts/20260322-180153-225-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass die besprochenen Punkte entscheidend für den weiteren Fortschritt sind. Die Hauptthemen umfassten die Optimierung der Prozesse, die Verbesserung der Kommunikation und die Notwendigkeit einer klaren Zielsetzung. Es ist wichtig, dass alle Beteiligten diese Aspekte berücksichtigen, um die Effizienz und den Erfolg des Projekts sicherzustellen. Bei Fragen oder weiteren Anmerkungen stehe ich gerne zur Verfügung." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180153-226-chapter_3_section_section_1_response.txt b/prompts/20260322-180153-226-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..557fa783 --- /dev/null +++ b/prompts/20260322-180153-226-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass die besprochenen Punkte entscheidend für den weiteren Fortschritt sind. Die Hauptthemen umfassten die Optimierung der Prozesse, die Verbesserung der Kommunikation und die Notwendigkeit einer klaren Zielsetzung. Es ist wichtig, dass alle Beteiligten diese Aspekte berücksichtigen, um die Effizienz und den Erfolg des Projekts sicherzustellen. Bei Fragen oder weiteren Anmerkungen stehe ich gerne zur Verfügung." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180153-227-chapter_2_section_section_3_response.txt b/prompts/20260322-180153-227-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..b06c2e9d --- /dev/null +++ b/prompts/20260322-180153-227-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Eine E-Mail ist ein elektronisches Kommunikationsmittel, das es ermöglicht, Nachrichten schnell und effizient über das Internet zu versenden. Sie besteht aus mehreren Komponenten, darunter die Betreffzeile, die den Hauptinhalt der Nachricht zusammenfasst, und der Hauptteil, in dem der eigentliche Text der Nachricht enthalten ist. Anhänge können hinzugefügt werden, um zusätzliche Dateien zu übermitteln. Die E-Mail-Adresse des Empfängers ist entscheidend, um sicherzustellen, dass die Nachricht den richtigen Adressaten erreicht. E-Mails bieten eine flexible und kostengünstige Möglichkeit, Informationen auszutauschen und sind aus dem modernen Geschäftsleben nicht mehr wegzudenken." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180153-228-chapter_2_section_section_3_response.txt b/prompts/20260322-180153-228-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..b06c2e9d --- /dev/null +++ b/prompts/20260322-180153-228-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Eine E-Mail ist ein elektronisches Kommunikationsmittel, das es ermöglicht, Nachrichten schnell und effizient über das Internet zu versenden. Sie besteht aus mehreren Komponenten, darunter die Betreffzeile, die den Hauptinhalt der Nachricht zusammenfasst, und der Hauptteil, in dem der eigentliche Text der Nachricht enthalten ist. Anhänge können hinzugefügt werden, um zusätzliche Dateien zu übermitteln. Die E-Mail-Adresse des Empfängers ist entscheidend, um sicherzustellen, dass die Nachricht den richtigen Adressaten erreicht. E-Mails bieten eine flexible und kostengünstige Möglichkeit, Informationen auszutauschen und sind aus dem modernen Geschäftsleben nicht mehr wegzudenken." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180154-229-chapter_3_section_section_2_response.txt b/prompts/20260322-180154-229-chapter_3_section_section_2_response.txt new file mode 100644 index 00000000..0f7b8522 --- /dev/null +++ b/prompts/20260322-180154-229-chapter_3_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Jetzt ist der Moment, um die besprochenen Maßnahmen in die Tat umzusetzen. Jeder Schritt, den Sie unternehmen, bringt uns näher an unser gemeinsames Ziel. Lassen Sie uns entschlossen handeln und die notwendigen Veränderungen vorantreiben. Ihre aktive Beteiligung ist entscheidend für den Erfolg. Packen wir es an!" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180154-230-chapter_3_section_section_2_response.txt b/prompts/20260322-180154-230-chapter_3_section_section_2_response.txt new file mode 100644 index 00000000..0f7b8522 --- /dev/null +++ b/prompts/20260322-180154-230-chapter_3_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Jetzt ist der Moment, um die besprochenen Maßnahmen in die Tat umzusetzen. Jeder Schritt, den Sie unternehmen, bringt uns näher an unser gemeinsames Ziel. Lassen Sie uns entschlossen handeln und die notwendigen Veränderungen vorantreiben. Ihre aktive Beteiligung ist entscheidend für den Erfolg. Packen wir es an!" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180154-231-document_generation_response.txt b/prompts/20260322-180154-231-document_generation_response.txt new file mode 100644 index 00000000..d5bc58d9 --- /dev/null +++ b/prompts/20260322-180154-231-document_generation_response.txt @@ -0,0 +1,244 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "sections": [ + { + "id": "chapter_1_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Einleitung", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einführung in den Kontext der E-Mail und den Zweck der Nachricht", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, den Empfänger über die wichtigsten Informationen und den Zweck der Nachricht zu informieren. Sie enthält wesentliche Details, die für das Verständnis des Kontextes und der beabsichtigten Maßnahmen erforderlich sind. Ziel ist es, Klarheit zu schaffen und die nächsten Schritte zu erleichtern." + } + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Hauptziele der Nachricht zusammenfassen", + "useAiCall": true, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Hauptziel der Nachricht klären", + "Wichtige Informationen prägnant zusammenfassen", + "Empfänger zur Handlung auffordern" + ] + } + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Erklärung der Relevanz der Nachricht für den Empfänger", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die Nachricht ist für den Empfänger von großer Bedeutung, da sie wichtige Informationen enthält, die direkte Auswirkungen auf aktuelle Projekte und Entscheidungen haben können. Sie bietet Einblicke in relevante Entwicklungen und unterstützt fundierte Entscheidungen. Durch das Verständnis dieser Nachricht kann der Empfänger strategische Vorteile erlangen und mögliche Risiken besser einschätzen. Die Relevanz liegt auch in der Möglichkeit, auf Basis der Informationen proaktiv zu handeln und somit die Effizienz und Effektivität der eigenen Arbeit zu steigern." + } + } + ] + }, + { + "id": "chapter_2_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Hauptteil", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung des Hauptteils mit einer kurzen Zusammenfassung der E-Mail-Inhalte.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte des vorherigen Dokuments zusammen. Sie enthält eine Übersicht über die besprochenen Themen und die daraus resultierenden Aufgaben. Zudem werden die nächsten Schritte und Fristen für die Umsetzung der besprochenen Maßnahmen festgelegt." + } + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Auflistung der wichtigsten Punkte oder Themen, die in der E-Mail behandelt werden.", + "useAiCall": true, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Begrüßung und Vorstellung des Absenders", + "Zweck der E-Mail und Hauptanliegen", + "Wichtige Informationen oder Updates", + "Erforderliche Aktionen oder Antworten des Empfängers", + "Abschluss und Dank für die Aufmerksamkeit" + ] + } + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Erklärung eines spezifischen Themas oder Aspekts der E-Mail.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Eine E-Mail ist ein elektronisches Kommunikationsmittel, das es ermöglicht, Nachrichten schnell und effizient über das Internet zu versenden. Sie besteht aus mehreren Komponenten, darunter die Betreffzeile, die den Hauptinhalt der Nachricht zusammenfasst, und der Hauptteil, in dem der eigentliche Text der Nachricht enthalten ist. Anhänge können hinzugefügt werden, um zusätzliche Dateien zu übermitteln. Die E-Mail-Adresse des Empfängers ist entscheidend, um sicherzustellen, dass die Nachricht den richtigen Adressaten erreicht. E-Mails bieten eine flexible und kostengünstige Möglichkeit, Informationen auszutauschen und sind aus dem modernen Geschäftsleben nicht mehr wegzudenken." + } + } + ] + }, + { + "id": "section_4", + "content_type": "table", + "contentPartIds": [], + "generationHint": "Tabelle mit wichtigen Daten oder Statistiken, die in der E-Mail erwähnt werden.", + "useAiCall": true, + "elements": [ + { + "type": "table", + "content": { + "headers": [ + "Datum", + "Statistik" + ], + "rows": [ + [ + "01.01.2023", + "Umsatz: 10.000€" + ], + [ + "01.02.2023", + "Umsatz: 12.000€" + ], + [ + "01.03.2023", + "Umsatz: 15.000€" + ], + [ + "01.04.2023", + "Umsatz: 14.000€" + ], + [ + "01.05.2023", + "Umsatz: 16.500€" + ] + ] + } + } + ] + }, + { + "id": "section_5", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschluss des Hauptteils mit einer Zusammenfassung oder einem Ausblick.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Abschließend lässt sich festhalten, dass die im Hauptteil dargestellten Argumente und Analysen eine solide Grundlage für zukünftige Entscheidungen bieten. Die gewonnenen Erkenntnisse ermöglichen es, strategische Maßnahmen zu entwickeln, die sowohl kurz- als auch langfristige Ziele unterstützen. Ein Ausblick auf kommende Entwicklungen zeigt, dass Flexibilität und Anpassungsfähigkeit entscheidend sein werden, um auf dynamische Veränderungen im Marktumfeld reagieren zu können. Die kontinuierliche Beobachtung und Bewertung der relevanten Faktoren bleibt daher unerlässlich, um nachhaltig erfolgreich zu sein." + } + } + ] + }, + { + "id": "chapter_3_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Schluss", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung der wichtigsten Punkte.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass die besprochenen Punkte entscheidend für den weiteren Fortschritt sind. Die Hauptthemen umfassten die Optimierung der Prozesse, die Verbesserung der Kommunikation und die Notwendigkeit einer klaren Zielsetzung. Es ist wichtig, dass alle Beteiligten diese Aspekte berücksichtigen, um die Effizienz und den Erfolg des Projekts sicherzustellen. Bei Fragen oder weiteren Anmerkungen stehe ich gerne zur Verfügung." + } + } + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Aufruf zum Handeln, um die Empfänger zur Umsetzung der besprochenen Maßnahmen zu motivieren.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Jetzt ist der Moment, um die besprochenen Maßnahmen in die Tat umzusetzen. Jeder Schritt, den Sie unternehmen, bringt uns näher an unser gemeinsames Ziel. Lassen Sie uns entschlossen handeln und die notwendigen Veränderungen vorantreiben. Ihre aktive Beteiligung ist entscheidend für den Erfolg. Packen wir es an!" + } + } + ] + } + ], + "metadata": { + "outputStyle": "document" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180154-232-email_composition_prompt.txt b/prompts/20260322-180154-232-email_composition_prompt.txt new file mode 100644 index 00000000..2fc0dad1 --- /dev/null +++ b/prompts/20260322-180154-232-email_composition_prompt.txt @@ -0,0 +1,22 @@ +Compose an email based on this context: +------- +Email Entwurf\n=============\n\nEinleitung\n==========\n\nDiese E-Mail dient dazu, den Empfänger über die wichtigsten Informationen und den Zweck der Nachricht zu informieren. Sie enthält wesentliche Details, die für das Verständnis des Kontextes und der beabsichtigten Maßnahmen erforderlich sind. Ziel ist es, Klarheit zu schaffen und die nächsten Schritte zu erleichtern.\n\n- Hauptziel der Nachricht klären\n- Wichtige Informationen prägnant zusammenfassen\n- Empfänger zur Handlung auffordern\n\nDie Nachricht ist für den Empfänger von großer Bedeutung, da sie wichtige Informationen enthält, die direkte Auswirkungen auf aktuelle Projekte und Entscheidungen haben können. Sie bietet Einblicke in relevante Entwicklungen und unterstützt fundierte Entscheidungen. Durch das Verständnis dieser Nachricht kann der Empfänger strategische Vorteile erlangen und mögliche Risiken besser einschätzen. Die Relevanz liegt auch in der Möglichkeit, auf Basis der Informationen proaktiv zu handeln und somit die Effizienz und Effektivität der eigenen Arbeit zu steigern.\n\nHauptteil\n=========\n\nDie E-Mail fasst die wichtigsten Punkte des vorherigen Dokuments zusammen. Sie enthält eine Übersicht über die besprochenen Themen und die daraus resultierenden Aufgaben. Zudem werden die nächsten Schritte und Fristen für die Umsetzung der besprochenen Maßnahmen festgelegt.\n\n- Begrüßung und Vorstellung des Absenders\n- Zweck der E-Mail und Hauptanliegen\n- Wichtige Informationen oder Updates\n- Erforderliche Aktionen oder Antworten des Empfängers\n- Abschluss und Dank für die Aufmerksamkeit\n\nEine E-Mail ist ein elektronisches Kommunikationsmittel, das es ermöglicht, Nachrichten schnell und effizient über das Internet zu versenden. Sie besteht aus mehreren Komponenten, darunter die Betreffzeile, die den Hauptinhalt der Nachricht zusammenfasst, und der Hauptteil, in dem der eigentliche Text der Nachricht enthalten ist. Anhänge können hinzugefügt werden, um zusätzliche Dateien zu übermitteln. Die E-Mail-Adresse des Empfängers ist entscheidend, um sicherzustellen, dass die Nachricht den richtigen Adressaten erreicht. E-Mails bieten eine flexible und kostengünstige Möglichkeit, Informationen auszutauschen und sind aus dem modernen Geschäftsleben nicht mehr wegzudenken.\n\nDatum | Statistik\n----- | ---------\n01.01.2023 | Umsatz: 10.000€\n01.02.2023 | Umsatz: 12.000€\n01.03.2023 | Umsatz: 15.000€\n01.04.2023 | Umsatz: 14.000€\n01.05.2023 | Umsatz: 16.500€\n\nAbschließend lässt sich festhalten, dass die im Hauptteil dargestellten Argumente und Analysen eine solide Grundlage für zukünftige Entscheidungen bieten. Die gewonnenen Erkenntnisse ermöglichen es, strategische Maßnahmen zu entwickeln, die sowohl kurz- als auch langfristige Ziele unterstützen. Ein Ausblick auf kommende Entwicklungen zeigt, dass Flexibilität und Anpassungsfähigkeit entscheidend sein werden, um auf dynamische Veränderungen im Marktumfeld reagieren zu können. Die kontinuierliche Beobachtung und Bewertung der relevanten Faktoren bleibt daher unerlässlich, um nachhaltig erfolgreich zu sein.\n\nSchluss\n=======\n\nZusammenfassend lässt sich sagen, dass die besprochenen Punkte entscheidend für den weiteren Fortschritt sind. Die Hauptthemen umfassten die Optimierung der Prozesse, die Verbesserung der Kommunikation und die Notwendigkeit einer klaren Zielsetzung. Es ist wichtig, dass alle Beteiligten diese Aspekte berücksichtigen, um die Effizienz und den Erfolg des Projekts sicherzustellen. Bei Fragen oder weiteren Anmerkungen stehe ich gerne zur Verfügung.\n\nJetzt ist der Moment, um die besprochenen Maßnahmen in die Tat umzusetzen. Jeder Schritt, den Sie unternehmen, bringt uns näher an unser gemeinsames Ziel. Lassen Sie uns entschlossen handeln und die notwendigen Veränderungen vorantreiben. Ihre aktive Beteiligung ist entscheidend für den Erfolg. Packen wir es an!\n\n\nGenerated: 2026-03-22 18:01:54 UTC +------- + +Recipients: (not specified - this is a draft) +Style: business +Max length: 1000 characters + +Available_Document_References: + - (no documents) + +Based on the context, decide which documents to attach. + +CRITICAL: Use EXACT document references from Available_Document_References above. For individual documents: ALWAYS use docItem:: format (include filename) + +Return JSON: +{ + "subject": "subject line", + "body": "email body (HTML allowed)", + "attachments": ["docItem::"] +} diff --git a/prompts/20260322-180156-233-email_composition_response.txt b/prompts/20260322-180156-233-email_composition_response.txt new file mode 100644 index 00000000..8590e14c --- /dev/null +++ b/prompts/20260322-180156-233-email_composition_response.txt @@ -0,0 +1,7 @@ +```json +{ + "subject": "Wichtige Informationen und nächste Schritte für aktuelle Projekte", + "body": "

Sehr geehrte Damen und Herren,

ich hoffe, diese Nachricht trifft Sie wohl. Diese E-Mail dient dazu, Sie über die wesentlichen Informationen und den Zweck unserer aktuellen Projekte zu informieren. Unser Hauptziel ist es, Klarheit zu schaffen und die nächsten Schritte zu erleichtern.

Die besprochenen Themen umfassen die Optimierung der Prozesse, die Verbesserung der Kommunikation und die Notwendigkeit einer klaren Zielsetzung. Diese Punkte sind entscheidend für den weiteren Fortschritt und den Erfolg unserer Projekte.

Bitte beachten Sie die folgenden Fristen und erforderlichen Aktionen, um die besprochenen Maßnahmen umzusetzen. Ihre aktive Beteiligung ist entscheidend für den Erfolg.

Vielen Dank für Ihre Aufmerksamkeit und Unterstützung. Bei Fragen oder weiteren Anmerkungen stehe ich Ihnen gerne zur Verfügung.

Mit freundlichen Grüßen,
[Ihr Name]

", + "attachments": [] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180230-234-chapter_structure_generation_prompt.txt b/prompts/20260322-180230-234-chapter_structure_generation_prompt.txt new file mode 100644 index 00000000..49ba0ee5 --- /dev/null +++ b/prompts/20260322-180230-234-chapter_structure_generation_prompt.txt @@ -0,0 +1,119 @@ +# TASK: Plan Document Structure (Documents + Chapters) + +This is a STRUCTURE PLANNING task. You define which documents to create and which chapters each document will have. +Chapter CONTENT will be generated in a later step - here you only plan the STRUCTURE and assign content references. +Return EXACTLY ONE complete JSON object. Do not generate multiple JSON objects, alternatives, or variations. Do not use separators like "---" between JSON objects. + +## USER REQUEST (for context) +``` +entwirf eine email mit dem inhalt des files davor +``` + +## AVAILABLE CONTENT PARTS + +(No content parts available) + +## CONTENT ASSIGNMENT RULE + +CRITICAL: Every chapter MUST have contentParts assigned if it relates to documents/images/data from the user request. +If the user request mentions documents/images/data, then EVERY chapter that generates content related to those references MUST assign the relevant ContentParts explicitly. + +Assignment logic: +- If chapter DISPLAYS a document/image → assign "object" format ContentPart with "caption" +- If chapter generates text content ABOUT a document/image/data → assign ContentPart with "instruction": + - Prefer "extracted" format if available (contains analyzed/extracted content) + - If only "object" format is available, use "object" format with "instruction" (to write ABOUT the image/document) +- If chapter's generationHint or purpose relates to a document/image/data mentioned in user request → it MUST have ContentParts assigned +- Multiple chapters might assign the same ContentPart (e.g., one chapter displays image, another writes about it) +- Use ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above +- Empty contentParts are only allowed if chapter generates content WITHOUT referencing any documents/images/data from the user request + +CRITICAL RULE: If the user request mentions BOTH: + a) Documents/images/data (listed in AVAILABLE CONTENT PARTS above), AND + b) Generic content types (article text, main content, body text, etc.) +Then chapters that generate those generic content types MUST assign the relevant ContentParts, because the content should relate to or be based on the provided documents/images/data. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential information only +- AVOID verbose, lengthy, or repetitive text - be concise and direct +- Prioritize FACTS over filler text - no introductions like "In this chapter..." +- Minimize system resources: shorter content = faster processing +- Quality over quantity: precise, meaningful content rather than padding + +## CHAPTER STRUCTURE REQUIREMENTS +- Generate chapters based on USER REQUEST - analyze what structure the user wants +- Create ONLY the minimum chapters needed to cover the user's request - avoid over-structuring +- HARD LIMIT: Maximum 7 chapters per document. If the topic can be covered in fewer, prefer fewer. Combine related topics into single chapters rather than creating many small ones. +- IMPORTANT: Each chapter MUST have ALL these fields: + - id: Unique identifier (e.g., "chapter_1") + - level: Heading level (1, 2, 3, etc.) + - title: Chapter title + - contentParts: Object mapping ContentPart IDs to usage instructions (MUST assign if chapter relates to documents/data from user request) + - generationHint: Description of what content to generate (including formatting/styling requirements) + - sections: Empty array [] (REQUIRED - sections are generated in next phase) +- contentParts: {"partId": {"instruction": "..."} or {"caption": "..."} or both} - Assign ContentParts as required by CONTENT ASSIGNMENT RULE above +- The "instruction" field for each ContentPart MUST contain ALL relevant details from the USER REQUEST that apply to content extraction for this specific chapter. Include all formatting rules, data requirements, constraints, and specifications mentioned in the user request that are relevant for processing this ContentPart in this chapter. +- generationHint: Keep CONCISE but include relevant details from the USER REQUEST. Focus on WHAT to generate, not HOW to phrase it verbosely. +- The number of chapters depends on the user request - create only what is requested. Do NOT create chapters for topics without available data. + +CRITICAL: Only create chapters for CONTENT sections, not for formatting/styling requirements. Formatting/styling requirements to be included in each generationHint if needed. + +## DOCUMENT STRUCTURE + +For each document, determine: +- outputFormat: From USER REQUEST (explicit mention or infer from purpose/content type). Default: "txt". Multiple documents can have different formats. +- language: From USER REQUEST (map to ISO 639-1: de, en, fr, it...). Default: "de". Multiple documents can have different languages. +- chapters: Structure appropriately for the format (e.g., pptx=slides, docx=sections, xlsx=worksheets). Match format capabilities and constraints. + +Required JSON fields: +- metadata: {"title": "...", "language": "..."} +- documents: Array with id, title, filename, outputFormat, language, chapters[] +- chapters: Array with id, level, title, contentParts, generationHint, sections[] + +EXAMPLE STRUCTURE (for reference only - adapt to user request): +{ + "metadata": { + "title": "Document Title", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "Document Title", + "filename": "document.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Chapter Title", + "contentParts": { + "extracted_part_id": { + "instruction": "Use extracted content with ALL relevant details from user request" + } + }, + "generationHint": "Detailed description including ALL relevant details from user request for this chapter", + "sections": [] + } + ] + }] +} + +CRITICAL INSTRUCTIONS: +- Generate chapters based on USER REQUEST, NOT based on the example above +- The example shows the JSON structure format, NOT the required chapters +- Create only the chapters that match the user's request +- Adapt chapter titles and structure to match the user's specific request +- Determine outputFormat and language for each document by analyzing the USER REQUEST above +- The example shows placeholders "txt" and "de" - YOU MUST REPLACE THESE with actual values determined from the USER REQUEST + +MANDATORY CONTENT ASSIGNMENT CHECK: +For each chapter, verify: +1. Does the user request mention documents/images/data? (e.g., "photo", "image", "document", "data", "based on", "about") +2. Does this chapter's generationHint, title, or purpose relate to those documents/images/data mentioned in step 1? + - Examples: "article about the photo", "text describing the image", "analysis of the document", "content based on the data" + - Even if chapter doesn't explicitly say "about the image", if user request mentions both the image AND this chapter's content type → relate them +3. If YES to both → chapter MUST have contentParts assigned (cannot be empty {}) +4. If ContentPart is "object" format and chapter needs to write ABOUT it → assign with "instruction" field, not just "caption" + +OUTPUT FORMAT: Start with { and end with }. Do NOT use markdown code fences (```json). Do NOT add explanatory text before or after the JSON. Return ONLY the JSON object itself. diff --git a/prompts/20260322-180233-235-chapter_structure_generation_response.txt b/prompts/20260322-180233-235-chapter_structure_generation_response.txt new file mode 100644 index 00000000..40f296cc --- /dev/null +++ b/prompts/20260322-180233-235-chapter_structure_generation_response.txt @@ -0,0 +1,39 @@ +{ + "metadata": { + "title": "E-Mail Entwurf", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "E-Mail Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail mit einer Begrüßung und Einführung in das Thema.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptteil", + "contentParts": {}, + "generationHint": "Hauptteil der E-Mail mit den wesentlichen Informationen und Details.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schluss", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung und einem freundlichen Abschiedsgruß.", + "sections": [] + } + ] + }] +} \ No newline at end of file diff --git a/prompts/20260322-180233-236-chapter_structure_generation_final_result.txt b/prompts/20260322-180233-236-chapter_structure_generation_final_result.txt new file mode 100644 index 00000000..b42034cf --- /dev/null +++ b/prompts/20260322-180233-236-chapter_structure_generation_final_result.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "E-Mail Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "E-Mail Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail mit einer Begrüßung und Einführung in das Thema.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptteil", + "contentParts": {}, + "generationHint": "Hauptteil der E-Mail mit den wesentlichen Informationen und Details.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schluss", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung und einem freundlichen Abschiedsgruß.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180233-237-chapter_structure_chapter_1_prompt.txt b/prompts/20260322-180233-237-chapter_structure_chapter_1_prompt.txt new file mode 100644 index 00000000..4fcc2752 --- /dev/null +++ b/prompts/20260322-180233-237-chapter_structure_chapter_1_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Einleitung (Level 1, ID: chapter_1) +GENERATION HINT: Einleitung der E-Mail mit einer Begrüßung und Einführung in das Thema. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-180233-238-chapter_structure_chapter_2_prompt.txt b/prompts/20260322-180233-238-chapter_structure_chapter_2_prompt.txt new file mode 100644 index 00000000..08d4ec02 --- /dev/null +++ b/prompts/20260322-180233-238-chapter_structure_chapter_2_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Hauptteil (Level 1, ID: chapter_2) +GENERATION HINT: Hauptteil der E-Mail mit den wesentlichen Informationen und Details. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-180233-239-chapter_structure_chapter_3_prompt.txt b/prompts/20260322-180233-239-chapter_structure_chapter_3_prompt.txt new file mode 100644 index 00000000..dec72be3 --- /dev/null +++ b/prompts/20260322-180233-239-chapter_structure_chapter_3_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Schluss (Level 1, ID: chapter_3) +GENERATION HINT: Abschluss der E-Mail mit einer Zusammenfassung und einem freundlichen Abschiedsgruß. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-180236-240-chapter_structure_chapter_3_response.txt b/prompts/20260322-180236-240-chapter_structure_chapter_3_response.txt new file mode 100644 index 00000000..4f94acef --- /dev/null +++ b/prompts/20260322-180236-240-chapter_structure_chapter_3_response.txt @@ -0,0 +1,26 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung der wichtigsten Punkte der E-Mail", + "useAiCall": true, + "elements": [ + "In dieser E-Mail haben wir die wesentlichen Aspekte unserer Zusammenarbeit besprochen. Wir haben die Fortschritte der letzten Wochen hervorgehoben und die nächsten Schritte für das Projekt festgelegt. Es ist wichtig, dass wir weiterhin eng zusammenarbeiten, um die gesteckten Ziele zu erreichen." + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Freundlicher Abschiedsgruß", + "useAiCall": true, + "elements": [ + "Ich danke Ihnen für Ihre Aufmerksamkeit und freue mich auf unsere weitere Zusammenarbeit. Bei Fragen oder Anmerkungen stehe ich Ihnen jederzeit gerne zur Verfügung. Mit freundlichen Grüßen, [Ihr Name]" + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180238-241-chapter_structure_chapter_1_response.txt b/prompts/20260322-180238-241-chapter_structure_chapter_1_response.txt new file mode 100644 index 00000000..74c8aa3a --- /dev/null +++ b/prompts/20260322-180238-241-chapter_structure_chapter_1_response.txt @@ -0,0 +1,40 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einführung in das Thema der E-Mail und Begrüßung des Lesers", + "useAiCall": true, + "elements": [ + "Sehr geehrte Damen und Herren,", + "Willkommen zu unserer Einführung in das Thema der E-Mail-Kommunikation. In dieser Einführung werden wir die wichtigsten Aspekte und Vorteile der E-Mail als Kommunikationsmittel beleuchten. E-Mails sind aus unserem täglichen Leben nicht mehr wegzudenken und bieten eine schnelle und effiziente Möglichkeit, Informationen auszutauschen." + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Hauptvorteile der E-Mail-Kommunikation", + "useAiCall": true, + "elements": [ + "Schnelligkeit und Effizienz im Informationsaustausch", + "Möglichkeit zur Kommunikation über große Entfernungen", + "Einfache Dokumentation und Archivierung von Nachrichten", + "Kostengünstige Alternative zu traditionellen Kommunikationsmitteln" + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung und Ausblick auf die folgenden Kapitel", + "useAiCall": true, + "elements": [ + "Zusammenfassend lässt sich sagen, dass die E-Mail-Kommunikation eine unverzichtbare Rolle in der modernen Kommunikation spielt. In den folgenden Kapiteln werden wir tiefer in die verschiedenen Aspekte der E-Mail-Nutzung eintauchen und praktische Tipps zur Verbesserung Ihrer E-Mail-Kommunikationsfähigkeiten geben." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180240-242-chapter_structure_chapter_2_response.txt b/prompts/20260322-180240-242-chapter_structure_chapter_2_response.txt new file mode 100644 index 00000000..9d0c7dcc --- /dev/null +++ b/prompts/20260322-180240-242-chapter_structure_chapter_2_response.txt @@ -0,0 +1,67 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung des Hauptteils mit einer kurzen Zusammenfassung der E-Mail-Inhalte.", + "useAiCall": true, + "elements": [ + "In diesem Abschnitt der E-Mail werden die wichtigsten Informationen und Details präsentiert, die für den Empfänger von Bedeutung sind. Ziel ist es, einen klaren Überblick über die wesentlichen Punkte zu geben, die im weiteren Verlauf detaillierter behandelt werden." + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Auflistung der Hauptpunkte oder Themen, die in der E-Mail behandelt werden.", + "useAiCall": true, + "elements": [ + "Ziel der E-Mail", + "Wichtige Termine und Fristen", + "Erforderliche Aktionen des Empfängers", + "Zusammenfassung der bisherigen Kommunikation", + "Kontaktinformationen für Rückfragen" + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Beschreibung eines spezifischen Themas oder Punktes, der in der E-Mail behandelt wird.", + "useAiCall": true, + "elements": [ + "Ein zentraler Punkt dieser E-Mail ist die bevorstehende Frist für die Einreichung der erforderlichen Dokumente. Es ist wichtig, dass alle Unterlagen bis zum angegebenen Datum vollständig eingereicht werden, um Verzögerungen im Prozess zu vermeiden. Bitte beachten Sie die angehängten Anweisungen zur korrekten Einreichung." + ] + }, + { + "id": "section_4", + "content_type": "table", + "contentPartIds": [], + "generationHint": "Tabelle mit wichtigen Daten oder Fristen, die in der E-Mail erwähnt werden.", + "useAiCall": true, + "elements": [ + { + "headers": ["Datum", "Ereignis", "Beschreibung"], + "rows": [ + ["01.11.2023", "Einreichungsfrist", "Letzter Tag zur Einreichung der Dokumente"], + ["15.11.2023", "Feedback-Runde", "Rückmeldung zu den eingereichten Unterlagen"], + ["30.11.2023", "Abschlussbesprechung", "Endgültige Besprechung der Ergebnisse"] + ] + } + ] + }, + { + "id": "section_5", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschließende Bemerkungen und nächste Schritte für den Empfänger.", + "useAiCall": true, + "elements": [ + "Zum Abschluss möchten wir Sie bitten, die genannten Fristen einzuhalten und bei Fragen oder Unklarheiten umgehend Kontakt mit uns aufzunehmen. Wir stehen Ihnen jederzeit für Rückfragen zur Verfügung und freuen uns auf eine erfolgreiche Zusammenarbeit." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180240-243-chapter_1_section_section_1_prompt.txt b/prompts/20260322-180240-243-chapter_1_section_section_1_prompt.txt new file mode 100644 index 00000000..7320e8af --- /dev/null +++ b/prompts/20260322-180240-243-chapter_1_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einführung in das Thema der E-Mail und Begrüßung des Lesers +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-180240-244-chapter_1_section_section_2_prompt.txt b/prompts/20260322-180240-244-chapter_1_section_section_2_prompt.txt new file mode 100644 index 00000000..6bcb7c7f --- /dev/null +++ b/prompts/20260322-180240-244-chapter_1_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: bullet_list +- Generation Hint: Hauptvorteile der E-Mail-Kommunikation +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-180241-245-chapter_1_section_section_3_prompt.txt b/prompts/20260322-180241-245-chapter_1_section_section_3_prompt.txt new file mode 100644 index 00000000..2ac7a290 --- /dev/null +++ b/prompts/20260322-180241-245-chapter_1_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: paragraph +- Generation Hint: Zusammenfassung und Ausblick auf die folgenden Kapitel +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_2 (bullet_list): + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-180241-246-chapter_2_section_section_1_prompt.txt b/prompts/20260322-180241-246-chapter_2_section_section_1_prompt.txt new file mode 100644 index 00000000..246981cb --- /dev/null +++ b/prompts/20260322-180241-246-chapter_2_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einleitung des Hauptteils mit einer kurzen Zusammenfassung der E-Mail-Inhalte. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-180241-247-chapter_2_section_section_2_prompt.txt b/prompts/20260322-180241-247-chapter_2_section_section_2_prompt.txt new file mode 100644 index 00000000..d663015d --- /dev/null +++ b/prompts/20260322-180241-247-chapter_2_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: bullet_list +- Generation Hint: Auflistung der Hauptpunkte oder Themen, die in der E-Mail behandelt werden. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-180242-248-chapter_1_section_section_1_response.txt b/prompts/20260322-180242-248-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..d974158b --- /dev/null +++ b/prompts/20260322-180242-248-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Sehr geehrter Leser, wir freuen uns, Ihnen eine Einführung in das Thema unserer E-Mail zu geben. Diese Nachricht enthält wichtige Informationen, die für Sie von Interesse sein könnten. Bitte lesen Sie weiter, um mehr zu erfahren." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180242-249-chapter_1_section_section_1_response.txt b/prompts/20260322-180242-249-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..d974158b --- /dev/null +++ b/prompts/20260322-180242-249-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Sehr geehrter Leser, wir freuen uns, Ihnen eine Einführung in das Thema unserer E-Mail zu geben. Diese Nachricht enthält wichtige Informationen, die für Sie von Interesse sein könnten. Bitte lesen Sie weiter, um mehr zu erfahren." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180242-250-chapter_2_section_section_3_prompt.txt b/prompts/20260322-180242-250-chapter_2_section_section_3_prompt.txt new file mode 100644 index 00000000..4b93dd44 --- /dev/null +++ b/prompts/20260322-180242-250-chapter_2_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: paragraph +- Generation Hint: Detaillierte Beschreibung eines spezifischen Themas oder Punktes, der in der E-Mail behandelt wird. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_2 (bullet_list): + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-180242-251-chapter_2_section_section_2_response.txt b/prompts/20260322-180242-251-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..f68398fb --- /dev/null +++ b/prompts/20260322-180242-251-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Begrüßung und Vorstellung des Themas", + "Kurze Zusammenfassung der wichtigsten Punkte", + "Detaillierte Informationen zu jedem Punkt", + "Schlussfolgerung und nächste Schritte", + "Kontaktinformationen für Rückfragen" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180242-252-chapter_2_section_section_2_response.txt b/prompts/20260322-180242-252-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..f68398fb --- /dev/null +++ b/prompts/20260322-180242-252-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Begrüßung und Vorstellung des Themas", + "Kurze Zusammenfassung der wichtigsten Punkte", + "Detaillierte Informationen zu jedem Punkt", + "Schlussfolgerung und nächste Schritte", + "Kontaktinformationen für Rückfragen" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180242-253-chapter_2_section_section_4_prompt.txt b/prompts/20260322-180242-253-chapter_2_section_section_4_prompt.txt new file mode 100644 index 00000000..6427cd08 --- /dev/null +++ b/prompts/20260322-180242-253-chapter_2_section_section_4_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_4 +- Content Type: table +- Generation Hint: Tabelle mit wichtigen Daten oder Fristen, die in der E-Mail erwähnt werden. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (table). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "table", + "content": {{"headers": ["Column1", "Column2"], "rows": [["Value1", "Value2"], ["Value3", "Value4"]]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_2 (bullet_list): +- section_3 (paragraph): + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-180243-254-chapter_1_section_section_2_response.txt b/prompts/20260322-180243-254-chapter_1_section_section_2_response.txt new file mode 100644 index 00000000..e7ce17bb --- /dev/null +++ b/prompts/20260322-180243-254-chapter_1_section_section_2_response.txt @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Schnelligkeit der Übermittlung", + "Kosteneffizienz im Vergleich zu physischen Briefen", + "Einfache Archivierung und Nachverfolgung", + "Möglichkeit zur Massenkommunikation", + "Umweltfreundlich durch Papierersparnis", + "Flexibilität durch Zugriff von überall", + "Einfache Integration von Anhängen und Multimedia" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180243-255-chapter_1_section_section_2_response.txt b/prompts/20260322-180243-255-chapter_1_section_section_2_response.txt new file mode 100644 index 00000000..e7ce17bb --- /dev/null +++ b/prompts/20260322-180243-255-chapter_1_section_section_2_response.txt @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Schnelligkeit der Übermittlung", + "Kosteneffizienz im Vergleich zu physischen Briefen", + "Einfache Archivierung und Nachverfolgung", + "Möglichkeit zur Massenkommunikation", + "Umweltfreundlich durch Papierersparnis", + "Flexibilität durch Zugriff von überall", + "Einfache Integration von Anhängen und Multimedia" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180243-256-chapter_2_section_section_5_prompt.txt b/prompts/20260322-180243-256-chapter_2_section_section_5_prompt.txt new file mode 100644 index 00000000..ec94b141 --- /dev/null +++ b/prompts/20260322-180243-256-chapter_2_section_section_5_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_5 +- Content Type: paragraph +- Generation Hint: Abschließende Bemerkungen und nächste Schritte für den Empfänger. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_3 (paragraph): +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_4 (table): + diff --git a/prompts/20260322-180243-257-chapter_2_section_section_1_response.txt b/prompts/20260322-180243-257-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..8b549ba7 --- /dev/null +++ b/prompts/20260322-180243-257-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail beginnt mit einer Begrüßung und stellt kurz den Zweck der Nachricht vor. Es folgt eine Zusammenfassung der wichtigsten Punkte aus dem vorherigen Dokument, einschließlich der Hauptthemen und relevanter Details. Abschließend wird auf mögliche nächste Schritte oder erforderliche Maßnahmen hingewiesen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180243-258-chapter_2_section_section_1_response.txt b/prompts/20260322-180243-258-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..8b549ba7 --- /dev/null +++ b/prompts/20260322-180243-258-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail beginnt mit einer Begrüßung und stellt kurz den Zweck der Nachricht vor. Es folgt eine Zusammenfassung der wichtigsten Punkte aus dem vorherigen Dokument, einschließlich der Hauptthemen und relevanter Details. Abschließend wird auf mögliche nächste Schritte oder erforderliche Maßnahmen hingewiesen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180243-259-chapter_3_section_section_1_prompt.txt b/prompts/20260322-180243-259-chapter_3_section_section_1_prompt.txt new file mode 100644 index 00000000..31b1a81c --- /dev/null +++ b/prompts/20260322-180243-259-chapter_3_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Zusammenfassung der wichtigsten Punkte der E-Mail +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-180243-260-chapter_1_section_section_3_response.txt b/prompts/20260322-180243-260-chapter_1_section_section_3_response.txt new file mode 100644 index 00000000..2924f742 --- /dev/null +++ b/prompts/20260322-180243-260-chapter_1_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In den vorherigen Kapiteln wurden die Grundlagen und die wichtigsten Konzepte eingeführt. Im nächsten Abschnitt werden wir tiefer in die spezifischen Anwendungsfälle eintauchen und praktische Beispiele analysieren. Dabei liegt der Fokus auf der Umsetzung der theoretischen Ansätze in realen Szenarien. Ziel ist es, ein umfassendes Verständnis für die Anwendung der erlernten Prinzipien zu entwickeln und die Fähigkeit zu stärken, diese in unterschiedlichen Kontexten anzuwenden." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180243-261-chapter_1_section_section_3_response.txt b/prompts/20260322-180243-261-chapter_1_section_section_3_response.txt new file mode 100644 index 00000000..2924f742 --- /dev/null +++ b/prompts/20260322-180243-261-chapter_1_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In den vorherigen Kapiteln wurden die Grundlagen und die wichtigsten Konzepte eingeführt. Im nächsten Abschnitt werden wir tiefer in die spezifischen Anwendungsfälle eintauchen und praktische Beispiele analysieren. Dabei liegt der Fokus auf der Umsetzung der theoretischen Ansätze in realen Szenarien. Ziel ist es, ein umfassendes Verständnis für die Anwendung der erlernten Prinzipien zu entwickeln und die Fähigkeit zu stärken, diese in unterschiedlichen Kontexten anzuwenden." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180243-262-chapter_3_section_section_2_prompt.txt b/prompts/20260322-180243-262-chapter_3_section_section_2_prompt.txt new file mode 100644 index 00000000..f08a5ded --- /dev/null +++ b/prompts/20260322-180243-262-chapter_3_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: paragraph +- Generation Hint: Freundlicher Abschiedsgruß +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-180244-263-chapter_2_section_section_3_response.txt b/prompts/20260322-180244-263-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..78c065da --- /dev/null +++ b/prompts/20260322-180244-263-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In diesem Abschnitt wird die Bedeutung der Datensicherheit in der digitalen Kommunikation hervorgehoben. Es ist entscheidend, dass alle sensiblen Informationen durch geeignete Verschlüsselungsmethoden geschützt werden, um unbefugten Zugriff zu verhindern. Unternehmen sollten regelmäßig ihre Sicherheitsprotokolle überprüfen und aktualisieren, um den neuesten Bedrohungen entgegenzuwirken. Darüber hinaus ist die Schulung der Mitarbeiter im Umgang mit vertraulichen Daten ein wesentlicher Bestandteil eines umfassenden Sicherheitskonzepts." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180244-264-chapter_2_section_section_3_response.txt b/prompts/20260322-180244-264-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..78c065da --- /dev/null +++ b/prompts/20260322-180244-264-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In diesem Abschnitt wird die Bedeutung der Datensicherheit in der digitalen Kommunikation hervorgehoben. Es ist entscheidend, dass alle sensiblen Informationen durch geeignete Verschlüsselungsmethoden geschützt werden, um unbefugten Zugriff zu verhindern. Unternehmen sollten regelmäßig ihre Sicherheitsprotokolle überprüfen und aktualisieren, um den neuesten Bedrohungen entgegenzuwirken. Darüber hinaus ist die Schulung der Mitarbeiter im Umgang mit vertraulichen Daten ein wesentlicher Bestandteil eines umfassenden Sicherheitskonzepts." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180244-265-chapter_2_section_section_4_response.txt b/prompts/20260322-180244-265-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..dd8cbf46 --- /dev/null +++ b/prompts/20260322-180244-265-chapter_2_section_section_4_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "table", + "content": { + "headers": ["Datum", "Ereignis"], + "rows": [ + ["01.11.2023", "Abgabefrist für Projektanträge"], + ["15.11.2023", "Rückmeldung zu eingereichten Anträgen"], + ["30.11.2023", "Ende der Bewerbungsfrist für Fördermittel"], + ["15.12.2023", "Bekanntgabe der Fördermittelvergabe"] + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180244-266-chapter_2_section_section_4_response.txt b/prompts/20260322-180244-266-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..cc611352 --- /dev/null +++ b/prompts/20260322-180244-266-chapter_2_section_section_4_response.txt @@ -0,0 +1,31 @@ +{ + "elements": [ + { + "type": "table", + "content": { + "headers": [ + "Datum", + "Ereignis" + ], + "rows": [ + [ + "01.11.2023", + "Abgabefrist für Projektanträge" + ], + [ + "15.11.2023", + "Rückmeldung zu eingereichten Anträgen" + ], + [ + "30.11.2023", + "Ende der Bewerbungsfrist für Fördermittel" + ], + [ + "15.12.2023", + "Bekanntgabe der Fördermittelvergabe" + ] + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180244-267-chapter_2_section_section_5_response.txt b/prompts/20260322-180244-267-chapter_2_section_section_5_response.txt new file mode 100644 index 00000000..74127d5b --- /dev/null +++ b/prompts/20260322-180244-267-chapter_2_section_section_5_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Abschließend möchten wir uns für Ihre Aufmerksamkeit und Ihr Interesse an unserem Projekt bedanken. Wir hoffen, dass die bereitgestellten Informationen hilfreich waren und freuen uns auf Ihre Rückmeldungen. Als nächsten Schritt empfehlen wir, die vorgeschlagenen Maßnahmen zu evaluieren und einen Zeitplan für die Umsetzung zu erstellen. Bei Fragen oder weiteren Anliegen stehen wir Ihnen jederzeit zur Verfügung." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180244-268-chapter_2_section_section_5_response.txt b/prompts/20260322-180244-268-chapter_2_section_section_5_response.txt new file mode 100644 index 00000000..74127d5b --- /dev/null +++ b/prompts/20260322-180244-268-chapter_2_section_section_5_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Abschließend möchten wir uns für Ihre Aufmerksamkeit und Ihr Interesse an unserem Projekt bedanken. Wir hoffen, dass die bereitgestellten Informationen hilfreich waren und freuen uns auf Ihre Rückmeldungen. Als nächsten Schritt empfehlen wir, die vorgeschlagenen Maßnahmen zu evaluieren und einen Zeitplan für die Umsetzung zu erstellen. Bei Fragen oder weiteren Anliegen stehen wir Ihnen jederzeit zur Verfügung." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180244-269-chapter_3_section_section_1_response.txt b/prompts/20260322-180244-269-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..de6ce126 --- /dev/null +++ b/prompts/20260322-180244-269-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen: Der aktuelle Projektstatus wird erläutert, einschließlich der erreichten Meilensteine und der verbleibenden Aufgaben. Es wird auf die nächsten Schritte eingegangen und die Verantwortlichkeiten der Teammitglieder werden hervorgehoben. Zudem werden Fristen und mögliche Herausforderungen angesprochen, um eine reibungslose Umsetzung zu gewährleisten. Abschließend wird um Feedback und weitere Anregungen gebeten, um den Fortschritt kontinuierlich zu verbessern." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180244-270-chapter_3_section_section_1_response.txt b/prompts/20260322-180244-270-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..de6ce126 --- /dev/null +++ b/prompts/20260322-180244-270-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen: Der aktuelle Projektstatus wird erläutert, einschließlich der erreichten Meilensteine und der verbleibenden Aufgaben. Es wird auf die nächsten Schritte eingegangen und die Verantwortlichkeiten der Teammitglieder werden hervorgehoben. Zudem werden Fristen und mögliche Herausforderungen angesprochen, um eine reibungslose Umsetzung zu gewährleisten. Abschließend wird um Feedback und weitere Anregungen gebeten, um den Fortschritt kontinuierlich zu verbessern." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180245-271-chapter_3_section_section_2_response.txt b/prompts/20260322-180245-271-chapter_3_section_section_2_response.txt new file mode 100644 index 00000000..de1a12eb --- /dev/null +++ b/prompts/20260322-180245-271-chapter_3_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Zeit und Unterstützung. Es war eine Freude, mit Ihnen zusammenzuarbeiten. Ich wünsche Ihnen alles Gute für Ihre zukünftigen Projekte und hoffe, dass sich unsere Wege bald wieder kreuzen. Bis dahin, passen Sie gut auf sich auf und bleiben Sie gesund. Herzliche Grüße." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180245-272-chapter_3_section_section_2_response.txt b/prompts/20260322-180245-272-chapter_3_section_section_2_response.txt new file mode 100644 index 00000000..de1a12eb --- /dev/null +++ b/prompts/20260322-180245-272-chapter_3_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Zeit und Unterstützung. Es war eine Freude, mit Ihnen zusammenzuarbeiten. Ich wünsche Ihnen alles Gute für Ihre zukünftigen Projekte und hoffe, dass sich unsere Wege bald wieder kreuzen. Bis dahin, passen Sie gut auf sich auf und bleiben Sie gesund. Herzliche Grüße." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180245-273-document_generation_response.txt b/prompts/20260322-180245-273-document_generation_response.txt new file mode 100644 index 00000000..b9c0dc77 --- /dev/null +++ b/prompts/20260322-180245-273-document_generation_response.txt @@ -0,0 +1,244 @@ +{ + "metadata": { + "title": "E-Mail Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "E-Mail Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "sections": [ + { + "id": "chapter_1_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Einleitung", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einführung in das Thema der E-Mail und Begrüßung des Lesers", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Sehr geehrter Leser, wir freuen uns, Ihnen eine Einführung in das Thema unserer E-Mail zu geben. Diese Nachricht enthält wichtige Informationen, die für Sie von Interesse sein könnten. Bitte lesen Sie weiter, um mehr zu erfahren." + } + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Hauptvorteile der E-Mail-Kommunikation", + "useAiCall": true, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Schnelligkeit der Übermittlung", + "Kosteneffizienz im Vergleich zu physischen Briefen", + "Einfache Archivierung und Nachverfolgung", + "Möglichkeit zur Massenkommunikation", + "Umweltfreundlich durch Papierersparnis", + "Flexibilität durch Zugriff von überall", + "Einfache Integration von Anhängen und Multimedia" + ] + } + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung und Ausblick auf die folgenden Kapitel", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In den vorherigen Kapiteln wurden die Grundlagen und die wichtigsten Konzepte eingeführt. Im nächsten Abschnitt werden wir tiefer in die spezifischen Anwendungsfälle eintauchen und praktische Beispiele analysieren. Dabei liegt der Fokus auf der Umsetzung der theoretischen Ansätze in realen Szenarien. Ziel ist es, ein umfassendes Verständnis für die Anwendung der erlernten Prinzipien zu entwickeln und die Fähigkeit zu stärken, diese in unterschiedlichen Kontexten anzuwenden." + } + } + ] + }, + { + "id": "chapter_2_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Hauptteil", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung des Hauptteils mit einer kurzen Zusammenfassung der E-Mail-Inhalte.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail beginnt mit einer Begrüßung und stellt kurz den Zweck der Nachricht vor. Es folgt eine Zusammenfassung der wichtigsten Punkte aus dem vorherigen Dokument, einschließlich der Hauptthemen und relevanter Details. Abschließend wird auf mögliche nächste Schritte oder erforderliche Maßnahmen hingewiesen." + } + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Auflistung der Hauptpunkte oder Themen, die in der E-Mail behandelt werden.", + "useAiCall": true, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Begrüßung und Vorstellung des Themas", + "Kurze Zusammenfassung der wichtigsten Punkte", + "Detaillierte Informationen zu jedem Punkt", + "Schlussfolgerung und nächste Schritte", + "Kontaktinformationen für Rückfragen" + ] + } + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Beschreibung eines spezifischen Themas oder Punktes, der in der E-Mail behandelt wird.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In diesem Abschnitt wird die Bedeutung der Datensicherheit in der digitalen Kommunikation hervorgehoben. Es ist entscheidend, dass alle sensiblen Informationen durch geeignete Verschlüsselungsmethoden geschützt werden, um unbefugten Zugriff zu verhindern. Unternehmen sollten regelmäßig ihre Sicherheitsprotokolle überprüfen und aktualisieren, um den neuesten Bedrohungen entgegenzuwirken. Darüber hinaus ist die Schulung der Mitarbeiter im Umgang mit vertraulichen Daten ein wesentlicher Bestandteil eines umfassenden Sicherheitskonzepts." + } + } + ] + }, + { + "id": "section_4", + "content_type": "table", + "contentPartIds": [], + "generationHint": "Tabelle mit wichtigen Daten oder Fristen, die in der E-Mail erwähnt werden.", + "useAiCall": true, + "elements": [ + { + "type": "table", + "content": { + "headers": [ + "Datum", + "Ereignis" + ], + "rows": [ + [ + "01.11.2023", + "Abgabefrist für Projektanträge" + ], + [ + "15.11.2023", + "Rückmeldung zu eingereichten Anträgen" + ], + [ + "30.11.2023", + "Ende der Bewerbungsfrist für Fördermittel" + ], + [ + "15.12.2023", + "Bekanntgabe der Fördermittelvergabe" + ] + ] + } + } + ] + }, + { + "id": "section_5", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschließende Bemerkungen und nächste Schritte für den Empfänger.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Abschließend möchten wir uns für Ihre Aufmerksamkeit und Ihr Interesse an unserem Projekt bedanken. Wir hoffen, dass die bereitgestellten Informationen hilfreich waren und freuen uns auf Ihre Rückmeldungen. Als nächsten Schritt empfehlen wir, die vorgeschlagenen Maßnahmen zu evaluieren und einen Zeitplan für die Umsetzung zu erstellen. Bei Fragen oder weiteren Anliegen stehen wir Ihnen jederzeit zur Verfügung." + } + } + ] + }, + { + "id": "chapter_3_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Schluss", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung der wichtigsten Punkte der E-Mail", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen: Der aktuelle Projektstatus wird erläutert, einschließlich der erreichten Meilensteine und der verbleibenden Aufgaben. Es wird auf die nächsten Schritte eingegangen und die Verantwortlichkeiten der Teammitglieder werden hervorgehoben. Zudem werden Fristen und mögliche Herausforderungen angesprochen, um eine reibungslose Umsetzung zu gewährleisten. Abschließend wird um Feedback und weitere Anregungen gebeten, um den Fortschritt kontinuierlich zu verbessern." + } + } + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Freundlicher Abschiedsgruß", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Zeit und Unterstützung. Es war eine Freude, mit Ihnen zusammenzuarbeiten. Ich wünsche Ihnen alles Gute für Ihre zukünftigen Projekte und hoffe, dass sich unsere Wege bald wieder kreuzen. Bis dahin, passen Sie gut auf sich auf und bleiben Sie gesund. Herzliche Grüße." + } + } + ] + } + ], + "metadata": { + "outputStyle": "document" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180246-274-email_composition_prompt.txt b/prompts/20260322-180246-274-email_composition_prompt.txt new file mode 100644 index 00000000..588b291d --- /dev/null +++ b/prompts/20260322-180246-274-email_composition_prompt.txt @@ -0,0 +1,22 @@ +Compose an email based on this context: +------- +E-Mail Entwurf\n==============\n\nEinleitung\n==========\n\nSehr geehrter Leser, wir freuen uns, Ihnen eine Einführung in das Thema unserer E-Mail zu geben. Diese Nachricht enthält wichtige Informationen, die für Sie von Interesse sein könnten. Bitte lesen Sie weiter, um mehr zu erfahren.\n\n- Schnelligkeit der Übermittlung\n- Kosteneffizienz im Vergleich zu physischen Briefen\n- Einfache Archivierung und Nachverfolgung\n- Möglichkeit zur Massenkommunikation\n- Umweltfreundlich durch Papierersparnis\n- Flexibilität durch Zugriff von überall\n- Einfache Integration von Anhängen und Multimedia\n\nIn den vorherigen Kapiteln wurden die Grundlagen und die wichtigsten Konzepte eingeführt. Im nächsten Abschnitt werden wir tiefer in die spezifischen Anwendungsfälle eintauchen und praktische Beispiele analysieren. Dabei liegt der Fokus auf der Umsetzung der theoretischen Ansätze in realen Szenarien. Ziel ist es, ein umfassendes Verständnis für die Anwendung der erlernten Prinzipien zu entwickeln und die Fähigkeit zu stärken, diese in unterschiedlichen Kontexten anzuwenden.\n\nHauptteil\n=========\n\nDie E-Mail beginnt mit einer Begrüßung und stellt kurz den Zweck der Nachricht vor. Es folgt eine Zusammenfassung der wichtigsten Punkte aus dem vorherigen Dokument, einschließlich der Hauptthemen und relevanter Details. Abschließend wird auf mögliche nächste Schritte oder erforderliche Maßnahmen hingewiesen.\n\n- Begrüßung und Vorstellung des Themas\n- Kurze Zusammenfassung der wichtigsten Punkte\n- Detaillierte Informationen zu jedem Punkt\n- Schlussfolgerung und nächste Schritte\n- Kontaktinformationen für Rückfragen\n\nIn diesem Abschnitt wird die Bedeutung der Datensicherheit in der digitalen Kommunikation hervorgehoben. Es ist entscheidend, dass alle sensiblen Informationen durch geeignete Verschlüsselungsmethoden geschützt werden, um unbefugten Zugriff zu verhindern. Unternehmen sollten regelmäßig ihre Sicherheitsprotokolle überprüfen und aktualisieren, um den neuesten Bedrohungen entgegenzuwirken. Darüber hinaus ist die Schulung der Mitarbeiter im Umgang mit vertraulichen Daten ein wesentlicher Bestandteil eines umfassenden Sicherheitskonzepts.\n\nDatum | Ereignis\n----- | --------\n01.11.2023 | Abgabefrist für Projektanträge\n15.11.2023 | Rückmeldung zu eingereichten Anträgen\n30.11.2023 | Ende der Bewerbungsfrist für Fördermittel\n15.12.2023 | Bekanntgabe der Fördermittelvergabe\n\nAbschließend möchten wir uns für Ihre Aufmerksamkeit und Ihr Interesse an unserem Projekt bedanken. Wir hoffen, dass die bereitgestellten Informationen hilfreich waren und freuen uns auf Ihre Rückmeldungen. Als nächsten Schritt empfehlen wir, die vorgeschlagenen Maßnahmen zu evaluieren und einen Zeitplan für die Umsetzung zu erstellen. Bei Fragen oder weiteren Anliegen stehen wir Ihnen jederzeit zur Verfügung.\n\nSchluss\n=======\n\nDie E-Mail fasst die wichtigsten Punkte zusammen: Der aktuelle Projektstatus wird erläutert, einschließlich der erreichten Meilensteine und der verbleibenden Aufgaben. Es wird auf die nächsten Schritte eingegangen und die Verantwortlichkeiten der Teammitglieder werden hervorgehoben. Zudem werden Fristen und mögliche Herausforderungen angesprochen, um eine reibungslose Umsetzung zu gewährleisten. Abschließend wird um Feedback und weitere Anregungen gebeten, um den Fortschritt kontinuierlich zu verbessern.\n\nVielen Dank für Ihre Zeit und Unterstützung. Es war eine Freude, mit Ihnen zusammenzuarbeiten. Ich wünsche Ihnen alles Gute für Ihre zukünftigen Projekte und hoffe, dass sich unsere Wege bald wieder kreuzen. Bis dahin, passen Sie gut auf sich auf und bleiben Sie gesund. Herzliche Grüße.\n\n\nGenerated: 2026-03-22 18:02:45 UTC +------- + +Recipients: (not specified - this is a draft) +Style: business +Max length: 1000 characters + +Available_Document_References: + - (no documents) + +Based on the context, decide which documents to attach. + +CRITICAL: Use EXACT document references from Available_Document_References above. For individual documents: ALWAYS use docItem:: format (include filename) + +Return JSON: +{ + "subject": "subject line", + "body": "email body (HTML allowed)", + "attachments": ["docItem::"] +} diff --git a/prompts/20260322-180250-275-email_composition_response.txt b/prompts/20260322-180250-275-email_composition_response.txt new file mode 100644 index 00000000..11327fd5 --- /dev/null +++ b/prompts/20260322-180250-275-email_composition_response.txt @@ -0,0 +1,7 @@ +```json +{ + "subject": "Einführung in die Vorteile der digitalen Kommunikation", + "body": "

Sehr geehrter Leser,

wir freuen uns, Ihnen eine Einführung in das Thema unserer E-Mail zu geben. Diese Nachricht enthält wichtige Informationen, die für Sie von Interesse sein könnten. Bitte lesen Sie weiter, um mehr zu erfahren.

  • Schnelligkeit der Übermittlung
  • Kosteneffizienz im Vergleich zu physischen Briefen
  • Einfache Archivierung und Nachverfolgung
  • Möglichkeit zur Massenkommunikation
  • Umweltfreundlich durch Papierersparnis
  • Flexibilität durch Zugriff von überall
  • Einfache Integration von Anhängen und Multimedia

In den vorherigen Kapiteln wurden die Grundlagen und die wichtigsten Konzepte eingeführt. Im nächsten Abschnitt werden wir tiefer in die spezifischen Anwendungsfälle eintauchen und praktische Beispiele analysieren.

Die Bedeutung der Datensicherheit in der digitalen Kommunikation wird hervorgehoben. Es ist entscheidend, dass alle sensiblen Informationen durch geeignete Verschlüsselungsmethoden geschützt werden.

Abschließend möchten wir uns für Ihre Aufmerksamkeit und Ihr Interesse an unserem Projekt bedanken. Wir hoffen, dass die bereitgestellten Informationen hilfreich waren und freuen uns auf Ihre Rückmeldungen.

Vielen Dank für Ihre Zeit und Unterstützung. Es war eine Freude, mit Ihnen zusammenzuarbeiten. Ich wünsche Ihnen alles Gute für Ihre zukünftigen Projekte und hoffe, dass sich unsere Wege bald wieder kreuzen.

Herzliche Grüße.

", + "attachments": [] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180311-276-chapter_structure_generation_prompt.txt b/prompts/20260322-180311-276-chapter_structure_generation_prompt.txt new file mode 100644 index 00000000..49ba0ee5 --- /dev/null +++ b/prompts/20260322-180311-276-chapter_structure_generation_prompt.txt @@ -0,0 +1,119 @@ +# TASK: Plan Document Structure (Documents + Chapters) + +This is a STRUCTURE PLANNING task. You define which documents to create and which chapters each document will have. +Chapter CONTENT will be generated in a later step - here you only plan the STRUCTURE and assign content references. +Return EXACTLY ONE complete JSON object. Do not generate multiple JSON objects, alternatives, or variations. Do not use separators like "---" between JSON objects. + +## USER REQUEST (for context) +``` +entwirf eine email mit dem inhalt des files davor +``` + +## AVAILABLE CONTENT PARTS + +(No content parts available) + +## CONTENT ASSIGNMENT RULE + +CRITICAL: Every chapter MUST have contentParts assigned if it relates to documents/images/data from the user request. +If the user request mentions documents/images/data, then EVERY chapter that generates content related to those references MUST assign the relevant ContentParts explicitly. + +Assignment logic: +- If chapter DISPLAYS a document/image → assign "object" format ContentPart with "caption" +- If chapter generates text content ABOUT a document/image/data → assign ContentPart with "instruction": + - Prefer "extracted" format if available (contains analyzed/extracted content) + - If only "object" format is available, use "object" format with "instruction" (to write ABOUT the image/document) +- If chapter's generationHint or purpose relates to a document/image/data mentioned in user request → it MUST have ContentParts assigned +- Multiple chapters might assign the same ContentPart (e.g., one chapter displays image, another writes about it) +- Use ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above +- Empty contentParts are only allowed if chapter generates content WITHOUT referencing any documents/images/data from the user request + +CRITICAL RULE: If the user request mentions BOTH: + a) Documents/images/data (listed in AVAILABLE CONTENT PARTS above), AND + b) Generic content types (article text, main content, body text, etc.) +Then chapters that generate those generic content types MUST assign the relevant ContentParts, because the content should relate to or be based on the provided documents/images/data. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential information only +- AVOID verbose, lengthy, or repetitive text - be concise and direct +- Prioritize FACTS over filler text - no introductions like "In this chapter..." +- Minimize system resources: shorter content = faster processing +- Quality over quantity: precise, meaningful content rather than padding + +## CHAPTER STRUCTURE REQUIREMENTS +- Generate chapters based on USER REQUEST - analyze what structure the user wants +- Create ONLY the minimum chapters needed to cover the user's request - avoid over-structuring +- HARD LIMIT: Maximum 7 chapters per document. If the topic can be covered in fewer, prefer fewer. Combine related topics into single chapters rather than creating many small ones. +- IMPORTANT: Each chapter MUST have ALL these fields: + - id: Unique identifier (e.g., "chapter_1") + - level: Heading level (1, 2, 3, etc.) + - title: Chapter title + - contentParts: Object mapping ContentPart IDs to usage instructions (MUST assign if chapter relates to documents/data from user request) + - generationHint: Description of what content to generate (including formatting/styling requirements) + - sections: Empty array [] (REQUIRED - sections are generated in next phase) +- contentParts: {"partId": {"instruction": "..."} or {"caption": "..."} or both} - Assign ContentParts as required by CONTENT ASSIGNMENT RULE above +- The "instruction" field for each ContentPart MUST contain ALL relevant details from the USER REQUEST that apply to content extraction for this specific chapter. Include all formatting rules, data requirements, constraints, and specifications mentioned in the user request that are relevant for processing this ContentPart in this chapter. +- generationHint: Keep CONCISE but include relevant details from the USER REQUEST. Focus on WHAT to generate, not HOW to phrase it verbosely. +- The number of chapters depends on the user request - create only what is requested. Do NOT create chapters for topics without available data. + +CRITICAL: Only create chapters for CONTENT sections, not for formatting/styling requirements. Formatting/styling requirements to be included in each generationHint if needed. + +## DOCUMENT STRUCTURE + +For each document, determine: +- outputFormat: From USER REQUEST (explicit mention or infer from purpose/content type). Default: "txt". Multiple documents can have different formats. +- language: From USER REQUEST (map to ISO 639-1: de, en, fr, it...). Default: "de". Multiple documents can have different languages. +- chapters: Structure appropriately for the format (e.g., pptx=slides, docx=sections, xlsx=worksheets). Match format capabilities and constraints. + +Required JSON fields: +- metadata: {"title": "...", "language": "..."} +- documents: Array with id, title, filename, outputFormat, language, chapters[] +- chapters: Array with id, level, title, contentParts, generationHint, sections[] + +EXAMPLE STRUCTURE (for reference only - adapt to user request): +{ + "metadata": { + "title": "Document Title", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "Document Title", + "filename": "document.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Chapter Title", + "contentParts": { + "extracted_part_id": { + "instruction": "Use extracted content with ALL relevant details from user request" + } + }, + "generationHint": "Detailed description including ALL relevant details from user request for this chapter", + "sections": [] + } + ] + }] +} + +CRITICAL INSTRUCTIONS: +- Generate chapters based on USER REQUEST, NOT based on the example above +- The example shows the JSON structure format, NOT the required chapters +- Create only the chapters that match the user's request +- Adapt chapter titles and structure to match the user's specific request +- Determine outputFormat and language for each document by analyzing the USER REQUEST above +- The example shows placeholders "txt" and "de" - YOU MUST REPLACE THESE with actual values determined from the USER REQUEST + +MANDATORY CONTENT ASSIGNMENT CHECK: +For each chapter, verify: +1. Does the user request mention documents/images/data? (e.g., "photo", "image", "document", "data", "based on", "about") +2. Does this chapter's generationHint, title, or purpose relate to those documents/images/data mentioned in step 1? + - Examples: "article about the photo", "text describing the image", "analysis of the document", "content based on the data" + - Even if chapter doesn't explicitly say "about the image", if user request mentions both the image AND this chapter's content type → relate them +3. If YES to both → chapter MUST have contentParts assigned (cannot be empty {}) +4. If ContentPart is "object" format and chapter needs to write ABOUT it → assign with "instruction" field, not just "caption" + +OUTPUT FORMAT: Start with { and end with }. Do NOT use markdown code fences (```json). Do NOT add explanatory text before or after the JSON. Return ONLY the JSON object itself. diff --git a/prompts/20260322-180313-277-chapter_structure_generation_response.txt b/prompts/20260322-180313-277-chapter_structure_generation_response.txt new file mode 100644 index 00000000..b1daec4e --- /dev/null +++ b/prompts/20260322-180313-277-chapter_structure_generation_response.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail, Begrüßung und Vorstellung des Themas", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Hauptinhalt der E-Mail basierend auf dem vorherigen Dokument", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schlussfolgerung", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung und einem Abschiedsgruß", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180313-278-chapter_structure_generation_final_result.txt b/prompts/20260322-180313-278-chapter_structure_generation_final_result.txt new file mode 100644 index 00000000..b1daec4e --- /dev/null +++ b/prompts/20260322-180313-278-chapter_structure_generation_final_result.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Einleitung der E-Mail, Begrüßung und Vorstellung des Themas", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Hauptinhalt der E-Mail basierend auf dem vorherigen Dokument", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Schlussfolgerung", + "contentParts": {}, + "generationHint": "Abschluss der E-Mail mit einer Zusammenfassung und einem Abschiedsgruß", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180313-279-chapter_structure_chapter_1_prompt.txt b/prompts/20260322-180313-279-chapter_structure_chapter_1_prompt.txt new file mode 100644 index 00000000..2a21588c --- /dev/null +++ b/prompts/20260322-180313-279-chapter_structure_chapter_1_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Einleitung (Level 1, ID: chapter_1) +GENERATION HINT: Einleitung der E-Mail, Begrüßung und Vorstellung des Themas + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-180313-280-chapter_structure_chapter_2_prompt.txt b/prompts/20260322-180313-280-chapter_structure_chapter_2_prompt.txt new file mode 100644 index 00000000..1e614a94 --- /dev/null +++ b/prompts/20260322-180313-280-chapter_structure_chapter_2_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Hauptinhalt (Level 1, ID: chapter_2) +GENERATION HINT: Hauptinhalt der E-Mail basierend auf dem vorherigen Dokument + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-180313-281-chapter_structure_chapter_3_prompt.txt b/prompts/20260322-180313-281-chapter_structure_chapter_3_prompt.txt new file mode 100644 index 00000000..675271f1 --- /dev/null +++ b/prompts/20260322-180313-281-chapter_structure_chapter_3_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Schlussfolgerung (Level 1, ID: chapter_3) +GENERATION HINT: Abschluss der E-Mail mit einer Zusammenfassung und einem Abschiedsgruß + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-180316-282-chapter_structure_chapter_3_response.txt b/prompts/20260322-180316-282-chapter_structure_chapter_3_response.txt new file mode 100644 index 00000000..c65fe0a0 --- /dev/null +++ b/prompts/20260322-180316-282-chapter_structure_chapter_3_response.txt @@ -0,0 +1,26 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung der Hauptpunkte der E-Mail", + "useAiCall": true, + "elements": [ + "In dieser E-Mail haben wir die wichtigsten Themen und Ergebnisse unserer Diskussion zusammengefasst. Wir haben die nächsten Schritte festgelegt und die Verantwortlichkeiten verteilt, um sicherzustellen, dass alle Beteiligten auf dem gleichen Stand sind." + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschiedsgruß und Dank für die Zusammenarbeit", + "useAiCall": true, + "elements": [ + "Vielen Dank für Ihre Aufmerksamkeit und die konstruktive Zusammenarbeit. Wir freuen uns auf die weitere erfolgreiche Zusammenarbeit und stehen für Rückfragen jederzeit zur Verfügung." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180319-283-chapter_structure_chapter_2_response.txt b/prompts/20260322-180319-283-chapter_structure_chapter_2_response.txt new file mode 100644 index 00000000..2eded4f9 --- /dev/null +++ b/prompts/20260322-180319-283-chapter_structure_chapter_2_response.txt @@ -0,0 +1,58 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung in den Hauptinhalt der E-Mail, basierend auf dem vorherigen Dokument", + "useAiCall": true, + "elements": [ + "Der Hauptinhalt einer E-Mail ist entscheidend für die effektive Kommunikation. Er sollte klar, prägnant und auf den Punkt gebracht sein, um die Aufmerksamkeit des Lesers zu halten und die beabsichtigte Botschaft zu vermitteln." + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Wichtige Punkte, die im Hauptinhalt einer E-Mail enthalten sein sollten", + "useAiCall": true, + "elements": [ + "Klare Betreffzeile, die den Inhalt zusammenfasst", + "Einleitung, die den Zweck der E-Mail erklärt", + "Hauptteil mit detaillierten Informationen oder Anfragen", + "Abschluss mit einer klaren Handlungsaufforderung oder Zusammenfassung", + "Höfliche Verabschiedung und Kontaktinformationen" + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Tipps zur Verbesserung der Lesbarkeit und Wirkung des Hauptinhalts", + "useAiCall": true, + "elements": [ + "Um die Lesbarkeit und Wirkung des Hauptinhalts zu verbessern, sollten Sie kurze Absätze verwenden, klare und einfache Sprache wählen und wichtige Informationen hervorheben. Vermeiden Sie Fachjargon, es sei denn, der Empfänger ist damit vertraut." + ] + }, + { + "id": "section_4", + "content_type": "table", + "contentPartIds": [], + "generationHint": "Vergleich von effektiven und ineffektiven E-Mail-Inhalten", + "useAiCall": true, + "elements": [ + { + "headers": ["Effektive Inhalte", "Ineffektive Inhalte"], + "rows": [ + ["Klare Struktur", "Unklare Struktur"], + ["Prägnante Sprache", "Langatmige Erklärungen"], + ["Relevante Informationen", "Irrelevante Details"], + ["Klare Handlungsaufforderung", "Unklare oder fehlende Handlungsaufforderung"] + ] + } + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180321-284-chapter_structure_chapter_1_response.txt b/prompts/20260322-180321-284-chapter_structure_chapter_1_response.txt new file mode 100644 index 00000000..3d4fe325 --- /dev/null +++ b/prompts/20260322-180321-284-chapter_structure_chapter_1_response.txt @@ -0,0 +1,49 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung der E-Mail, Begrüßung und Vorstellung des Themas", + "useAiCall": true, + "elements": [ + "Willkommen zu unserer Einführung in das Thema der E-Mail-Kommunikation. In diesem Kapitel werden wir die Grundlagen der E-Mail-Kommunikation besprechen, einschließlich der Begrüßung und der Vorstellung des Themas. Ziel ist es, Ihnen ein klares Verständnis für die Bedeutung und den Aufbau effektiver E-Mails zu vermitteln." + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Wichtige Aspekte der E-Mail-Einleitung", + "useAiCall": true, + "elements": [ + "Klarheit und Prägnanz in der Begrüßung", + "Relevanz des Themas für den Empfänger", + "Angemessener Ton und Stil", + "Ziel der E-Mail klar definieren" + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Bedeutung der Begrüßung in E-Mails", + "useAiCall": true, + "elements": [ + "Die Begrüßung in einer E-Mail ist entscheidend, um einen positiven ersten Eindruck zu hinterlassen. Sie sollte den Empfänger direkt ansprechen und den Ton für den weiteren Verlauf der Kommunikation setzen. Eine gut formulierte Begrüßung kann das Interesse des Lesers wecken und die Bereitschaft erhöhen, die gesamte Nachricht zu lesen." + ] + }, + { + "id": "section_4", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Vorstellung des Themas in der E-Mail", + "useAiCall": true, + "elements": [ + "Die Vorstellung des Themas in einer E-Mail sollte klar und prägnant sein. Es ist wichtig, dem Empfänger sofort zu vermitteln, worum es in der Nachricht geht, um Missverständnisse zu vermeiden und die Aufmerksamkeit aufrechtzuerhalten. Eine klare Themenvorstellung hilft auch dabei, die Relevanz der E-Mail für den Empfänger zu verdeutlichen." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180321-285-chapter_1_section_section_1_prompt.txt b/prompts/20260322-180321-285-chapter_1_section_section_1_prompt.txt new file mode 100644 index 00000000..7b72d7a1 --- /dev/null +++ b/prompts/20260322-180321-285-chapter_1_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einleitung der E-Mail, Begrüßung und Vorstellung des Themas +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-180321-286-chapter_1_section_section_2_prompt.txt b/prompts/20260322-180321-286-chapter_1_section_section_2_prompt.txt new file mode 100644 index 00000000..65ff47ca --- /dev/null +++ b/prompts/20260322-180321-286-chapter_1_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: bullet_list +- Generation Hint: Wichtige Aspekte der E-Mail-Einleitung +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_4 (paragraph): + diff --git a/prompts/20260322-180321-287-chapter_1_section_section_3_prompt.txt b/prompts/20260322-180321-287-chapter_1_section_section_3_prompt.txt new file mode 100644 index 00000000..3d588c06 --- /dev/null +++ b/prompts/20260322-180321-287-chapter_1_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: paragraph +- Generation Hint: Bedeutung der Begrüßung in E-Mails +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_2 (bullet_list): + +Following sections: +- section_4 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-180321-288-chapter_1_section_section_4_prompt.txt b/prompts/20260322-180321-288-chapter_1_section_section_4_prompt.txt new file mode 100644 index 00000000..40366425 --- /dev/null +++ b/prompts/20260322-180321-288-chapter_1_section_section_4_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_4 +- Content Type: paragraph +- Generation Hint: Vorstellung des Themas in der E-Mail +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_2 (bullet_list): +- section_3 (paragraph): + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-180321-289-chapter_2_section_section_1_prompt.txt b/prompts/20260322-180321-289-chapter_2_section_section_1_prompt.txt new file mode 100644 index 00000000..d5e567c4 --- /dev/null +++ b/prompts/20260322-180321-289-chapter_2_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einleitung in den Hauptinhalt der E-Mail, basierend auf dem vorherigen Dokument +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-180322-290-chapter_1_section_section_1_response.txt b/prompts/20260322-180322-290-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..6f53e048 --- /dev/null +++ b/prompts/20260322-180322-290-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Sehr geehrte Damen und Herren, ich hoffe, diese Nachricht trifft Sie wohl. Ich möchte Ihnen heute ein wichtiges Thema vorstellen, das für unsere zukünftige Zusammenarbeit von großer Bedeutung ist." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180322-291-chapter_1_section_section_1_response.txt b/prompts/20260322-180322-291-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..6f53e048 --- /dev/null +++ b/prompts/20260322-180322-291-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Sehr geehrte Damen und Herren, ich hoffe, diese Nachricht trifft Sie wohl. Ich möchte Ihnen heute ein wichtiges Thema vorstellen, das für unsere zukünftige Zusammenarbeit von großer Bedeutung ist." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180322-292-chapter_2_section_section_2_prompt.txt b/prompts/20260322-180322-292-chapter_2_section_section_2_prompt.txt new file mode 100644 index 00000000..403d6801 --- /dev/null +++ b/prompts/20260322-180322-292-chapter_2_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: bullet_list +- Generation Hint: Wichtige Punkte, die im Hauptinhalt einer E-Mail enthalten sein sollten +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_4 (paragraph): + diff --git a/prompts/20260322-180323-293-chapter_1_section_section_4_response.txt b/prompts/20260322-180323-293-chapter_1_section_section_4_response.txt new file mode 100644 index 00000000..ef029907 --- /dev/null +++ b/prompts/20260322-180323-293-chapter_1_section_section_4_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In dieser E-Mail möchten wir Ihnen das Thema näherbringen, das in den vorherigen Abschnitten behandelt wurde. Wir haben die wichtigsten Punkte zusammengefasst, um Ihnen einen klaren Überblick zu geben. Bitte beachten Sie die Details, die in den folgenden Abschnitten weiter erläutert werden." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180323-294-chapter_1_section_section_4_response.txt b/prompts/20260322-180323-294-chapter_1_section_section_4_response.txt new file mode 100644 index 00000000..ef029907 --- /dev/null +++ b/prompts/20260322-180323-294-chapter_1_section_section_4_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In dieser E-Mail möchten wir Ihnen das Thema näherbringen, das in den vorherigen Abschnitten behandelt wurde. Wir haben die wichtigsten Punkte zusammengefasst, um Ihnen einen klaren Überblick zu geben. Bitte beachten Sie die Details, die in den folgenden Abschnitten weiter erläutert werden." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180323-295-chapter_2_section_section_3_prompt.txt b/prompts/20260322-180323-295-chapter_2_section_section_3_prompt.txt new file mode 100644 index 00000000..467efc05 --- /dev/null +++ b/prompts/20260322-180323-295-chapter_2_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: paragraph +- Generation Hint: Tipps zur Verbesserung der Lesbarkeit und Wirkung des Hauptinhalts +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_2 (bullet_list): + +Following sections: +- section_4 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-180323-296-chapter_2_section_section_1_response.txt b/prompts/20260322-180323-296-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..ddb1a4bb --- /dev/null +++ b/prompts/20260322-180323-296-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Nachricht und Ihr Interesse an unseren Dienstleistungen. Wir schätzen Ihre Anfrage sehr und möchten Ihnen die bestmögliche Unterstützung bieten. Im Folgenden finden Sie eine Übersicht über die wichtigsten Informationen und nächsten Schritte, die wir gemeinsam unternehmen können, um Ihre Anforderungen zu erfüllen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180323-297-chapter_2_section_section_1_response.txt b/prompts/20260322-180323-297-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..ddb1a4bb --- /dev/null +++ b/prompts/20260322-180323-297-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Nachricht und Ihr Interesse an unseren Dienstleistungen. Wir schätzen Ihre Anfrage sehr und möchten Ihnen die bestmögliche Unterstützung bieten. Im Folgenden finden Sie eine Übersicht über die wichtigsten Informationen und nächsten Schritte, die wir gemeinsam unternehmen können, um Ihre Anforderungen zu erfüllen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180323-298-chapter_2_section_section_4_prompt.txt b/prompts/20260322-180323-298-chapter_2_section_section_4_prompt.txt new file mode 100644 index 00000000..39bcf4da --- /dev/null +++ b/prompts/20260322-180323-298-chapter_2_section_section_4_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_4 +- Content Type: table +- Generation Hint: Vergleich von effektiven und ineffektiven E-Mail-Inhalten +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (table). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "table", + "content": {{"headers": ["Column1", "Column2"], "rows": [["Value1", "Value2"], ["Value3", "Value4"]]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_2 (bullet_list): +- section_3 (paragraph): + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-180323-299-chapter_1_section_section_3_response.txt b/prompts/20260322-180323-299-chapter_1_section_section_3_response.txt new file mode 100644 index 00000000..6aa04e33 --- /dev/null +++ b/prompts/20260322-180323-299-chapter_1_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die Begrüßung in E-Mails ist entscheidend, um den Ton der Kommunikation festzulegen. Eine formelle Anrede zeigt Respekt und Professionalität, während eine informelle Begrüßung Nähe und Vertrautheit signalisiert. Die Wahl der Begrüßung sollte sich nach dem Empfänger und dem Kontext richten. Eine unpassende Anrede kann Missverständnisse hervorrufen oder den Empfänger verärgern. Daher ist es wichtig, die richtige Balance zwischen Höflichkeit und Angemessenheit zu finden, um eine positive Kommunikation zu gewährleisten." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180323-300-chapter_1_section_section_3_response.txt b/prompts/20260322-180323-300-chapter_1_section_section_3_response.txt new file mode 100644 index 00000000..6aa04e33 --- /dev/null +++ b/prompts/20260322-180323-300-chapter_1_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die Begrüßung in E-Mails ist entscheidend, um den Ton der Kommunikation festzulegen. Eine formelle Anrede zeigt Respekt und Professionalität, während eine informelle Begrüßung Nähe und Vertrautheit signalisiert. Die Wahl der Begrüßung sollte sich nach dem Empfänger und dem Kontext richten. Eine unpassende Anrede kann Missverständnisse hervorrufen oder den Empfänger verärgern. Daher ist es wichtig, die richtige Balance zwischen Höflichkeit und Angemessenheit zu finden, um eine positive Kommunikation zu gewährleisten." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180323-301-chapter_3_section_section_1_prompt.txt b/prompts/20260322-180323-301-chapter_3_section_section_1_prompt.txt new file mode 100644 index 00000000..93309ff4 --- /dev/null +++ b/prompts/20260322-180323-301-chapter_3_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Zusammenfassung der Hauptpunkte der E-Mail +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-180324-302-chapter_1_section_section_2_response.txt b/prompts/20260322-180324-302-chapter_1_section_section_2_response.txt new file mode 100644 index 00000000..0cfc323d --- /dev/null +++ b/prompts/20260322-180324-302-chapter_1_section_section_2_response.txt @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Klarer Betreff: Prägnant und relevant für den Empfänger.", + "Persönliche Anrede: Verwenden Sie den Namen des Empfängers.", + "Zweck der E-Mail: Kurz und direkt den Grund der Nachricht nennen.", + "Relevanz: Warum ist die Nachricht für den Empfänger wichtig?", + "Höflicher Ton: Freundlich und respektvoll formulieren.", + "Call-to-Action: Was soll der Empfänger als nächstes tun?", + "Kontaktinformationen: Für Rückfragen erreichbar sein." + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180324-303-chapter_1_section_section_2_response.txt b/prompts/20260322-180324-303-chapter_1_section_section_2_response.txt new file mode 100644 index 00000000..0cfc323d --- /dev/null +++ b/prompts/20260322-180324-303-chapter_1_section_section_2_response.txt @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Klarer Betreff: Prägnant und relevant für den Empfänger.", + "Persönliche Anrede: Verwenden Sie den Namen des Empfängers.", + "Zweck der E-Mail: Kurz und direkt den Grund der Nachricht nennen.", + "Relevanz: Warum ist die Nachricht für den Empfänger wichtig?", + "Höflicher Ton: Freundlich und respektvoll formulieren.", + "Call-to-Action: Was soll der Empfänger als nächstes tun?", + "Kontaktinformationen: Für Rückfragen erreichbar sein." + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180324-304-chapter_3_section_section_2_prompt.txt b/prompts/20260322-180324-304-chapter_3_section_section_2_prompt.txt new file mode 100644 index 00000000..35a78ec8 --- /dev/null +++ b/prompts/20260322-180324-304-chapter_3_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: paragraph +- Generation Hint: Abschiedsgruß und Dank für die Zusammenarbeit +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_4 (paragraph): + diff --git a/prompts/20260322-180324-305-chapter_2_section_section_2_response.txt b/prompts/20260322-180324-305-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..a5e76651 --- /dev/null +++ b/prompts/20260322-180324-305-chapter_2_section_section_2_response.txt @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Betreff der E-Mail klar und prägnant formulieren", + "Höfliche Anrede und Begrüßung verwenden", + "Zweck der E-Mail direkt ansprechen", + "Wichtige Informationen und Details strukturiert darstellen", + "Klare Handlungsaufforderung oder nächste Schritte angeben", + "Freundlicher Abschluss und Grußformel", + "Kontaktdaten für Rückfragen bereitstellen" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180324-306-chapter_2_section_section_2_response.txt b/prompts/20260322-180324-306-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..a5e76651 --- /dev/null +++ b/prompts/20260322-180324-306-chapter_2_section_section_2_response.txt @@ -0,0 +1,18 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Betreff der E-Mail klar und prägnant formulieren", + "Höfliche Anrede und Begrüßung verwenden", + "Zweck der E-Mail direkt ansprechen", + "Wichtige Informationen und Details strukturiert darstellen", + "Klare Handlungsaufforderung oder nächste Schritte angeben", + "Freundlicher Abschluss und Grußformel", + "Kontaktdaten für Rückfragen bereitstellen" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180324-307-chapter_3_section_section_1_response.txt b/prompts/20260322-180324-307-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..7dab148a --- /dev/null +++ b/prompts/20260322-180324-307-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen, darunter die Notwendigkeit einer schnellen Antwort auf die Anfrage, die Klärung offener Fragen und die Bereitstellung zusätzlicher Informationen. Es wird auch auf die Bedeutung der Einhaltung von Fristen hingewiesen und die Bereitschaft zur weiteren Zusammenarbeit betont." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180324-308-chapter_3_section_section_1_response.txt b/prompts/20260322-180324-308-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..7dab148a --- /dev/null +++ b/prompts/20260322-180324-308-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen, darunter die Notwendigkeit einer schnellen Antwort auf die Anfrage, die Klärung offener Fragen und die Bereitstellung zusätzlicher Informationen. Es wird auch auf die Bedeutung der Einhaltung von Fristen hingewiesen und die Bereitschaft zur weiteren Zusammenarbeit betont." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180325-309-chapter_2_section_section_3_response.txt b/prompts/20260322-180325-309-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..1eabf29b --- /dev/null +++ b/prompts/20260322-180325-309-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Um die Lesbarkeit und Wirkung des Hauptinhalts zu verbessern, sollten Sie klare und prägnante Sätze verwenden. Vermeiden Sie Fachjargon, der das Verständnis erschweren könnte, und strukturieren Sie den Text logisch mit Absätzen und Überschriften. Nutzen Sie aktive Sprache, um den Leser direkt anzusprechen, und variieren Sie Satzlängen, um den Textfluss dynamisch zu gestalten. Visuelle Elemente wie Aufzählungen oder Tabellen können komplexe Informationen vereinfachen und die Aufmerksamkeit des Lesers lenken. Achten Sie darauf, dass der Text frei von Rechtschreib- und Grammatikfehlern ist, um die Professionalität zu wahren." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180325-310-chapter_2_section_section_3_response.txt b/prompts/20260322-180325-310-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..1eabf29b --- /dev/null +++ b/prompts/20260322-180325-310-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Um die Lesbarkeit und Wirkung des Hauptinhalts zu verbessern, sollten Sie klare und prägnante Sätze verwenden. Vermeiden Sie Fachjargon, der das Verständnis erschweren könnte, und strukturieren Sie den Text logisch mit Absätzen und Überschriften. Nutzen Sie aktive Sprache, um den Leser direkt anzusprechen, und variieren Sie Satzlängen, um den Textfluss dynamisch zu gestalten. Visuelle Elemente wie Aufzählungen oder Tabellen können komplexe Informationen vereinfachen und die Aufmerksamkeit des Lesers lenken. Achten Sie darauf, dass der Text frei von Rechtschreib- und Grammatikfehlern ist, um die Professionalität zu wahren." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180325-311-chapter_2_section_section_4_response.txt b/prompts/20260322-180325-311-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..a75aa209 --- /dev/null +++ b/prompts/20260322-180325-311-chapter_2_section_section_4_response.txt @@ -0,0 +1,19 @@ +{ + "elements": [ + { + "type": "table", + "content": { + "headers": ["Effektive E-Mail-Inhalte", "Ineffektive E-Mail-Inhalte"], + "rows": [ + ["Klarer Betreff", "Unklarer oder fehlender Betreff"], + ["Personalisierte Ansprache", "Allgemeine Ansprache"], + ["Klare Handlungsaufforderung", "Vage oder keine Handlungsaufforderung"], + ["Relevante Informationen", "Irrelevante oder überflüssige Informationen"], + ["Kurze und prägnante Sätze", "Lange und komplizierte Sätze"], + ["Visuell ansprechendes Layout", "Unübersichtliches Layout"], + ["Fehlerfreie Grammatik und Rechtschreibung", "Grammatik- und Rechtschreibfehler"] + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180325-312-chapter_2_section_section_4_response.txt b/prompts/20260322-180325-312-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..b774ba29 --- /dev/null +++ b/prompts/20260322-180325-312-chapter_2_section_section_4_response.txt @@ -0,0 +1,43 @@ +{ + "elements": [ + { + "type": "table", + "content": { + "headers": [ + "Effektive E-Mail-Inhalte", + "Ineffektive E-Mail-Inhalte" + ], + "rows": [ + [ + "Klarer Betreff", + "Unklarer oder fehlender Betreff" + ], + [ + "Personalisierte Ansprache", + "Allgemeine Ansprache" + ], + [ + "Klare Handlungsaufforderung", + "Vage oder keine Handlungsaufforderung" + ], + [ + "Relevante Informationen", + "Irrelevante oder überflüssige Informationen" + ], + [ + "Kurze und prägnante Sätze", + "Lange und komplizierte Sätze" + ], + [ + "Visuell ansprechendes Layout", + "Unübersichtliches Layout" + ], + [ + "Fehlerfreie Grammatik und Rechtschreibung", + "Grammatik- und Rechtschreibfehler" + ] + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180325-313-chapter_3_section_section_2_response.txt b/prompts/20260322-180325-313-chapter_3_section_section_2_response.txt new file mode 100644 index 00000000..f6ccd3d2 --- /dev/null +++ b/prompts/20260322-180325-313-chapter_3_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für die hervorragende Zusammenarbeit und das Vertrauen, das Sie uns entgegengebracht haben. Es war eine Freude, mit Ihnen zusammenzuarbeiten und gemeinsam Erfolge zu erzielen. Wir wünschen Ihnen alles Gute für die Zukunft und hoffen, dass sich unsere Wege bald wieder kreuzen. Bleiben Sie gesund und erfolgreich!" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180325-314-chapter_3_section_section_2_response.txt b/prompts/20260322-180325-314-chapter_3_section_section_2_response.txt new file mode 100644 index 00000000..f6ccd3d2 --- /dev/null +++ b/prompts/20260322-180325-314-chapter_3_section_section_2_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für die hervorragende Zusammenarbeit und das Vertrauen, das Sie uns entgegengebracht haben. Es war eine Freude, mit Ihnen zusammenzuarbeiten und gemeinsam Erfolge zu erzielen. Wir wünschen Ihnen alles Gute für die Zukunft und hoffen, dass sich unsere Wege bald wieder kreuzen. Bleiben Sie gesund und erfolgreich!" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180325-315-document_generation_response.txt b/prompts/20260322-180325-315-document_generation_response.txt new file mode 100644 index 00000000..eb9c0a2b --- /dev/null +++ b/prompts/20260322-180325-315-document_generation_response.txt @@ -0,0 +1,258 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "sections": [ + { + "id": "chapter_1_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Einleitung", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung der E-Mail, Begrüßung und Vorstellung des Themas", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Sehr geehrte Damen und Herren, ich hoffe, diese Nachricht trifft Sie wohl. Ich möchte Ihnen heute ein wichtiges Thema vorstellen, das für unsere zukünftige Zusammenarbeit von großer Bedeutung ist." + } + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Wichtige Aspekte der E-Mail-Einleitung", + "useAiCall": true, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Klarer Betreff: Prägnant und relevant für den Empfänger.", + "Persönliche Anrede: Verwenden Sie den Namen des Empfängers.", + "Zweck der E-Mail: Kurz und direkt den Grund der Nachricht nennen.", + "Relevanz: Warum ist die Nachricht für den Empfänger wichtig?", + "Höflicher Ton: Freundlich und respektvoll formulieren.", + "Call-to-Action: Was soll der Empfänger als nächstes tun?", + "Kontaktinformationen: Für Rückfragen erreichbar sein." + ] + } + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Bedeutung der Begrüßung in E-Mails", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die Begrüßung in E-Mails ist entscheidend, um den Ton der Kommunikation festzulegen. Eine formelle Anrede zeigt Respekt und Professionalität, während eine informelle Begrüßung Nähe und Vertrautheit signalisiert. Die Wahl der Begrüßung sollte sich nach dem Empfänger und dem Kontext richten. Eine unpassende Anrede kann Missverständnisse hervorrufen oder den Empfänger verärgern. Daher ist es wichtig, die richtige Balance zwischen Höflichkeit und Angemessenheit zu finden, um eine positive Kommunikation zu gewährleisten." + } + } + ] + }, + { + "id": "section_4", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Vorstellung des Themas in der E-Mail", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In dieser E-Mail möchten wir Ihnen das Thema näherbringen, das in den vorherigen Abschnitten behandelt wurde. Wir haben die wichtigsten Punkte zusammengefasst, um Ihnen einen klaren Überblick zu geben. Bitte beachten Sie die Details, die in den folgenden Abschnitten weiter erläutert werden." + } + } + ] + }, + { + "id": "chapter_2_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Hauptinhalt", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung in den Hauptinhalt der E-Mail, basierend auf dem vorherigen Dokument", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Nachricht und Ihr Interesse an unseren Dienstleistungen. Wir schätzen Ihre Anfrage sehr und möchten Ihnen die bestmögliche Unterstützung bieten. Im Folgenden finden Sie eine Übersicht über die wichtigsten Informationen und nächsten Schritte, die wir gemeinsam unternehmen können, um Ihre Anforderungen zu erfüllen." + } + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Wichtige Punkte, die im Hauptinhalt einer E-Mail enthalten sein sollten", + "useAiCall": true, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Betreff der E-Mail klar und prägnant formulieren", + "Höfliche Anrede und Begrüßung verwenden", + "Zweck der E-Mail direkt ansprechen", + "Wichtige Informationen und Details strukturiert darstellen", + "Klare Handlungsaufforderung oder nächste Schritte angeben", + "Freundlicher Abschluss und Grußformel", + "Kontaktdaten für Rückfragen bereitstellen" + ] + } + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Tipps zur Verbesserung der Lesbarkeit und Wirkung des Hauptinhalts", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Um die Lesbarkeit und Wirkung des Hauptinhalts zu verbessern, sollten Sie klare und prägnante Sätze verwenden. Vermeiden Sie Fachjargon, der das Verständnis erschweren könnte, und strukturieren Sie den Text logisch mit Absätzen und Überschriften. Nutzen Sie aktive Sprache, um den Leser direkt anzusprechen, und variieren Sie Satzlängen, um den Textfluss dynamisch zu gestalten. Visuelle Elemente wie Aufzählungen oder Tabellen können komplexe Informationen vereinfachen und die Aufmerksamkeit des Lesers lenken. Achten Sie darauf, dass der Text frei von Rechtschreib- und Grammatikfehlern ist, um die Professionalität zu wahren." + } + } + ] + }, + { + "id": "section_4", + "content_type": "table", + "contentPartIds": [], + "generationHint": "Vergleich von effektiven und ineffektiven E-Mail-Inhalten", + "useAiCall": true, + "elements": [ + { + "type": "table", + "content": { + "headers": [ + "Effektive E-Mail-Inhalte", + "Ineffektive E-Mail-Inhalte" + ], + "rows": [ + [ + "Klarer Betreff", + "Unklarer oder fehlender Betreff" + ], + [ + "Personalisierte Ansprache", + "Allgemeine Ansprache" + ], + [ + "Klare Handlungsaufforderung", + "Vage oder keine Handlungsaufforderung" + ], + [ + "Relevante Informationen", + "Irrelevante oder überflüssige Informationen" + ], + [ + "Kurze und prägnante Sätze", + "Lange und komplizierte Sätze" + ], + [ + "Visuell ansprechendes Layout", + "Unübersichtliches Layout" + ], + [ + "Fehlerfreie Grammatik und Rechtschreibung", + "Grammatik- und Rechtschreibfehler" + ] + ] + } + } + ] + }, + { + "id": "chapter_3_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Schlussfolgerung", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung der Hauptpunkte der E-Mail", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Die E-Mail fasst die wichtigsten Punkte zusammen, darunter die Notwendigkeit einer schnellen Antwort auf die Anfrage, die Klärung offener Fragen und die Bereitstellung zusätzlicher Informationen. Es wird auch auf die Bedeutung der Einhaltung von Fristen hingewiesen und die Bereitschaft zur weiteren Zusammenarbeit betont." + } + } + ] + }, + { + "id": "section_2", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Abschiedsgruß und Dank für die Zusammenarbeit", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für die hervorragende Zusammenarbeit und das Vertrauen, das Sie uns entgegengebracht haben. Es war eine Freude, mit Ihnen zusammenzuarbeiten und gemeinsam Erfolge zu erzielen. Wir wünschen Ihnen alles Gute für die Zukunft und hoffen, dass sich unsere Wege bald wieder kreuzen. Bleiben Sie gesund und erfolgreich!" + } + } + ] + } + ], + "metadata": { + "outputStyle": "document" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180325-316-email_composition_prompt.txt b/prompts/20260322-180325-316-email_composition_prompt.txt new file mode 100644 index 00000000..464fda3d --- /dev/null +++ b/prompts/20260322-180325-316-email_composition_prompt.txt @@ -0,0 +1,22 @@ +Compose an email based on this context: +------- +Email Entwurf\n=============\n\nEinleitung\n==========\n\nSehr geehrte Damen und Herren, ich hoffe, diese Nachricht trifft Sie wohl. Ich möchte Ihnen heute ein wichtiges Thema vorstellen, das für unsere zukünftige Zusammenarbeit von großer Bedeutung ist.\n\n- Klarer Betreff: Prägnant und relevant für den Empfänger.\n- Persönliche Anrede: Verwenden Sie den Namen des Empfängers.\n- Zweck der E-Mail: Kurz und direkt den Grund der Nachricht nennen.\n- Relevanz: Warum ist die Nachricht für den Empfänger wichtig?\n- Höflicher Ton: Freundlich und respektvoll formulieren.\n- Call-to-Action: Was soll der Empfänger als nächstes tun?\n- Kontaktinformationen: Für Rückfragen erreichbar sein.\n\nDie Begrüßung in E-Mails ist entscheidend, um den Ton der Kommunikation festzulegen. Eine formelle Anrede zeigt Respekt und Professionalität, während eine informelle Begrüßung Nähe und Vertrautheit signalisiert. Die Wahl der Begrüßung sollte sich nach dem Empfänger und dem Kontext richten. Eine unpassende Anrede kann Missverständnisse hervorrufen oder den Empfänger verärgern. Daher ist es wichtig, die richtige Balance zwischen Höflichkeit und Angemessenheit zu finden, um eine positive Kommunikation zu gewährleisten.\n\nIn dieser E-Mail möchten wir Ihnen das Thema näherbringen, das in den vorherigen Abschnitten behandelt wurde. Wir haben die wichtigsten Punkte zusammengefasst, um Ihnen einen klaren Überblick zu geben. Bitte beachten Sie die Details, die in den folgenden Abschnitten weiter erläutert werden.\n\nHauptinhalt\n===========\n\nVielen Dank für Ihre Nachricht und Ihr Interesse an unseren Dienstleistungen. Wir schätzen Ihre Anfrage sehr und möchten Ihnen die bestmögliche Unterstützung bieten. Im Folgenden finden Sie eine Übersicht über die wichtigsten Informationen und nächsten Schritte, die wir gemeinsam unternehmen können, um Ihre Anforderungen zu erfüllen.\n\n- Betreff der E-Mail klar und prägnant formulieren\n- Höfliche Anrede und Begrüßung verwenden\n- Zweck der E-Mail direkt ansprechen\n- Wichtige Informationen und Details strukturiert darstellen\n- Klare Handlungsaufforderung oder nächste Schritte angeben\n- Freundlicher Abschluss und Grußformel\n- Kontaktdaten für Rückfragen bereitstellen\n\nUm die Lesbarkeit und Wirkung des Hauptinhalts zu verbessern, sollten Sie klare und prägnante Sätze verwenden. Vermeiden Sie Fachjargon, der das Verständnis erschweren könnte, und strukturieren Sie den Text logisch mit Absätzen und Überschriften. Nutzen Sie aktive Sprache, um den Leser direkt anzusprechen, und variieren Sie Satzlängen, um den Textfluss dynamisch zu gestalten. Visuelle Elemente wie Aufzählungen oder Tabellen können komplexe Informationen vereinfachen und die Aufmerksamkeit des Lesers lenken. Achten Sie darauf, dass der Text frei von Rechtschreib- und Grammatikfehlern ist, um die Professionalität zu wahren.\n\nEffektive E-Mail-Inhalte | Ineffektive E-Mail-Inhalte\n------------------------ | --------------------------\nKlarer Betreff | Unklarer oder fehlender Betreff\nPersonalisierte Ansprache | Allgemeine Ansprache\nKlare Handlungsaufforderung | Vage oder keine Handlungsaufforderung\nRelevante Informationen | Irrelevante oder überflüssige Informationen\nKurze und prägnante Sätze | Lange und komplizierte Sätze\nVisuell ansprechendes Layout | Unübersichtliches Layout\nFehlerfreie Grammatik und Rechtschreibung | Grammatik- und Rechtschreibfehler\n\nSchlussfolgerung\n================\n\nDie E-Mail fasst die wichtigsten Punkte zusammen, darunter die Notwendigkeit einer schnellen Antwort auf die Anfrage, die Klärung offener Fragen und die Bereitstellung zusätzlicher Informationen. Es wird auch auf die Bedeutung der Einhaltung von Fristen hingewiesen und die Bereitschaft zur weiteren Zusammenarbeit betont.\n\nVielen Dank für die hervorragende Zusammenarbeit und das Vertrauen, das Sie uns entgegengebracht haben. Es war eine Freude, mit Ihnen zusammenzuarbeiten und gemeinsam Erfolge zu erzielen. Wir wünschen Ihnen alles Gute für die Zukunft und hoffen, dass sich unsere Wege bald wieder kreuzen. Bleiben Sie gesund und erfolgreich!\n\n\nGenerated: 2026-03-22 18:03:25 UTC +------- + +Recipients: (not specified - this is a draft) +Style: business +Max length: 1000 characters + +Available_Document_References: + - (no documents) + +Based on the context, decide which documents to attach. + +CRITICAL: Use EXACT document references from Available_Document_References above. For individual documents: ALWAYS use docItem:: format (include filename) + +Return JSON: +{ + "subject": "subject line", + "body": "email body (HTML allowed)", + "attachments": ["docItem::"] +} diff --git a/prompts/20260322-180328-317-email_composition_response.txt b/prompts/20260322-180328-317-email_composition_response.txt new file mode 100644 index 00000000..da0805aa --- /dev/null +++ b/prompts/20260322-180328-317-email_composition_response.txt @@ -0,0 +1,7 @@ +```json +{ + "subject": "Wichtige Informationen für unsere zukünftige Zusammenarbeit", + "body": "Sehr geehrte Damen und Herren,

ich hoffe, diese Nachricht trifft Sie wohl. Ich möchte Ihnen heute ein wichtiges Thema vorstellen, das für unsere zukünftige Zusammenarbeit von großer Bedeutung ist.

Vielen Dank für Ihre Nachricht und Ihr Interesse an unseren Dienstleistungen. Wir schätzen Ihre Anfrage sehr und möchten Ihnen die bestmögliche Unterstützung bieten. Im Folgenden finden Sie eine Übersicht über die wichtigsten Informationen und nächsten Schritte, die wir gemeinsam unternehmen können, um Ihre Anforderungen zu erfüllen.

Bitte zögern Sie nicht, uns bei Fragen oder für weitere Informationen zu kontaktieren. Wir freuen uns auf Ihre Rückmeldung und eine erfolgreiche Zusammenarbeit.

Mit freundlichen Grüßen,

[Ihr Name]
[Ihre Position]
[Ihr Unternehmen]
[Ihre Kontaktdaten]", + "attachments": [] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180338-318-chapter_structure_generation_prompt.txt b/prompts/20260322-180338-318-chapter_structure_generation_prompt.txt new file mode 100644 index 00000000..49ba0ee5 --- /dev/null +++ b/prompts/20260322-180338-318-chapter_structure_generation_prompt.txt @@ -0,0 +1,119 @@ +# TASK: Plan Document Structure (Documents + Chapters) + +This is a STRUCTURE PLANNING task. You define which documents to create and which chapters each document will have. +Chapter CONTENT will be generated in a later step - here you only plan the STRUCTURE and assign content references. +Return EXACTLY ONE complete JSON object. Do not generate multiple JSON objects, alternatives, or variations. Do not use separators like "---" between JSON objects. + +## USER REQUEST (for context) +``` +entwirf eine email mit dem inhalt des files davor +``` + +## AVAILABLE CONTENT PARTS + +(No content parts available) + +## CONTENT ASSIGNMENT RULE + +CRITICAL: Every chapter MUST have contentParts assigned if it relates to documents/images/data from the user request. +If the user request mentions documents/images/data, then EVERY chapter that generates content related to those references MUST assign the relevant ContentParts explicitly. + +Assignment logic: +- If chapter DISPLAYS a document/image → assign "object" format ContentPart with "caption" +- If chapter generates text content ABOUT a document/image/data → assign ContentPart with "instruction": + - Prefer "extracted" format if available (contains analyzed/extracted content) + - If only "object" format is available, use "object" format with "instruction" (to write ABOUT the image/document) +- If chapter's generationHint or purpose relates to a document/image/data mentioned in user request → it MUST have ContentParts assigned +- Multiple chapters might assign the same ContentPart (e.g., one chapter displays image, another writes about it) +- Use ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above +- Empty contentParts are only allowed if chapter generates content WITHOUT referencing any documents/images/data from the user request + +CRITICAL RULE: If the user request mentions BOTH: + a) Documents/images/data (listed in AVAILABLE CONTENT PARTS above), AND + b) Generic content types (article text, main content, body text, etc.) +Then chapters that generate those generic content types MUST assign the relevant ContentParts, because the content should relate to or be based on the provided documents/images/data. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential information only +- AVOID verbose, lengthy, or repetitive text - be concise and direct +- Prioritize FACTS over filler text - no introductions like "In this chapter..." +- Minimize system resources: shorter content = faster processing +- Quality over quantity: precise, meaningful content rather than padding + +## CHAPTER STRUCTURE REQUIREMENTS +- Generate chapters based on USER REQUEST - analyze what structure the user wants +- Create ONLY the minimum chapters needed to cover the user's request - avoid over-structuring +- HARD LIMIT: Maximum 7 chapters per document. If the topic can be covered in fewer, prefer fewer. Combine related topics into single chapters rather than creating many small ones. +- IMPORTANT: Each chapter MUST have ALL these fields: + - id: Unique identifier (e.g., "chapter_1") + - level: Heading level (1, 2, 3, etc.) + - title: Chapter title + - contentParts: Object mapping ContentPart IDs to usage instructions (MUST assign if chapter relates to documents/data from user request) + - generationHint: Description of what content to generate (including formatting/styling requirements) + - sections: Empty array [] (REQUIRED - sections are generated in next phase) +- contentParts: {"partId": {"instruction": "..."} or {"caption": "..."} or both} - Assign ContentParts as required by CONTENT ASSIGNMENT RULE above +- The "instruction" field for each ContentPart MUST contain ALL relevant details from the USER REQUEST that apply to content extraction for this specific chapter. Include all formatting rules, data requirements, constraints, and specifications mentioned in the user request that are relevant for processing this ContentPart in this chapter. +- generationHint: Keep CONCISE but include relevant details from the USER REQUEST. Focus on WHAT to generate, not HOW to phrase it verbosely. +- The number of chapters depends on the user request - create only what is requested. Do NOT create chapters for topics without available data. + +CRITICAL: Only create chapters for CONTENT sections, not for formatting/styling requirements. Formatting/styling requirements to be included in each generationHint if needed. + +## DOCUMENT STRUCTURE + +For each document, determine: +- outputFormat: From USER REQUEST (explicit mention or infer from purpose/content type). Default: "txt". Multiple documents can have different formats. +- language: From USER REQUEST (map to ISO 639-1: de, en, fr, it...). Default: "de". Multiple documents can have different languages. +- chapters: Structure appropriately for the format (e.g., pptx=slides, docx=sections, xlsx=worksheets). Match format capabilities and constraints. + +Required JSON fields: +- metadata: {"title": "...", "language": "..."} +- documents: Array with id, title, filename, outputFormat, language, chapters[] +- chapters: Array with id, level, title, contentParts, generationHint, sections[] + +EXAMPLE STRUCTURE (for reference only - adapt to user request): +{ + "metadata": { + "title": "Document Title", + "language": "de" + }, + "documents": [{ + "id": "doc_1", + "title": "Document Title", + "filename": "document.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Chapter Title", + "contentParts": { + "extracted_part_id": { + "instruction": "Use extracted content with ALL relevant details from user request" + } + }, + "generationHint": "Detailed description including ALL relevant details from user request for this chapter", + "sections": [] + } + ] + }] +} + +CRITICAL INSTRUCTIONS: +- Generate chapters based on USER REQUEST, NOT based on the example above +- The example shows the JSON structure format, NOT the required chapters +- Create only the chapters that match the user's request +- Adapt chapter titles and structure to match the user's specific request +- Determine outputFormat and language for each document by analyzing the USER REQUEST above +- The example shows placeholders "txt" and "de" - YOU MUST REPLACE THESE with actual values determined from the USER REQUEST + +MANDATORY CONTENT ASSIGNMENT CHECK: +For each chapter, verify: +1. Does the user request mention documents/images/data? (e.g., "photo", "image", "document", "data", "based on", "about") +2. Does this chapter's generationHint, title, or purpose relate to those documents/images/data mentioned in step 1? + - Examples: "article about the photo", "text describing the image", "analysis of the document", "content based on the data" + - Even if chapter doesn't explicitly say "about the image", if user request mentions both the image AND this chapter's content type → relate them +3. If YES to both → chapter MUST have contentParts assigned (cannot be empty {}) +4. If ContentPart is "object" format and chapter needs to write ABOUT it → assign with "instruction" field, not just "caption" + +OUTPUT FORMAT: Start with { and end with }. Do NOT use markdown code fences (```json). Do NOT add explanatory text before or after the JSON. Return ONLY the JSON object itself. diff --git a/prompts/20260322-180342-319-chapter_structure_generation_response.txt b/prompts/20260322-180342-319-chapter_structure_generation_response.txt new file mode 100644 index 00000000..30834524 --- /dev/null +++ b/prompts/20260322-180342-319-chapter_structure_generation_response.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Erstellen Sie eine kurze Einleitung für die E-Mail, die den Zweck der Nachricht beschreibt.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Formulieren Sie den Hauptinhalt der E-Mail basierend auf den Informationen, die im vorherigen Dokument enthalten sind.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Abschluss", + "contentParts": {}, + "generationHint": "Schreiben Sie einen abschließenden Absatz, der die E-Mail höflich beendet.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180342-320-chapter_structure_generation_final_result.txt b/prompts/20260322-180342-320-chapter_structure_generation_final_result.txt new file mode 100644 index 00000000..30834524 --- /dev/null +++ b/prompts/20260322-180342-320-chapter_structure_generation_final_result.txt @@ -0,0 +1,41 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "chapters": [ + { + "id": "chapter_1", + "level": 1, + "title": "Einleitung", + "contentParts": {}, + "generationHint": "Erstellen Sie eine kurze Einleitung für die E-Mail, die den Zweck der Nachricht beschreibt.", + "sections": [] + }, + { + "id": "chapter_2", + "level": 1, + "title": "Hauptinhalt", + "contentParts": {}, + "generationHint": "Formulieren Sie den Hauptinhalt der E-Mail basierend auf den Informationen, die im vorherigen Dokument enthalten sind.", + "sections": [] + }, + { + "id": "chapter_3", + "level": 1, + "title": "Abschluss", + "contentParts": {}, + "generationHint": "Schreiben Sie einen abschließenden Absatz, der die E-Mail höflich beendet.", + "sections": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180342-321-chapter_structure_chapter_1_prompt.txt b/prompts/20260322-180342-321-chapter_structure_chapter_1_prompt.txt new file mode 100644 index 00000000..0ff6db59 --- /dev/null +++ b/prompts/20260322-180342-321-chapter_structure_chapter_1_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Einleitung (Level 1, ID: chapter_1) +GENERATION HINT: Erstellen Sie eine kurze Einleitung für die E-Mail, die den Zweck der Nachricht beschreibt. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-180342-322-chapter_structure_chapter_2_prompt.txt b/prompts/20260322-180342-322-chapter_structure_chapter_2_prompt.txt new file mode 100644 index 00000000..da0c92f3 --- /dev/null +++ b/prompts/20260322-180342-322-chapter_structure_chapter_2_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Hauptinhalt (Level 1, ID: chapter_2) +GENERATION HINT: Formulieren Sie den Hauptinhalt der E-Mail basierend auf den Informationen, die im vorherigen Dokument enthalten sind. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-180342-323-chapter_structure_chapter_3_prompt.txt b/prompts/20260322-180342-323-chapter_structure_chapter_3_prompt.txt new file mode 100644 index 00000000..ef36813c --- /dev/null +++ b/prompts/20260322-180342-323-chapter_structure_chapter_3_prompt.txt @@ -0,0 +1,73 @@ +TASK: Generate Chapter Sections Structure + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +CHAPTER: Abschluss (Level 1, ID: chapter_3) +GENERATION HINT: Schreiben Sie einen abschließenden Absatz, der die E-Mail höflich beendet. + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT sections: Focus on essential information only +- AVOID creating too many sections - combine related content where possible +- Each section should serve a clear purpose with meaningful data +- If no relevant data exists for a topic, do NOT create a section for it +- Prefer ONE comprehensive section over multiple sparse sections +- HARD LIMIT: Maximum 5 sections per chapter. Combine related subtopics into single sections to stay within this limit. + +**CRITICAL**: The chapter's generationHint above describes what content this chapter should generate. If the generationHint references documents/images/data, then EACH section that generates content for this chapter MUST assign the relevant ContentParts from AVAILABLE CONTENT PARTS below. + +NOTE: Chapter already has a heading section. Do NOT generate a heading for the chapter title. + +## SECTION INDEPENDENCE +- Each section is independent and self-contained +- One section does NOT have information about another section +- Each section must provide its own context and be understandable alone + +AVAILABLE CONTENT PARTS: + +(No content parts specified for this chapter) + +## CONTENT ASSIGNMENT RULE - CRITICAL +If AVAILABLE CONTENT PARTS are listed above, then EVERY section that generates content related to those ContentParts MUST assign them explicitly. + +**Assignment logic:** +- If section generates text content ABOUT a ContentPart → assign "extracted" format ContentPart with appropriate instruction +- If section DISPLAYS a ContentPart → assign "object" format ContentPart +- If section's generationHint or purpose relates to a ContentPart listed above → it MUST have contentPartIds assigned +- If chapter's generationHint references documents/images/data AND section generates content for that chapter → section MUST assign relevant ContentParts +- Empty contentPartIds [] are only allowed if section generates content WITHOUT referencing any available ContentParts AND WITHOUT relating to chapter's generationHint + +## ACCEPTED CONTENT TYPES FOR THIS FORMAT +The document output format (txt) accepts only the following content types: +table, bullet_list, heading, paragraph, code_block + +**CRITICAL**: Only create sections with content types from this list. Other types will fail. + +useAiCall RULE (simple): +- useAiCall: true → Content needs AI processing (extract, transform, generate, filter, summarize) +- useAiCall: false → Content can be inserted directly without changes (Format is "object" or "reference") + +RETURN JSON: +{ + "sections": [ + { + "id": "section_1", + "content_type": "table", + "contentPartIds": ["extracted_part_id"], + "generationHint": "Description of what to extract or generate", + "useAiCall": true, + "elements": [] + } + ] +} + +**MANDATORY CONTENT ASSIGNMENT CHECK:** +For each section, verify: +1. Are ContentParts listed in AVAILABLE CONTENT PARTS above? +2. Does this section's generationHint or purpose relate to those ContentParts? +3. If YES to both → section MUST have contentPartIds assigned (cannot be empty []) +4. Assign ContentPart IDs exactly as listed in AVAILABLE CONTENT PARTS above + +IMAGE SECTIONS: +- For image sections, always provide a "caption" field with a descriptive caption for the image. + +Return only valid JSON. Do not include any explanatory text outside the JSON. diff --git a/prompts/20260322-180343-324-chapter_structure_chapter_1_response.txt b/prompts/20260322-180343-324-chapter_structure_chapter_1_response.txt new file mode 100644 index 00000000..e3f5e494 --- /dev/null +++ b/prompts/20260322-180343-324-chapter_structure_chapter_1_response.txt @@ -0,0 +1,16 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Erstellen Sie eine kurze Einleitung für die E-Mail, die den Zweck der Nachricht beschreibt.", + "useAiCall": true, + "elements": [ + "Diese E-Mail dient dazu, den Empfänger über die neuesten Entwicklungen und wichtigen Informationen zu informieren. Unser Ziel ist es, Ihnen einen klaren Überblick über die aktuellen Themen zu geben und sicherzustellen, dass Sie alle notwendigen Details erhalten, um fundierte Entscheidungen treffen zu können." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180344-325-chapter_structure_chapter_3_response.txt b/prompts/20260322-180344-325-chapter_structure_chapter_3_response.txt new file mode 100644 index 00000000..c259f6a2 --- /dev/null +++ b/prompts/20260322-180344-325-chapter_structure_chapter_3_response.txt @@ -0,0 +1,16 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Schreiben Sie einen abschließenden Absatz, der die E-Mail höflich beendet.", + "useAiCall": true, + "elements": [ + "Ich danke Ihnen herzlich für Ihre Aufmerksamkeit und hoffe, dass diese Informationen hilfreich für Sie waren. Sollten Sie weitere Fragen haben oder zusätzliche Informationen benötigen, zögern Sie bitte nicht, mich zu kontaktieren. Ich freue mich darauf, von Ihnen zu hören und wünsche Ihnen einen angenehmen Tag." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180346-326-chapter_structure_chapter_2_response.txt b/prompts/20260322-180346-326-chapter_structure_chapter_2_response.txt new file mode 100644 index 00000000..8fadfa16 --- /dev/null +++ b/prompts/20260322-180346-326-chapter_structure_chapter_2_response.txt @@ -0,0 +1,49 @@ +```json +{ + "sections": [ + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung und Überblick über den Hauptinhalt der E-Mail", + "useAiCall": true, + "elements": [ + "In diesem Kapitel wird der Hauptinhalt der E-Mail behandelt, der auf den Informationen des vorherigen Dokuments basiert. Der Fokus liegt darauf, die wesentlichen Punkte klar und prägnant darzustellen." + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Liste der wichtigsten Themen oder Punkte, die in der E-Mail behandelt werden", + "useAiCall": true, + "elements": [ + "Ziel der E-Mail", + "Wichtige Informationen oder Updates", + "Erforderliche Aktionen oder Antworten", + "Relevante Fristen oder Termine" + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Beschreibung eines spezifischen Themas oder Punktes", + "useAiCall": true, + "elements": [ + "Ein spezifisches Thema, das in der E-Mail behandelt wird, ist die Aktualisierung der Projektzeitpläne. Es ist wichtig, dass alle Beteiligten die neuen Fristen einhalten, um den reibungslosen Ablauf des Projekts zu gewährleisten." + ] + }, + { + "id": "section_4", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung und Schlussfolgerung des Hauptinhalts", + "useAiCall": true, + "elements": [ + "Zusammenfassend enthält die E-Mail alle notwendigen Informationen, um die Empfänger über die aktuellen Entwicklungen zu informieren und sicherzustellen, dass alle erforderlichen Maßnahmen ergriffen werden. Bitte überprüfen Sie die Details sorgfältig und antworten Sie bei Bedarf zeitnah." + ] + } + ] +} +``` \ No newline at end of file diff --git a/prompts/20260322-180346-327-chapter_1_section_section_1_prompt.txt b/prompts/20260322-180346-327-chapter_1_section_section_1_prompt.txt new file mode 100644 index 00000000..84e54aec --- /dev/null +++ b/prompts/20260322-180346-327-chapter_1_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Erstellen Sie eine kurze Einleitung für die E-Mail, die den Zweck der Nachricht beschreibt. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-180346-328-chapter_2_section_section_1_prompt.txt b/prompts/20260322-180346-328-chapter_2_section_section_1_prompt.txt new file mode 100644 index 00000000..6cef5371 --- /dev/null +++ b/prompts/20260322-180346-328-chapter_2_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Einleitung und Überblick über den Hauptinhalt der E-Mail +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-180347-329-chapter_2_section_section_2_prompt.txt b/prompts/20260322-180347-329-chapter_2_section_section_2_prompt.txt new file mode 100644 index 00000000..a984e32b --- /dev/null +++ b/prompts/20260322-180347-329-chapter_2_section_section_2_prompt.txt @@ -0,0 +1,59 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_2 +- Content Type: bullet_list +- Generation Hint: Liste der wichtigsten Themen oder Punkte, die in der E-Mail behandelt werden +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (bullet_list). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "bullet_list", + "content": {{"items": ["Item 1", "Item 2", "Item 3"]}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): + +Following sections: +- section_2 (bullet_list): +- section_3 (paragraph): + diff --git a/prompts/20260322-180347-330-chapter_2_section_section_3_prompt.txt b/prompts/20260322-180347-330-chapter_2_section_section_3_prompt.txt new file mode 100644 index 00000000..d8179e33 --- /dev/null +++ b/prompts/20260322-180347-330-chapter_2_section_section_3_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_3 +- Content Type: paragraph +- Generation Hint: Detaillierte Beschreibung eines spezifischen Themas oder Punktes +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_1 (paragraph): + +Following sections: +- section_3 (paragraph): +- section_4 (paragraph): + diff --git a/prompts/20260322-180347-331-chapter_2_section_section_4_prompt.txt b/prompts/20260322-180347-331-chapter_2_section_section_4_prompt.txt new file mode 100644 index 00000000..4905c185 --- /dev/null +++ b/prompts/20260322-180347-331-chapter_2_section_section_4_prompt.txt @@ -0,0 +1,60 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_4 +- Content Type: paragraph +- Generation Hint: Zusammenfassung und Schlussfolgerung des Hauptinhalts +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Previous sections: +- section_1 (paragraph): +- section_2 (bullet_list): + +Following sections: +- section_4 (paragraph): +- section_1 (paragraph): + diff --git a/prompts/20260322-180348-332-chapter_2_section_section_1_response.txt b/prompts/20260322-180348-332-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..b2b8d46b --- /dev/null +++ b/prompts/20260322-180348-332-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In dieser E-Mail möchten wir Ihnen einen Überblick über die wichtigsten Informationen und Themen geben, die im vorherigen Dokument behandelt wurden. Unser Ziel ist es, Ihnen einen klaren und prägnanten Einblick in die wesentlichen Punkte zu bieten, um Ihnen bei der Entscheidungsfindung oder weiteren Planung zu helfen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180348-333-chapter_2_section_section_1_response.txt b/prompts/20260322-180348-333-chapter_2_section_section_1_response.txt new file mode 100644 index 00000000..b2b8d46b --- /dev/null +++ b/prompts/20260322-180348-333-chapter_2_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In dieser E-Mail möchten wir Ihnen einen Überblick über die wichtigsten Informationen und Themen geben, die im vorherigen Dokument behandelt wurden. Unser Ziel ist es, Ihnen einen klaren und prägnanten Einblick in die wesentlichen Punkte zu bieten, um Ihnen bei der Entscheidungsfindung oder weiteren Planung zu helfen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180348-334-chapter_3_section_section_1_prompt.txt b/prompts/20260322-180348-334-chapter_3_section_section_1_prompt.txt new file mode 100644 index 00000000..65445e4e --- /dev/null +++ b/prompts/20260322-180348-334-chapter_3_section_section_1_prompt.txt @@ -0,0 +1,56 @@ +# TASK: Generate Section Content + +LANGUAGE: Generate all content in DE language. All text, titles, headings, paragraphs, and content must be written in DE. + +## SECTION METADATA +- Section ID: section_1 +- Content Type: paragraph +- Generation Hint: Schreiben Sie einen abschließenden Absatz, der die E-Mail höflich beendet. +- Target Output Format: TXT (accepted content types: table, bullet_list, heading, paragraph, code_block) + +## CONTENT EFFICIENCY PRINCIPLES +- Generate COMPACT content: Focus on essential facts only +- AVOID verbose text, filler phrases, or redundant explanations +- Be CONCISE and direct - every word should add value +- NO introductory phrases like "This section describes..." or "Here we present..." +- Minimize output size for efficient processing + +## INSTRUCTIONS +1. Generate content based on the Generation Hint above. +2. Create appropriate content that matches the content_type (paragraph). +3. The content should be relevant to the USER REQUEST and fit the context of surrounding sections. +4. Return only valid JSON with "elements" array. +5. No HTML/styling: Plain text only, no markup. +6. Keep content CONCISE - focus on substance, not length. + +## OUTPUT FORMAT +Return a JSON object with this structure: + +{ + "elements": [ + { + "type": "paragraph", + "content": {{"text": "This is paragraph text."}} + } + ] +} + +Output requirements: +- "content" must be an object (never a string) +- Return only valid JSON - no text before, no text after, no comments, no explanations, no markdown code fences +- Start with { and end with } - return ONLY the JSON object itself +- Generate meaningful content based on the Generation Hint + +## USER REQUEST +``` +entwirf eine email mit dem inhalt des files davor +``` + +## CONTEXT + +## DOCUMENT CONTEXT + +Following sections: +- section_1 (paragraph): +- section_2 (bullet_list): + diff --git a/prompts/20260322-180348-335-chapter_2_section_section_2_response.txt b/prompts/20260322-180348-335-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..92f0e228 --- /dev/null +++ b/prompts/20260322-180348-335-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Wichtige Termine und Fristen", + "Zusammenfassung der letzten Besprechung", + "Anstehende Aufgaben und Verantwortlichkeiten", + "Aktuelle Projektfortschritte", + "Offene Fragen und Klärungsbedarf" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180348-336-chapter_2_section_section_2_response.txt b/prompts/20260322-180348-336-chapter_2_section_section_2_response.txt new file mode 100644 index 00000000..92f0e228 --- /dev/null +++ b/prompts/20260322-180348-336-chapter_2_section_section_2_response.txt @@ -0,0 +1,16 @@ +{ + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Wichtige Termine und Fristen", + "Zusammenfassung der letzten Besprechung", + "Anstehende Aufgaben und Verantwortlichkeiten", + "Aktuelle Projektfortschritte", + "Offene Fragen und Klärungsbedarf" + ] + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180349-337-chapter_1_section_section_1_response.txt b/prompts/20260322-180349-337-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..d7d98b9e --- /dev/null +++ b/prompts/20260322-180349-337-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, Sie über die neuesten Entwicklungen und wichtigen Informationen zu informieren, die für Sie von Interesse sein könnten. Bitte lesen Sie die folgenden Details aufmerksam durch, um auf dem neuesten Stand zu bleiben." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180349-338-chapter_1_section_section_1_response.txt b/prompts/20260322-180349-338-chapter_1_section_section_1_response.txt new file mode 100644 index 00000000..d7d98b9e --- /dev/null +++ b/prompts/20260322-180349-338-chapter_1_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, Sie über die neuesten Entwicklungen und wichtigen Informationen zu informieren, die für Sie von Interesse sein könnten. Bitte lesen Sie die folgenden Details aufmerksam durch, um auf dem neuesten Stand zu bleiben." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180349-339-chapter_2_section_section_4_response.txt b/prompts/20260322-180349-339-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..b5ea7edb --- /dev/null +++ b/prompts/20260322-180349-339-chapter_2_section_section_4_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass der Hauptinhalt die wesentlichen Punkte und Schlussfolgerungen der vorherigen Abschnitte prägnant zusammenfasst. Die Kernaussagen wurden klar dargestellt, um die Effizienz der Kommunikation zu gewährleisten. Die wichtigsten Erkenntnisse wurden hervorgehoben, um eine klare und prägnante Botschaft zu vermitteln, die den Leser informiert und zum Nachdenken anregt. Diese Zusammenfassung dient als abschließender Überblick über die behandelten Themen und bietet eine solide Grundlage für weitere Diskussionen oder Entscheidungen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180349-340-chapter_2_section_section_4_response.txt b/prompts/20260322-180349-340-chapter_2_section_section_4_response.txt new file mode 100644 index 00000000..b5ea7edb --- /dev/null +++ b/prompts/20260322-180349-340-chapter_2_section_section_4_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass der Hauptinhalt die wesentlichen Punkte und Schlussfolgerungen der vorherigen Abschnitte prägnant zusammenfasst. Die Kernaussagen wurden klar dargestellt, um die Effizienz der Kommunikation zu gewährleisten. Die wichtigsten Erkenntnisse wurden hervorgehoben, um eine klare und prägnante Botschaft zu vermitteln, die den Leser informiert und zum Nachdenken anregt. Diese Zusammenfassung dient als abschließender Überblick über die behandelten Themen und bietet eine solide Grundlage für weitere Diskussionen oder Entscheidungen." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180349-341-chapter_2_section_section_3_response.txt b/prompts/20260322-180349-341-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..2d6a61f7 --- /dev/null +++ b/prompts/20260322-180349-341-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Eine E-Mail sollte klar und präzise sein, um die beabsichtigte Botschaft effektiv zu übermitteln. Beginnen Sie mit einer höflichen Anrede, gefolgt von einer kurzen Einführung, die den Zweck der E-Mail erklärt. Der Hauptteil sollte detaillierte Informationen oder Anfragen enthalten, die für den Empfänger relevant sind. Abschließend sollte eine freundliche Schlussformel stehen, die Dankbarkeit ausdrückt oder weitere Schritte vorschlägt. Achten Sie darauf, die E-Mail in einem professionellen Ton zu verfassen und Rechtschreibfehler zu vermeiden." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180349-342-chapter_2_section_section_3_response.txt b/prompts/20260322-180349-342-chapter_2_section_section_3_response.txt new file mode 100644 index 00000000..2d6a61f7 --- /dev/null +++ b/prompts/20260322-180349-342-chapter_2_section_section_3_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Eine E-Mail sollte klar und präzise sein, um die beabsichtigte Botschaft effektiv zu übermitteln. Beginnen Sie mit einer höflichen Anrede, gefolgt von einer kurzen Einführung, die den Zweck der E-Mail erklärt. Der Hauptteil sollte detaillierte Informationen oder Anfragen enthalten, die für den Empfänger relevant sind. Abschließend sollte eine freundliche Schlussformel stehen, die Dankbarkeit ausdrückt oder weitere Schritte vorschlägt. Achten Sie darauf, die E-Mail in einem professionellen Ton zu verfassen und Rechtschreibfehler zu vermeiden." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180350-343-chapter_3_section_section_1_response.txt b/prompts/20260322-180350-343-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..99a31cff --- /dev/null +++ b/prompts/20260322-180350-343-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Aufmerksamkeit und Unterstützung. Sollten Sie weitere Fragen haben oder zusätzliche Informationen benötigen, zögern Sie bitte nicht, mich zu kontaktieren. Ich freue mich auf Ihre Rückmeldung und wünsche Ihnen einen angenehmen Tag." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180350-344-chapter_3_section_section_1_response.txt b/prompts/20260322-180350-344-chapter_3_section_section_1_response.txt new file mode 100644 index 00000000..99a31cff --- /dev/null +++ b/prompts/20260322-180350-344-chapter_3_section_section_1_response.txt @@ -0,0 +1,10 @@ +{ + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Aufmerksamkeit und Unterstützung. Sollten Sie weitere Fragen haben oder zusätzliche Informationen benötigen, zögern Sie bitte nicht, mich zu kontaktieren. Ich freue mich auf Ihre Rückmeldung und wünsche Ihnen einen angenehmen Tag." + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180350-345-document_generation_response.txt b/prompts/20260322-180350-345-document_generation_response.txt new file mode 100644 index 00000000..b826c78d --- /dev/null +++ b/prompts/20260322-180350-345-document_generation_response.txt @@ -0,0 +1,155 @@ +{ + "metadata": { + "title": "Email Entwurf", + "language": "de" + }, + "documents": [ + { + "id": "doc_1", + "title": "Email Entwurf", + "filename": "email_entwurf.txt", + "outputFormat": "txt", + "language": "de", + "sections": [ + { + "id": "chapter_1_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Einleitung", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Erstellen Sie eine kurze Einleitung für die E-Mail, die den Zweck der Nachricht beschreibt.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Diese E-Mail dient dazu, Sie über die neuesten Entwicklungen und wichtigen Informationen zu informieren, die für Sie von Interesse sein könnten. Bitte lesen Sie die folgenden Details aufmerksam durch, um auf dem neuesten Stand zu bleiben." + } + } + ] + }, + { + "id": "chapter_2_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Hauptinhalt", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Einleitung und Überblick über den Hauptinhalt der E-Mail", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "In dieser E-Mail möchten wir Ihnen einen Überblick über die wichtigsten Informationen und Themen geben, die im vorherigen Dokument behandelt wurden. Unser Ziel ist es, Ihnen einen klaren und prägnanten Einblick in die wesentlichen Punkte zu bieten, um Ihnen bei der Entscheidungsfindung oder weiteren Planung zu helfen." + } + } + ] + }, + { + "id": "section_2", + "content_type": "bullet_list", + "contentPartIds": [], + "generationHint": "Liste der wichtigsten Themen oder Punkte, die in der E-Mail behandelt werden", + "useAiCall": true, + "elements": [ + { + "type": "bullet_list", + "content": { + "items": [ + "Wichtige Termine und Fristen", + "Zusammenfassung der letzten Besprechung", + "Anstehende Aufgaben und Verantwortlichkeiten", + "Aktuelle Projektfortschritte", + "Offene Fragen und Klärungsbedarf" + ] + } + } + ] + }, + { + "id": "section_3", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Detaillierte Beschreibung eines spezifischen Themas oder Punktes", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Eine E-Mail sollte klar und präzise sein, um die beabsichtigte Botschaft effektiv zu übermitteln. Beginnen Sie mit einer höflichen Anrede, gefolgt von einer kurzen Einführung, die den Zweck der E-Mail erklärt. Der Hauptteil sollte detaillierte Informationen oder Anfragen enthalten, die für den Empfänger relevant sind. Abschließend sollte eine freundliche Schlussformel stehen, die Dankbarkeit ausdrückt oder weitere Schritte vorschlägt. Achten Sie darauf, die E-Mail in einem professionellen Ton zu verfassen und Rechtschreibfehler zu vermeiden." + } + } + ] + }, + { + "id": "section_4", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Zusammenfassung und Schlussfolgerung des Hauptinhalts", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Zusammenfassend lässt sich sagen, dass der Hauptinhalt die wesentlichen Punkte und Schlussfolgerungen der vorherigen Abschnitte prägnant zusammenfasst. Die Kernaussagen wurden klar dargestellt, um die Effizienz der Kommunikation zu gewährleisten. Die wichtigsten Erkenntnisse wurden hervorgehoben, um eine klare und prägnante Botschaft zu vermitteln, die den Leser informiert und zum Nachdenken anregt. Diese Zusammenfassung dient als abschließender Überblick über die behandelten Themen und bietet eine solide Grundlage für weitere Diskussionen oder Entscheidungen." + } + } + ] + }, + { + "id": "chapter_3_heading", + "content_type": "heading", + "elements": [ + { + "type": "heading", + "content": { + "text": "Abschluss", + "level": 1 + } + } + ] + }, + { + "id": "section_1", + "content_type": "paragraph", + "contentPartIds": [], + "generationHint": "Schreiben Sie einen abschließenden Absatz, der die E-Mail höflich beendet.", + "useAiCall": true, + "elements": [ + { + "type": "paragraph", + "content": { + "text": "Vielen Dank für Ihre Aufmerksamkeit und Unterstützung. Sollten Sie weitere Fragen haben oder zusätzliche Informationen benötigen, zögern Sie bitte nicht, mich zu kontaktieren. Ich freue mich auf Ihre Rückmeldung und wünsche Ihnen einen angenehmen Tag." + } + } + ] + } + ], + "metadata": { + "outputStyle": "document" + } + } + ] +} \ No newline at end of file diff --git a/prompts/20260322-180350-346-email_composition_prompt.txt b/prompts/20260322-180350-346-email_composition_prompt.txt new file mode 100644 index 00000000..9fbf808c --- /dev/null +++ b/prompts/20260322-180350-346-email_composition_prompt.txt @@ -0,0 +1,22 @@ +Compose an email based on this context: +------- +Email Entwurf\n=============\n\nEinleitung\n==========\n\nDiese E-Mail dient dazu, Sie über die neuesten Entwicklungen und wichtigen Informationen zu informieren, die für Sie von Interesse sein könnten. Bitte lesen Sie die folgenden Details aufmerksam durch, um auf dem neuesten Stand zu bleiben.\n\nHauptinhalt\n===========\n\nIn dieser E-Mail möchten wir Ihnen einen Überblick über die wichtigsten Informationen und Themen geben, die im vorherigen Dokument behandelt wurden. Unser Ziel ist es, Ihnen einen klaren und prägnanten Einblick in die wesentlichen Punkte zu bieten, um Ihnen bei der Entscheidungsfindung oder weiteren Planung zu helfen.\n\n- Wichtige Termine und Fristen\n- Zusammenfassung der letzten Besprechung\n- Anstehende Aufgaben und Verantwortlichkeiten\n- Aktuelle Projektfortschritte\n- Offene Fragen und Klärungsbedarf\n\nEine E-Mail sollte klar und präzise sein, um die beabsichtigte Botschaft effektiv zu übermitteln. Beginnen Sie mit einer höflichen Anrede, gefolgt von einer kurzen Einführung, die den Zweck der E-Mail erklärt. Der Hauptteil sollte detaillierte Informationen oder Anfragen enthalten, die für den Empfänger relevant sind. Abschließend sollte eine freundliche Schlussformel stehen, die Dankbarkeit ausdrückt oder weitere Schritte vorschlägt. Achten Sie darauf, die E-Mail in einem professionellen Ton zu verfassen und Rechtschreibfehler zu vermeiden.\n\nZusammenfassend lässt sich sagen, dass der Hauptinhalt die wesentlichen Punkte und Schlussfolgerungen der vorherigen Abschnitte prägnant zusammenfasst. Die Kernaussagen wurden klar dargestellt, um die Effizienz der Kommunikation zu gewährleisten. Die wichtigsten Erkenntnisse wurden hervorgehoben, um eine klare und prägnante Botschaft zu vermitteln, die den Leser informiert und zum Nachdenken anregt. Diese Zusammenfassung dient als abschließender Überblick über die behandelten Themen und bietet eine solide Grundlage für weitere Diskussionen oder Entscheidungen.\n\nAbschluss\n=========\n\nVielen Dank für Ihre Aufmerksamkeit und Unterstützung. Sollten Sie weitere Fragen haben oder zusätzliche Informationen benötigen, zögern Sie bitte nicht, mich zu kontaktieren. Ich freue mich auf Ihre Rückmeldung und wünsche Ihnen einen angenehmen Tag.\n\n\nGenerated: 2026-03-22 18:03:50 UTC +------- + +Recipients: (not specified - this is a draft) +Style: business +Max length: 1000 characters + +Available_Document_References: + - (no documents) + +Based on the context, decide which documents to attach. + +CRITICAL: Use EXACT document references from Available_Document_References above. For individual documents: ALWAYS use docItem:: format (include filename) + +Return JSON: +{ + "subject": "subject line", + "body": "email body (HTML allowed)", + "attachments": ["docItem::"] +} diff --git a/prompts/20260322-180353-347-email_composition_response.txt b/prompts/20260322-180353-347-email_composition_response.txt new file mode 100644 index 00000000..fd6df685 --- /dev/null +++ b/prompts/20260322-180353-347-email_composition_response.txt @@ -0,0 +1,7 @@ +```json +{ + "subject": "Aktuelle Entwicklungen und wichtige Informationen", + "body": "

Sehr geehrte Damen und Herren,

Diese E-Mail dient dazu, Sie über die neuesten Entwicklungen und wichtigen Informationen zu informieren, die für Sie von Interesse sein könnten. Bitte lesen Sie die folgenden Details aufmerksam durch, um auf dem neuesten Stand zu bleiben.

In dieser E-Mail möchten wir Ihnen einen Überblick über die wichtigsten Informationen und Themen geben, die im vorherigen Dokument behandelt wurden. Unser Ziel ist es, Ihnen einen klaren und prägnanten Einblick in die wesentlichen Punkte zu bieten, um Ihnen bei der Entscheidungsfindung oder weiteren Planung zu helfen.

  • Wichtige Termine und Fristen
  • Zusammenfassung der letzten Besprechung
  • Anstehende Aufgaben und Verantwortlichkeiten
  • Aktuelle Projektfortschritte
  • Offene Fragen und Klärungsbedarf

Vielen Dank für Ihre Aufmerksamkeit und Unterstützung. Sollten Sie weitere Fragen haben oder zusätzliche Informationen benötigen, zögern Sie bitte nicht, mich zu kontaktieren. Ich freue mich auf Ihre Rückmeldung und wünsche Ihnen einen angenehmen Tag.

", + "attachments": [] +} +``` \ No newline at end of file diff --git a/prompts/20260322-182034-348-email_composition_prompt.txt b/prompts/20260322-182034-348-email_composition_prompt.txt new file mode 100644 index 00000000..1ad0eb2c --- /dev/null +++ b/prompts/20260322-182034-348-email_composition_prompt.txt @@ -0,0 +1,22 @@ +Compose an email based on this context: +------- +meeting_zusammenfassung_downloadfilebypath_r0t0a0.html +------- + +Recipients: (not specified - this is a draft) +Style: business +Max length: 1000 characters + +Available_Document_References: + - (no documents) + +Based on the context, decide which documents to attach. + +CRITICAL: Use EXACT document references from Available_Document_References above. For individual documents: ALWAYS use docItem:: format (include filename) + +Return JSON: +{ + "subject": "subject line", + "body": "email body (HTML allowed)", + "attachments": ["docItem::"] +} diff --git a/prompts/20260322-182036-349-email_composition_response.txt b/prompts/20260322-182036-349-email_composition_response.txt new file mode 100644 index 00000000..b738fca2 --- /dev/null +++ b/prompts/20260322-182036-349-email_composition_response.txt @@ -0,0 +1,7 @@ +```json +{ + "subject": "Meeting Summary and Follow-Up", + "body": "

Dear Team,

I hope this message finds you well. I am writing to provide a summary of our recent meeting. Please find the details below:

Meeting Summary:

  • Discussion on project timelines and deliverables.
  • Review of current progress and challenges.
  • Action items and responsibilities assigned to team members.

Unfortunately, there are no documents available for attachment at this time. If you have any questions or require further clarification, please do not hesitate to reach out.

Best regards,
Your Name

", + "attachments": [] +} +``` \ No newline at end of file