Skip to content

Commit 55da176

Browse files
committed
Refactor message formatting to include role-based markdown conversion in dict_msg_to_markdown function
1 parent e51033c commit 55da176

File tree

1 file changed

+27
-2
lines changed

1 file changed

+27
-2
lines changed

src/agentlab/analyze/agent_xray.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from openai import OpenAI
1717
from PIL import Image
1818

19+
from agentlab.agents import agent_utils
1920
from agentlab.analyze import inspect_results
2021
from agentlab.experiments.exp_utils import RESULTS_DIR
2122
from agentlab.experiments.loop import ExpResult, StepInfo
@@ -24,7 +25,6 @@
2425
from agentlab.llm.llm_utils import BaseMessage as AgentLabBaseMessage
2526
from agentlab.llm.llm_utils import Discussion
2627
from agentlab.llm.response_api import MessageBuilder
27-
from agentlab.agents import agent_utils
2828

2929
select_dir_instructions = "Select Experiment Directory"
3030
AGENT_NAME_KEY = "agent.agent_name"
@@ -628,6 +628,31 @@ def dict_to_markdown(d: dict):
628628
return res
629629

630630

631+
def dict_msg_to_markdown(d: dict):
632+
if "role" not in d:
633+
return dict_to_markdown(d)
634+
parts = []
635+
for item in d["content"]:
636+
637+
if hasattr(item, "dict"):
638+
item = item.dict()
639+
640+
match item["type"]:
641+
case "image":
642+
parts.append(f"![Image]({item['image']})")
643+
case "text":
644+
parts.append(f"\n```\n{item['text']}\n```\n")
645+
case "tool_use":
646+
tool_use = f"Tool Use: {item['name']} {item['input']} (id = {item['id']})"
647+
parts.append(f"\n```\n{tool_use}\n```\n")
648+
case _:
649+
parts.append(f"\n```\n{str(item)}\n```\n")
650+
651+
markdown = f"### {d["role"].capitalize()}\n"
652+
markdown += "\n".join(parts)
653+
return markdown
654+
655+
631656
def update_chat_messages():
632657
global info
633658
agent_info = info.exp_result.steps_info[info.step].agent_info
@@ -637,7 +662,7 @@ def update_chat_messages():
637662

638663
if isinstance(chat_messages, list) and isinstance(chat_messages[0], MessageBuilder):
639664
chat_messages = [
640-
m.to_markdown() if isinstance(m, MessageBuilder) else dict_to_markdown(m)
665+
m.to_markdown() if isinstance(m, MessageBuilder) else dict_msg_to_markdown(m)
641666
for m in chat_messages
642667
]
643668
return "\n\n".join(chat_messages)

0 commit comments

Comments
 (0)