fixes
This commit is contained in:
parent
4e15be8296
commit
d03b82a49f
3 changed files with 44 additions and 48 deletions
|
|
@ -136,36 +136,6 @@ class HandlingActions:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error creating action message: {str(e)}")
|
logger.error(f"Error creating action message: {str(e)}")
|
||||||
|
|
||||||
def parseActionResponse(self, response: str) -> list:
|
|
||||||
try:
|
|
||||||
json_start = response.find('{')
|
|
||||||
json_end = response.rfind('}') + 1
|
|
||||||
if json_start == -1 or json_end == 0:
|
|
||||||
raise ValueError("No JSON found in response")
|
|
||||||
json_str = response[json_start:json_end]
|
|
||||||
action_data = json.loads(json_str)
|
|
||||||
if 'actions' not in action_data:
|
|
||||||
raise ValueError("Action response missing 'actions' field")
|
|
||||||
return action_data['actions']
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"Error parsing action response: {str(e)}")
|
|
||||||
return []
|
|
||||||
|
|
||||||
def parseReviewResponse(self, response: str) -> dict:
|
|
||||||
try:
|
|
||||||
json_start = response.find('{')
|
|
||||||
json_end = response.rfind('}') + 1
|
|
||||||
if json_start == -1 or json_end == 0:
|
|
||||||
raise ValueError("No JSON found in response")
|
|
||||||
json_str = response[json_start:json_end]
|
|
||||||
review = json.loads(json_str)
|
|
||||||
if 'status' not in review:
|
|
||||||
raise ValueError("Review response missing 'status' field")
|
|
||||||
return review
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"Error parsing review response: {str(e)}")
|
|
||||||
return {'status': 'failed', 'reason': f'Parse error: {str(e)}'}
|
|
||||||
|
|
||||||
# Internal helper methods
|
# Internal helper methods
|
||||||
|
|
||||||
def _createGenericValidationPrompt(self, action_result, action, context) -> str:
|
def _createGenericValidationPrompt(self, action_result, action, context) -> str:
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,20 @@ class HandlingTasks:
|
||||||
prompt = await self.service.callAiTextAdvanced(
|
prompt = await self.service.callAiTextAdvanced(
|
||||||
createActionDefinitionPrompt(self, context)
|
createActionDefinitionPrompt(self, context)
|
||||||
)
|
)
|
||||||
actions = self.handlingActions.parseActionResponse(prompt)
|
# Inline parseActionResponse logic here
|
||||||
|
json_start = prompt.find('{')
|
||||||
|
json_end = prompt.rfind('}') + 1
|
||||||
|
if json_start == -1 or json_end == 0:
|
||||||
|
raise ValueError("No JSON found in response")
|
||||||
|
json_str = prompt[json_start:json_end]
|
||||||
|
try:
|
||||||
|
action_data = json.loads(json_str)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error parsing action response JSON: {str(e)}")
|
||||||
|
action_data = {}
|
||||||
|
if 'actions' not in action_data:
|
||||||
|
raise ValueError("Action response missing 'actions' field")
|
||||||
|
actions = action_data['actions']
|
||||||
if not self._validateActions(actions, context):
|
if not self._validateActions(actions, context):
|
||||||
logger.error("Generated actions failed validation")
|
logger.error("Generated actions failed validation")
|
||||||
raise Exception("AI-generated actions failed validation - AI is required for action generation")
|
raise Exception("AI-generated actions failed validation - AI is required for action generation")
|
||||||
|
|
@ -166,19 +179,31 @@ class HandlingTasks:
|
||||||
# Use promptFactory for review prompt
|
# Use promptFactory for review prompt
|
||||||
prompt = await createResultReviewPrompt(self, review_context)
|
prompt = await createResultReviewPrompt(self, review_context)
|
||||||
response = await self.service.callAiTextAdvanced(prompt)
|
response = await self.service.callAiTextAdvanced(prompt)
|
||||||
review_dict = self.handlingActions.parseReviewResponse(response)
|
# Inline parseReviewResponse logic here
|
||||||
review_dict.setdefault('status', 'unknown')
|
json_start = response.find('{')
|
||||||
review_dict.setdefault('reason', 'No reason provided')
|
json_end = response.rfind('}') + 1
|
||||||
review_dict.setdefault('quality_score', 5)
|
if json_start == -1 or json_end == 0:
|
||||||
|
raise ValueError("No JSON found in review response")
|
||||||
|
json_str = response[json_start:json_end]
|
||||||
|
try:
|
||||||
|
review = json.loads(json_str)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error parsing review response JSON: {str(e)}")
|
||||||
|
review = {}
|
||||||
|
if 'status' not in review:
|
||||||
|
raise ValueError("Review response missing 'status' field")
|
||||||
|
review.setdefault('status', 'unknown')
|
||||||
|
review.setdefault('reason', 'No reason provided')
|
||||||
|
review.setdefault('quality_score', 5)
|
||||||
return ReviewResult(
|
return ReviewResult(
|
||||||
status=review_dict.get('status', 'unknown'),
|
status=review.get('status', 'unknown'),
|
||||||
reason=review_dict.get('reason', 'No reason provided'),
|
reason=review.get('reason', 'No reason provided'),
|
||||||
improvements=review_dict.get('improvements', []),
|
improvements=review.get('improvements', []),
|
||||||
quality_score=review_dict.get('quality_score', 5),
|
quality_score=review.get('quality_score', 5),
|
||||||
missing_outputs=review_dict.get('missing_outputs', []),
|
missing_outputs=review.get('missing_outputs', []),
|
||||||
met_criteria=review_dict.get('met_criteria', []),
|
met_criteria=review.get('met_criteria', []),
|
||||||
unmet_criteria=review_dict.get('unmet_criteria', []),
|
unmet_criteria=review.get('unmet_criteria', []),
|
||||||
confidence=review_dict.get('confidence', 0.5)
|
confidence=review.get('confidence', 0.5)
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error in reviewTaskCompletion: {str(e)}")
|
logger.error(f"Error in reviewTaskCompletion: {str(e)}")
|
||||||
|
|
|
||||||
|
|
@ -41,14 +41,15 @@ class ChatManager:
|
||||||
logger.info(f"Processing task {idx+1}/{len(task_plan.tasks)}: {task_step.description}")
|
logger.info(f"Processing task {idx+1}/{len(task_plan.tasks)}: {task_step.description}")
|
||||||
# Define actions
|
# Define actions
|
||||||
previous_results = self.handlingTasks.getPreviousResults(task_step) if hasattr(self.handlingTasks, 'getPreviousResults') else []
|
previous_results = self.handlingTasks.getPreviousResults(task_step) if hasattr(self.handlingTasks, 'getPreviousResults') else []
|
||||||
actions = await self.handlingTasks.defineTaskActions(task_step, workflow, previous_results=previous_results)
|
actions = await self.handlingTasks.generateTaskActions(task_step, workflow, previous_results=previous_results)
|
||||||
if not actions:
|
if not actions:
|
||||||
logger.warning(f"No actions defined for task {task_step.id}, skipping.")
|
logger.warning(f"No actions defined for task {task_step.id}, skipping.")
|
||||||
continue
|
continue
|
||||||
# Execute actions
|
# Execute actions and get results (including review_result)
|
||||||
action_results = await self.handlingTasks.executeTaskActions(actions, workflow)
|
task_result = await self.handlingTasks.executeTaskActions(actions, workflow)
|
||||||
# Review completion
|
# task_result should include action_results and review_result
|
||||||
review_result = await self.handlingTasks.reviewTaskCompletion(task_step, actions, action_results, workflow)
|
action_results = getattr(task_result, 'action_results', None)
|
||||||
|
review_result = getattr(task_result, 'review_result', None)
|
||||||
# Handover
|
# Handover
|
||||||
handover_data = await self.handlingTasks.prepareTaskHandover(task_step, actions, review_result, workflow)
|
handover_data = await self.handlingTasks.prepareTaskHandover(task_step, actions, review_result, workflow)
|
||||||
# Collect results
|
# Collect results
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue