chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
"""This file contains various formatting checks used to reprompt an agent for correctly formatted responses."""
|
||||
|
||||
from gui_agents.s3.utils.common_utils import (
|
||||
extract_agent_functions,
|
||||
parse_code_from_string,
|
||||
create_pyautogui_code,
|
||||
split_thinking_response,
|
||||
)
|
||||
|
||||
single_action_check = (
|
||||
lambda response: len(extract_agent_functions(parse_code_from_string(response))) == 1
|
||||
)
|
||||
single_action_error_msg = (
|
||||
"Incorrect code: There must be a single agent action in the code response."
|
||||
)
|
||||
SINGLE_ACTION_FORMATTER = lambda response: (
|
||||
single_action_check(response),
|
||||
single_action_error_msg,
|
||||
)
|
||||
|
||||
|
||||
def _attempt_code_creation(agent, code, obs):
|
||||
"""Attempts to create a pyautogui code snippet from the response code"""
|
||||
try:
|
||||
return create_pyautogui_code(agent, code, obs)
|
||||
except Exception as e:
|
||||
return None
|
||||
|
||||
|
||||
code_valid_check = (
|
||||
lambda agent, obs, response: _attempt_code_creation(
|
||||
agent, parse_code_from_string(response), obs
|
||||
)
|
||||
is not None
|
||||
)
|
||||
code_valid_error_msg = "Incorrect code: The agent action must be a valid function and use valid parameters from the docstring list."
|
||||
CODE_VALID_FORMATTER = lambda agent, obs, response: (
|
||||
code_valid_check(agent, obs, response),
|
||||
code_valid_error_msg,
|
||||
)
|
||||
|
||||
thoughts_answer_tag_check = lambda response: split_thinking_response(response)[1] != ""
|
||||
thoughts_answer_tag_error_msg = "Incorrect response: The response must contain both <thoughts>...</thoughts> and <answer>...</answer> tags."
|
||||
THOUGHTS_ANSWER_TAG_FORMATTER = lambda response: (
|
||||
thoughts_answer_tag_check(response),
|
||||
thoughts_answer_tag_error_msg,
|
||||
)
|
||||
|
||||
integer_answer_check = (
|
||||
lambda response: split_thinking_response(response)[0].strip().isdigit()
|
||||
)
|
||||
integer_answer_error_msg = (
|
||||
"Incorrect response: The <answer>...</answer> tag must contain a single integer."
|
||||
)
|
||||
INTEGER_ANSWER_FORMATTER = lambda response: (
|
||||
integer_answer_check(response),
|
||||
integer_answer_error_msg,
|
||||
)
|
||||
Reference in New Issue
Block a user