1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
   | from enum import Enum from dataclasses import dataclass from typing import Optional, List
  class TaskType(Enum):     """任务类型枚举"""     QUESTION_ANSWERING = "qa"     TASK_EXECUTION = "execution"     INFORMATION_RETRIEVAL = "retrieval"     CONVERSATION = "conversation"
  @dataclass class CognitionResult:     """认知结果数据类"""     task_type: TaskType     confidence: float     reasoning_steps: List[str]     next_actions: List[Dict[str, Any]]     context_updates: Dict[str, Any]
  class CognitionEngine:     """认知引擎"""          def __init__(self, model_config: Dict[str, Any]):         self.model_config = model_config         self.reasoning_chain = [             self._intent_recognition,             self._context_analysis,             self._action_planning,             self._confidence_evaluation         ]          async def process(self, perception_data: Dict[str, Any],                       context: Dict[str, Any]) -> CognitionResult:         """认知处理主流程"""                           processing_state = {             'input_data': perception_data,             'context': context,             'intermediate_results': {},             'confidence_scores': []         }                           for step in self.reasoning_chain:             processing_state = await step(processing_state)                           return CognitionResult(             task_type=processing_state['intermediate_results']['task_type'],             confidence=sum(processing_state['confidence_scores']) / len(processing_state['confidence_scores']),             reasoning_steps=processing_state['intermediate_results']['reasoning_steps'],             next_actions=processing_state['intermediate_results']['next_actions'],             context_updates=processing_state['intermediate_results']['context_updates']         )          async def _intent_recognition(self, state: Dict[str, Any]) -> Dict[str, Any]:         """意图识别"""         input_text = state['input_data'].get('processed_content', '')                           if any(word in input_text for word in ['什么', '如何', '为什么']):             task_type = TaskType.QUESTION_ANSWERING             confidence = 0.8         elif any(word in input_text for word in ['执行', '运行', '开始']):             task_type = TaskType.TASK_EXECUTION             confidence = 0.9         elif any(word in input_text for word in ['查找', '搜索', '获取']):             task_type = TaskType.INFORMATION_RETRIEVAL             confidence = 0.85         else:             task_type = TaskType.CONVERSATION             confidence = 0.6                  state['intermediate_results']['task_type'] = task_type         state['confidence_scores'].append(confidence)         state['intermediate_results']['reasoning_steps'] = [             f"识别任务类型: {task_type.value}"         ]                  return state          async def _context_analysis(self, state: Dict[str, Any]) -> Dict[str, Any]:         """上下文分析"""         context = state['context']         current_session = context.get('session_data', {})                           context_relevance = 0.5           if current_session.get('last_task_type') == state['intermediate_results']['task_type']:             context_relevance += 0.3                  state['confidence_scores'].append(context_relevance)         state['intermediate_results']['reasoning_steps'].append(             f"上下文分析完成,相关性: {context_relevance:.2f}"         )                  return state          async def _action_planning(self, state: Dict[str, Any]) -> Dict[str, Any]:         """行动规划"""         task_type = state['intermediate_results']['task_type']                           if task_type == TaskType.QUESTION_ANSWERING:             actions = [                 {'type': 'knowledge_retrieval', 'priority': 1},                 {'type': 'answer_generation', 'priority': 2}             ]         elif task_type == TaskType.TASK_EXECUTION:             actions = [                 {'type': 'task_validation', 'priority': 1},                 {'type': 'execution_planning', 'priority': 2},                 {'type': 'task_execution', 'priority': 3}             ]         else:             actions = [                 {'type': 'response_generation', 'priority': 1}             ]                  state['intermediate_results']['next_actions'] = actions         state['intermediate_results']['reasoning_steps'].append(             f"规划了 {len(actions)} 个行动步骤"         )                  return state          async def _confidence_evaluation(self, state: Dict[str, Any]) -> Dict[str, Any]:         """置信度评估"""                  overall_confidence = sum(state['confidence_scores']) / len(state['confidence_scores'])                           context_updates = {             'last_task_type': state['intermediate_results']['task_type'],             'last_confidence': overall_confidence,             'processing_timestamp': asyncio.get_event_loop().time()         }                  state['intermediate_results']['context_updates'] = context_updates         state['intermediate_results']['reasoning_steps'].append(             f"最终置信度评估: {overall_confidence:.2f}"         )                  return state
   |