44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
# Copyright (c) 2025 Patrick Motsch
|
|
# All rights reserved.
|
|
|
|
import logging
|
|
from typing import Dict, Any
|
|
from modules.datamodels.datamodelChatbot import ActionResult
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
async def summarizeDocument(self, parameters: Dict[str, Any]) -> ActionResult:
|
|
documentList = parameters.get("documentList", [])
|
|
if not documentList:
|
|
return ActionResult.isFailure(error="documentList is required")
|
|
|
|
summaryLength = parameters.get("summaryLength", "medium")
|
|
focus = parameters.get("focus")
|
|
resultType = parameters.get("resultType", "txt")
|
|
|
|
lengthInstructions = {
|
|
"brief": "Create a brief summary (2-3 paragraphs)",
|
|
"medium": "Create a medium-length summary (comprehensive but concise)",
|
|
"detailed": "Create a detailed summary covering all major points"
|
|
}
|
|
lengthInstruction = lengthInstructions.get(summaryLength.lower(), lengthInstructions["medium"])
|
|
|
|
aiPrompt = f"Summarize the provided document(s). {lengthInstruction}."
|
|
if focus:
|
|
aiPrompt += f" Focus specifically on: {focus}."
|
|
aiPrompt += " Extract and present the key points, main ideas, and important information in a clear, well-structured format."
|
|
|
|
# Pass parentOperationId to maintain progress hierarchy
|
|
parentOperationId = parameters.get("parentOperationId")
|
|
|
|
processParams = {
|
|
"aiPrompt": aiPrompt,
|
|
"documentList": documentList,
|
|
"resultType": resultType,
|
|
"generationIntent": "document" # NEW: Explicit intent
|
|
}
|
|
if parentOperationId:
|
|
processParams["parentOperationId"] = parentOperationId
|
|
|
|
return await self.process(processParams)
|
|
|