init
This commit is contained in:
@@ -1,45 +1,45 @@
|
||||
from typing import Dict, Any, Optional, List
|
||||
from enum import Enum
|
||||
from agents.conversation_agent import ConversationAgent
|
||||
from agents.tool_agent import ToolAgent
|
||||
from agent.conversation import ConversationAgent
|
||||
from agent.tool import ToolAgent
|
||||
|
||||
|
||||
class WorkflowType(Enum):
|
||||
"""Available workflow types"""
|
||||
"""可用的工作流类型"""
|
||||
CONVERSATION = "conversation"
|
||||
TOOL_USING = "tool_using"
|
||||
|
||||
|
||||
class WorkflowManager:
|
||||
"""Manages different workflow types and their execution"""
|
||||
"""管理不同工作流类型及其执行"""
|
||||
|
||||
def __init__(self):
|
||||
def __init__(self, default_model_section: Optional[str] = None):
|
||||
self.workflows = {
|
||||
WorkflowType.CONVERSATION: ConversationAgent(),
|
||||
WorkflowType.TOOL_USING: ToolAgent()
|
||||
WorkflowType.CONVERSATION: ConversationAgent(model_section=default_model_section),
|
||||
WorkflowType.TOOL_USING: ToolAgent(model_section=default_model_section)
|
||||
}
|
||||
self.active_sessions: Dict[str, Any] = {}
|
||||
|
||||
def get_workflow(self, workflow_type: WorkflowType):
|
||||
"""Get a workflow instance"""
|
||||
"""获取工作流实例"""
|
||||
return self.workflows.get(workflow_type)
|
||||
|
||||
def execute_workflow(self, workflow_type: WorkflowType, user_input: str,
|
||||
session_id: Optional[str] = None, **kwargs) -> Dict[str, Any]:
|
||||
"""Execute a specific workflow"""
|
||||
"""执行指定工作流"""
|
||||
workflow = self.get_workflow(workflow_type)
|
||||
|
||||
if not workflow:
|
||||
return {"error": f"Workflow {workflow_type.value} not found"}
|
||||
|
||||
# Generate session ID if not provided
|
||||
# 未提供会话 ID 时生成
|
||||
if not session_id:
|
||||
session_id = f"session_{len(self.active_sessions) + 1}"
|
||||
|
||||
# Execute the workflow
|
||||
# 执行工作流
|
||||
result = workflow.run(user_input, **kwargs)
|
||||
|
||||
# Store session data
|
||||
# 存储会话数据
|
||||
self.active_sessions[session_id] = {
|
||||
"workflow_type": workflow_type,
|
||||
"last_result": result,
|
||||
@@ -53,20 +53,20 @@ class WorkflowManager:
|
||||
}
|
||||
|
||||
def get_available_workflows(self) -> List[str]:
|
||||
"""Get list of available workflow types"""
|
||||
"""获取可用工作流列表"""
|
||||
return [workflow.value for workflow in WorkflowType]
|
||||
|
||||
def _get_timestamp(self) -> str:
|
||||
"""Get current timestamp"""
|
||||
"""获取当前时间戳"""
|
||||
from datetime import datetime
|
||||
return datetime.now().isoformat()
|
||||
|
||||
def get_session_info(self, session_id: str) -> Optional[Dict[str, Any]]:
|
||||
"""Get information about a session"""
|
||||
"""获取会话信息"""
|
||||
return self.active_sessions.get(session_id)
|
||||
|
||||
def cleanup_sessions(self, older_than_hours: int = 24):
|
||||
"""Clean up old sessions"""
|
||||
"""清理过期会话"""
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
cutoff_time = datetime.now() - timedelta(hours=older_than_hours)
|
||||
|
||||
Reference in New Issue
Block a user