Skip to content

Commit ecfda97

Browse files
Merge pull request #267 from ServiceNow/deep_debug
Episode to html
2 parents 15b6eb0 + cf7e7de commit ecfda97

File tree

3 files changed

+475
-9
lines changed

3 files changed

+475
-9
lines changed

src/agentlab/analyze/agent_xray.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import base64
2+
import html
23
import os
34
import traceback
45
from copy import deepcopy
@@ -18,15 +19,15 @@
1819
from PIL import Image
1920

2021
from agentlab.analyze import inspect_results
22+
from agentlab.analyze.episode_to_html import exp_result_to_html
2123
from agentlab.analyze.overlay_utils import annotate_action
2224
from agentlab.experiments.exp_utils import RESULTS_DIR
2325
from agentlab.experiments.loop import ExpResult, StepInfo
2426
from agentlab.experiments.study import get_most_recent_study
2527
from agentlab.llm.chat_api import make_system_message, make_user_message
2628
from agentlab.llm.llm_utils import BaseMessage as AgentLabBaseMessage
2729
from agentlab.llm.llm_utils import Discussion
28-
from agentlab.llm.response_api import MessageBuilder
29-
from agentlab.llm.response_api import ToolCalls
30+
from agentlab.llm.response_api import MessageBuilder, ToolCalls
3031

3132
select_dir_instructions = "Select Experiment Directory"
3233
AGENT_NAME_KEY = "agent.agent_name"
@@ -349,6 +350,9 @@ def run_gradio(results_dir: Path):
349350
preview=True,
350351
)
351352

353+
with gr.Tab("Episode") as tab_episode:
354+
episode = gr.HTML()
355+
352356
with gr.Tab("DOM HTML") as tab_html:
353357
html_code = gr.Code(language="html", **code_args)
354358

@@ -458,6 +462,7 @@ def run_gradio(results_dir: Path):
458462
outputs=[screenshot_gallery],
459463
)
460464
screenshot_gallery.select(fn=gallery_step_change, inputs=episode_id, outputs=step_id)
465+
episode_id.change(fn=if_active("Episode")(update_episode), outputs=episode)
461466
step_id.change(fn=if_active("DOM HTML")(update_html), outputs=html_code)
462467
step_id.change(
463468
fn=if_active("Pruned DOM HTML")(update_pruned_html), outputs=pruned_html_code
@@ -486,6 +491,7 @@ def run_gradio(results_dir: Path):
486491
tab_screenshot_gallery.select(
487492
fn=update_screenshot_gallery, inputs=som_or_not, outputs=[screenshot_gallery]
488493
)
494+
tab_episode.select(fn=update_episode, outputs=episode)
489495
tab_html.select(fn=update_html, outputs=html_code)
490496
tab_pruned_html.select(fn=update_pruned_html, outputs=pruned_html_code)
491497
tab_axtree.select(fn=update_axtree, outputs=axtree_code)
@@ -649,6 +655,18 @@ def gallery_step_change(evt: gr.SelectData, episode_id: EpisodeId):
649655
return StepId(episode_id=episode_id, step=evt.index)
650656

651657

658+
# def update_episode():
659+
# # get exp_results for the given episode_id
660+
# return exp_result_to_html(info.exp_result)
661+
def update_episode():
662+
html_content = exp_result_to_html(info.exp_result)
663+
664+
# Use srcdoc instead of data URL
665+
return f"""<iframe srcdoc="{html.escape(html_content, quote=True)}"
666+
style="width: 100%; height: 800px; border: none; background-color: white;">
667+
</iframe>"""
668+
669+
652670
def update_html():
653671
return get_obs(key="dom_txt", default="No DOM HTML")
654672

0 commit comments

Comments
 (0)