Spaces:
Sleeping
Sleeping
# coding: utf-8 | |
# Copyright (c) 2025 inclusionAI. | |
import traceback | |
from typing import Sequence, Union | |
from aworld.trace.context_manager import TraceManager | |
from aworld.trace.constants import RunType | |
from aworld.logs.util import logger | |
from aworld.trace.config import configure, ObservabilityConfig | |
def get_tool_name(tool_name: str, | |
action: Union['ActionModel', Sequence['ActionModel']]) -> tuple[str, RunType]: | |
if tool_name == "mcp" and action: | |
try: | |
if isinstance(action, (list, tuple)): | |
action = action[0] | |
mcp_name = action.action_name.split("__")[0] | |
return (mcp_name, RunType.MCP) | |
except ValueError: | |
logger.warning(traceback.format_exc()) | |
return (tool_name, RunType.MCP) | |
return (tool_name, RunType.TOOL) | |
def get_span_name_from_message(message: 'aworld.core.event.base.Message') -> tuple[str, RunType]: | |
from aworld.core.event.base import Constants | |
span_name = (message.receiver or message.id) | |
if message.category == Constants.AGENT: | |
return (span_name, RunType.AGNET) | |
if message.category == Constants.TOOL: | |
action = message.payload | |
if isinstance(action, (list, tuple)): | |
action = action[0] | |
if action: | |
tool_name, run_type = get_tool_name(action.tool_name, action) | |
return (tool_name, run_type) | |
return (span_name, RunType.TOOL) | |
return (span_name, RunType.OTHER) | |
def message_span(message: 'aworld.core.event.base.Message' = None, attributes: dict = None): | |
if message: | |
span_name, run_type = get_span_name_from_message(message) | |
message_span_attribute = { | |
"event.payload": str(message.payload), | |
"event.topic": message.topic or "", | |
"event.receiver": message.receiver or "", | |
"event.sender": message.sender or "", | |
"event.category": message.category, | |
"event.id": message.id, | |
"event.session_id": message.session_id | |
} | |
message_span_attribute.update(attributes or {}) | |
return GLOBAL_TRACE_MANAGER.span( | |
span_name=f"{run_type.value.lower()}_event_{span_name}", | |
attributes=message_span_attribute, | |
run_type=run_type | |
) | |
else: | |
raise ValueError("message_span message is None") | |
GLOBAL_TRACE_MANAGER: TraceManager = TraceManager() | |
span = GLOBAL_TRACE_MANAGER.span | |
func_span = GLOBAL_TRACE_MANAGER.func_span | |
auto_tracing = GLOBAL_TRACE_MANAGER.auto_tracing | |
get_current_span = GLOBAL_TRACE_MANAGER.get_current_span | |
new_manager = GLOBAL_TRACE_MANAGER.get_current_span | |
__all__ = [ | |
"span", | |
"func_span", | |
"message_span", | |
"auto_tracing", | |
"get_current_span", | |
"new_manager", | |
"RunType", | |
"configure", | |
"ObservabilityConfig" | |
] | |