gateway/modules/features/chatPlayground/mainChatPlayground.py
2025-09-23 00:36:24 +02:00

41 lines
1.7 KiB
Python

import logging
import asyncio
from typing import Optional
from modules.interfaces.interfaceAppModel import User
from modules.interfaces.interfaceChatModel import ChatWorkflow, UserInputRequest
from modules.shared.timezoneUtils import get_utc_timestamp
logger = logging.getLogger(__name__)
async def chatStart(interfaceChat, currentUser: User, userInput: UserInputRequest, workflowId: Optional[str] = None, workflowMode: str = "Actionplan") -> ChatWorkflow:
"""
Starts a new chat or continues an existing one, then launches processing asynchronously.
Args:
interfaceChat: Chat interface instance
currentUser: Current user
userInput: User input request
workflowId: Optional workflow ID to continue existing workflow
workflowMode: "Actionplan" for traditional task planning, "React" for iterative react-style processing
Example usage for React mode:
workflow = await chatStart(interfaceChat, currentUser, userInput, workflowMode="React")
"""
try:
from modules.workflows.workflowManager import WorkflowManager
workflowManager = WorkflowManager(interfaceChat, currentUser)
return await workflowManager.workflowStart(userInput, workflowId, workflowMode)
except Exception as e:
logger.error(f"Error starting chat: {str(e)}")
raise
async def chatStop(interfaceChat, currentUser: User, workflowId: str) -> ChatWorkflow:
"""Stops a running chat."""
try:
from modules.workflows.workflowManager import WorkflowManager
workflowManager = WorkflowManager(interfaceChat, currentUser)
return await workflowManager.workflowStop(workflowId)
except Exception as e:
logger.error(f"Error stopping chat: {str(e)}")
raise