added some workflow debugging, converted from "done" to pick-new-goal and updated prompts

This commit is contained in:
Joshua Smith
2025-03-11 15:52:47 -04:00
parent bb733bc966
commit c0a874b90e
2 changed files with 17 additions and 10 deletions

View File

@@ -68,7 +68,7 @@ def generate_genai_prompt(
"Your JSON format must be:\n"
"{\n"
' "response": "<plain text>",\n'
' "next": "<question|confirm|done>",\n'
' "next": "<question|confirm|pick-new-goal>",\n'
' "tool": "<tool_name or null>",\n'
' "args": {\n'
' "<arg1>": "<value1 or null>",\n'
@@ -123,10 +123,10 @@ def generate_tool_completion_prompt(current_tool: str, dynamic_result: dict) ->
f"### The '{current_tool}' tool completed successfully with {dynamic_result}. "
"INSTRUCTIONS: Parse this tool result as plain text, and use the system prompt containing the list of tools in sequence and the conversation history (and previous tool_results) to figure out next steps, if any. "
"You will need to use the tool_results to auto-fill arguments for subsequent tools and also to figure out if all tools have been run. "
'{"next": "<question|confirm|done>", "tool": "<tool_name or null>", "args": {"<arg1>": "<value1 or null>", "<arg2>": "<value2 or null>}, "response": "<plain text (can include \\n line breaks)>"}'
'{"next": "<question|confirm|pick-new-goal>", "tool": "<tool_name or null>", "args": {"<arg1>": "<value1 or null>", "<arg2>": "<value2 or null>}, "response": "<plain text (can include \\n line breaks)>"}'
"ONLY return those json keys (next, tool, args, response), nothing else. "
'Next should be "question" if the tool is not the last one in the sequence. '
'Next should only be "confirm" if all tools have been run (use the system prompt to figure that out).'
'Next should only be "pick-new-goal" if all tools have been run (use the system prompt to figure that out).'
)
def generate_missing_args_prompt(current_tool: str, tool_data: dict, missing_args: list[str]) -> str:

View File

@@ -169,8 +169,13 @@ class AgentGoalWorkflow:
# move forward in the tool chain
next_step = tool_data.get("next")
current_tool = tool_data.get("tool")
if "next" in self.tool_data.keys():
workflow.logger.warning(f"ran the toolplanner, next step: {next_step}")
else:
workflow.logger.warning("ran the toolplanner, next step not set!")
if next_step == "confirm" and current_tool:
workflow.logger.warning("ran the toolplanner, trying to confirm")
args = tool_data.get("args", {})
if await helpers.handle_missing_args(current_tool, args, tool_data, self.prompt_queue):
continue
@@ -180,10 +185,12 @@ class AgentGoalWorkflow:
workflow.logger.info("Waiting for user confirm signal...")
# todo probably here we can set the next step to be change-goal
elif next_step == "done":
workflow.logger.info("All steps completed. Exiting workflow.")
self.add_message("agent", tool_data)
return str(self.conversation_history)
elif next_step == "pick-new-goal":
workflow.logger.info("All steps completed. Resetting goal.")
#self.add_message("agent", tool_data)
workflow.logger.warning("pick-new-goal time, setting goal to goal_choose_agent_type")
self.change_goal("goal_choose_agent_type")
#return str(self.conversation_history)
self.add_message("agent", tool_data)
await helpers.continue_as_new_if_needed(