From 43823b6c6b221819f7858dc90673cde3bfe05510 Mon Sep 17 00:00:00 2001 From: LawyZheng Date: Wed, 22 May 2024 13:10:27 +0800 Subject: [PATCH] save the elements tree in the prompt as an artifact (#353) --- skyvern/forge/agent.py | 8 +++++++- skyvern/forge/sdk/artifact/models.py | 1 + skyvern/forge/sdk/artifact/storage/base.py | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/skyvern/forge/agent.py b/skyvern/forge/agent.py index 9b9f4834..5e47e9af 100644 --- a/skyvern/forge/agent.py +++ b/skyvern/forge/agent.py @@ -763,13 +763,14 @@ class ForgeAgent: format=element_tree_format, ) + element_tree_in_prompt: str = scraped_page.build_element_tree(element_tree_format) extract_action_prompt = prompt_engine.load_prompt( prompt_template, navigation_goal=navigation_goal, navigation_payload_str=json.dumps(task.navigation_payload), starting_url=starting_url, current_url=current_url, - elements=scraped_page.build_element_tree(element_tree_format), + elements=element_tree_in_prompt, data_extraction_goal=task.data_extraction_goal, action_history=actions_and_results_str, error_code_mapping_str=(json.dumps(task.error_code_mapping) if task.error_code_mapping else None), @@ -791,6 +792,11 @@ class ForgeAgent: artifact_type=ArtifactType.VISIBLE_ELEMENTS_TREE_TRIMMED, data=json.dumps(scraped_page.element_tree_trimmed, indent=2).encode(), ) + await app.ARTIFACT_MANAGER.create_artifact( + step=step, + artifact_type=ArtifactType.VISIBLE_ELEMENTS_TREE_IN_PROMPT, + data=element_tree_in_prompt.encode(), + ) return scraped_page, extract_action_prompt diff --git a/skyvern/forge/sdk/artifact/models.py b/skyvern/forge/sdk/artifact/models.py index aa00c87f..52f50770 100644 --- a/skyvern/forge/sdk/artifact/models.py +++ b/skyvern/forge/sdk/artifact/models.py @@ -24,6 +24,7 @@ class ArtifactType(StrEnum): VISIBLE_ELEMENTS_ID_XPATH_MAP = "visible_elements_id_xpath_map" VISIBLE_ELEMENTS_TREE = "visible_elements_tree" VISIBLE_ELEMENTS_TREE_TRIMMED = "visible_elements_tree_trimmed" + VISIBLE_ELEMENTS_TREE_IN_PROMPT = "visible_elements_tree_in_prompt" # DEPRECATED. pls use HTML_SCRAPE or HTML_ACTION HTML = "html" diff --git a/skyvern/forge/sdk/artifact/storage/base.py b/skyvern/forge/sdk/artifact/storage/base.py index cfd78c55..e8ca77b1 100644 --- a/skyvern/forge/sdk/artifact/storage/base.py +++ b/skyvern/forge/sdk/artifact/storage/base.py @@ -16,6 +16,7 @@ FILE_EXTENTSION_MAP: dict[ArtifactType, str] = { ArtifactType.VISIBLE_ELEMENTS_ID_XPATH_MAP: "json", ArtifactType.VISIBLE_ELEMENTS_TREE: "json", ArtifactType.VISIBLE_ELEMENTS_TREE_TRIMMED: "json", + ArtifactType.VISIBLE_ELEMENTS_TREE_IN_PROMPT: "txt", ArtifactType.HTML_SCRAPE: "html", ArtifactType.HTML_ACTION: "html", ArtifactType.TRACE: "zip",