From a921b76ce963cb11eba5cf6415566b09692d9c95 Mon Sep 17 00:00:00 2001 From: Evan Tahler Date: Fri, 21 Nov 2025 15:53:54 -0800 Subject: [PATCH] Add tool name and version to otel spans for worker (#690) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Knowing which tools we called seems important Screenshot 2025-11-20 at 1 36 48 PM Closes PLT-748 --- libs/arcade-serve/arcade_serve/core/base.py | 7 ++++++- libs/arcade-serve/arcade_serve/core/components.py | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/libs/arcade-serve/arcade_serve/core/base.py b/libs/arcade-serve/arcade_serve/core/base.py index 70e4faf7..5a5b8e7f 100644 --- a/libs/arcade-serve/arcade_serve/core/base.py +++ b/libs/arcade-serve/arcade_serve/core/base.py @@ -132,7 +132,12 @@ class BaseWorker(Worker): logger.debug(f"{execution_id} | Tool inputs: {tool_request.inputs}") tracer = trace.get_tracer(__name__) - with tracer.start_as_current_span("RunTool"): + with tracer.start_as_current_span("RunTool") as current_span: + current_span.set_attribute("tool_name", str(tool_fqname.name)) + current_span.set_attribute("toolkit_version", str(tool_fqname.toolkit_version)) + current_span.set_attribute("toolkit_name", str(tool_fqname.toolkit_name)) + current_span.set_attribute("environment", self.environment) + output = await ToolExecutor.run( func=materialized_tool.tool, definition=materialized_tool.definition, diff --git a/libs/arcade-serve/arcade_serve/core/components.py b/libs/arcade-serve/arcade_serve/core/components.py index 01d385c1..f28885bf 100644 --- a/libs/arcade-serve/arcade_serve/core/components.py +++ b/libs/arcade-serve/arcade_serve/core/components.py @@ -66,9 +66,15 @@ class CallToolComponent(WorkerComponent): Handle the request to call (invoke) a tool. """ tracer = trace.get_tracer(__name__) - with tracer.start_as_current_span("CallTool"): + with tracer.start_as_current_span("CallTool") as current_span: call_tool_request_data = request.body_json call_tool_request = ToolCallRequest.model_validate(call_tool_request_data) + + current_span.set_attribute("tool_name", str(call_tool_request.tool.name)) + current_span.set_attribute("toolkit_version", str(call_tool_request.tool.version)) + current_span.set_attribute("toolkit_name", str(call_tool_request.tool.toolkit)) + current_span.set_attribute("environment", self.worker.environment) + return await self.worker.call_tool(call_tool_request)