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:
|
||||
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
|
||||
|
||||
def _createGenericValidationPrompt(self, action_result, action, context) -> str:
|
||||
|
|
|
|||
|
|
@ -69,7 +69,20 @@ class HandlingTasks:
|
|||
prompt = await self.service.callAiTextAdvanced(
|
||||
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):
|
||||
logger.error("Generated actions failed validation")
|
||||
raise Exception("AI-generated actions failed validation - AI is required for action generation")
|
||||
|
|
@ -166,19 +179,31 @@ class HandlingTasks:
|
|||
# Use promptFactory for review prompt
|
||||
prompt = await createResultReviewPrompt(self, review_context)
|
||||
response = await self.service.callAiTextAdvanced(prompt)
|
||||
review_dict = self.handlingActions.parseReviewResponse(response)
|
||||
review_dict.setdefault('status', 'unknown')
|
||||
review_dict.setdefault('reason', 'No reason provided')
|
||||
review_dict.setdefault('quality_score', 5)
|
||||
# Inline parseReviewResponse logic here
|
||||
json_start = response.find('{')
|
||||
json_end = response.rfind('}') + 1
|
||||
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(
|
||||
status=review_dict.get('status', 'unknown'),
|
||||
reason=review_dict.get('reason', 'No reason provided'),
|
||||
improvements=review_dict.get('improvements', []),
|
||||
quality_score=review_dict.get('quality_score', 5),
|
||||
missing_outputs=review_dict.get('missing_outputs', []),
|
||||
met_criteria=review_dict.get('met_criteria', []),
|
||||
unmet_criteria=review_dict.get('unmet_criteria', []),
|
||||
confidence=review_dict.get('confidence', 0.5)
|
||||
status=review.get('status', 'unknown'),
|
||||
reason=review.get('reason', 'No reason provided'),
|
||||
improvements=review.get('improvements', []),
|
||||
quality_score=review.get('quality_score', 5),
|
||||
missing_outputs=review.get('missing_outputs', []),
|
||||
met_criteria=review.get('met_criteria', []),
|
||||
unmet_criteria=review.get('unmet_criteria', []),
|
||||
confidence=review.get('confidence', 0.5)
|
||||
)
|
||||
except Exception as 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}")
|
||||
# Define actions
|
||||
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:
|
||||
logger.warning(f"No actions defined for task {task_step.id}, skipping.")
|
||||
continue
|
||||
# Execute actions
|
||||
action_results = await self.handlingTasks.executeTaskActions(actions, workflow)
|
||||
# Review completion
|
||||
review_result = await self.handlingTasks.reviewTaskCompletion(task_step, actions, action_results, workflow)
|
||||
# Execute actions and get results (including review_result)
|
||||
task_result = await self.handlingTasks.executeTaskActions(actions, workflow)
|
||||
# task_result should include action_results and review_result
|
||||
action_results = getattr(task_result, 'action_results', None)
|
||||
review_result = getattr(task_result, 'review_result', None)
|
||||
# Handover
|
||||
handover_data = await self.handlingTasks.prepareTaskHandover(task_step, actions, review_result, workflow)
|
||||
# Collect results
|
||||
|
|
|
|||
Loading…
Reference in a new issue