41 lines
1.7 KiB
Python
41 lines
1.7 KiB
Python
import logging
|
|
from typing import Optional
|
|
|
|
from modules.datamodels.datamodelUam import User
|
|
from modules.datamodels.datamodelChat import ChatWorkflow, UserInputRequest, WorkflowModeEnum
|
|
from modules.workflows.workflowManager import WorkflowManager
|
|
from modules.services import getInterface as getServices
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
async def chatStart(currentUser: User, userInput: UserInputRequest, workflowMode: WorkflowModeEnum, workflowId: Optional[str] = None) -> ChatWorkflow:
|
|
"""
|
|
Starts a new chat or continues an existing one, then launches processing asynchronously.
|
|
|
|
Args:
|
|
currentUser: Current user
|
|
userInput: User input request
|
|
workflowId: Optional workflow ID to continue existing workflow
|
|
workflowMode: "Actionplan" for traditional task planning, "Dynamic" for iterative dynamic-style processing, "Template" for template-based processing
|
|
|
|
Example usage for Dynamic mode:
|
|
workflow = await chatStart(currentUser, userInput, workflowMode=WorkflowModeEnum.WORKFLOW_DYNAMIC)
|
|
"""
|
|
try:
|
|
services = getServices(currentUser, None)
|
|
workflowManager = WorkflowManager(services)
|
|
workflow = await workflowManager.workflowStart(userInput, workflowMode, workflowId)
|
|
return workflow
|
|
except Exception as e:
|
|
logger.error(f"Error starting chat: {str(e)}")
|
|
raise
|
|
|
|
async def chatStop(currentUser: User, workflowId: str) -> ChatWorkflow:
|
|
"""Stops a running chat."""
|
|
try:
|
|
services = getServices(currentUser, None)
|
|
workflowManager = WorkflowManager(services)
|
|
return await workflowManager.workflowStop(workflowId)
|
|
except Exception as e:
|
|
logger.error(f"Error stopping chat: {str(e)}")
|
|
raise
|