@@ -270,6 +270,12 @@ def __init__(
270270 server_address : Optional [str ] = None ,
271271 server_port : Optional [int ] = None ,
272272 metrics_enabled : bool = True ,
273+ agent_name_default : Optional [str ] = None ,
274+ agent_id_default : Optional [str ] = None ,
275+ agent_description_default : Optional [str ] = None ,
276+ base_url_default : Optional [str ] = None ,
277+ server_address_default : Optional [str ] = None ,
278+ server_port_default : Optional [int ] = None ,
273279 ):
274280 """Initialize processor with metrics support.
275281
@@ -291,22 +297,31 @@ def __init__(
291297 self .include_sensitive_data = include_sensitive_data and (
292298 content_mode .capture_in_span or content_mode .capture_in_event
293299 )
294- self .base_url = base_url
300+ effective_base_url = base_url or base_url_default
301+ self .base_url = effective_base_url
295302 # Legacy emission removed; parameter retained for compatibility but unused
296303 self .emit_legacy = False
297304
298305 # Agent information - prefer explicit overrides; otherwise defer to span data
299306 self .agent_name = agent_name
300307 self .agent_id = agent_id
301308 self .agent_description = agent_description
309+ self ._agent_name_default = agent_name_default
310+ self ._agent_id_default = agent_id_default
311+ self ._agent_description_default = agent_description_default
302312
303313 # Server information - use init parameters, then base_url inference
304- self .server_address = server_address
305- self .server_port = server_port
314+ self .server_address = server_address or server_address_default
315+ resolved_port = (
316+ server_port if server_port is not None else server_port_default
317+ )
318+ self .server_port = resolved_port
306319
307320 # If server info not provided, try to extract from base_url
308- if (not self .server_address or not self .server_port ) and base_url :
309- server_attrs = _infer_server_attributes (base_url )
321+ if (
322+ not self .server_address or not self .server_port
323+ ) and effective_base_url :
324+ server_attrs = _infer_server_attributes (effective_base_url )
310325 if not self .server_address :
311326 self .server_address = server_attrs .get ("server.address" )
312327 if not self .server_port :
@@ -1139,6 +1154,8 @@ def on_span_start(self, span: Span[Any]) -> None:
11391154 agent_name = self .agent_name
11401155 if not agent_name and _is_instance_of (span .span_data , AgentSpanData ):
11411156 agent_name = getattr (span .span_data , "name" , None )
1157+ if not agent_name :
1158+ agent_name = self ._agent_name_default
11421159
11431160 tool_name = (
11441161 getattr (span .span_data , "name" , None )
@@ -1157,12 +1174,17 @@ def on_span_start(self, span: Span[Any]) -> None:
11571174 # Legacy emission removed
11581175
11591176 # Add configured agent and server attributes
1160- if self .agent_name :
1161- attributes [GEN_AI_AGENT_NAME ] = self .agent_name
1162- if self .agent_id :
1163- attributes [GEN_AI_AGENT_ID ] = self .agent_id
1164- if self .agent_description :
1165- attributes [GEN_AI_AGENT_DESCRIPTION ] = self .agent_description
1177+ agent_name_override = self .agent_name or self ._agent_name_default
1178+ agent_id_override = self .agent_id or self ._agent_id_default
1179+ agent_desc_override = (
1180+ self .agent_description or self ._agent_description_default
1181+ )
1182+ if agent_name_override :
1183+ attributes [GEN_AI_AGENT_NAME ] = agent_name_override
1184+ if agent_id_override :
1185+ attributes [GEN_AI_AGENT_ID ] = agent_id_override
1186+ if agent_desc_override :
1187+ attributes [GEN_AI_AGENT_DESCRIPTION ] = agent_desc_override
11661188 attributes .update (self ._get_server_attributes ())
11671189
11681190 otel_span = self ._tracer .start_span (
@@ -1328,12 +1350,17 @@ def _extract_genai_attributes(
13281350 # Legacy emission removed
13291351
13301352 # Add configured agent attributes (always include when set)
1331- if self .agent_name :
1332- yield GEN_AI_AGENT_NAME , self .agent_name
1333- if self .agent_id :
1334- yield GEN_AI_AGENT_ID , self .agent_id
1335- if self .agent_description :
1336- yield GEN_AI_AGENT_DESCRIPTION , self .agent_description
1353+ agent_name_override = self .agent_name or self ._agent_name_default
1354+ agent_id_override = self .agent_id or self ._agent_id_default
1355+ agent_desc_override = (
1356+ self .agent_description or self ._agent_description_default
1357+ )
1358+ if agent_name_override :
1359+ yield GEN_AI_AGENT_NAME , agent_name_override
1360+ if agent_id_override :
1361+ yield GEN_AI_AGENT_ID , agent_id_override
1362+ if agent_desc_override :
1363+ yield GEN_AI_AGENT_DESCRIPTION , agent_desc_override
13371364
13381365 # Server attributes
13391366 for key , value in self ._get_server_attributes ().items ():
@@ -1493,16 +1520,26 @@ def _get_attributes_from_agent_span_data(
14931520 """Extract attributes from agent span."""
14941521 yield GEN_AI_OPERATION_NAME , self ._get_operation_name (span_data )
14951522
1496- name = self .agent_name or getattr (span_data , "name" , None )
1523+ name = (
1524+ self .agent_name
1525+ or getattr (span_data , "name" , None )
1526+ or self ._agent_name_default
1527+ )
14971528 if name :
14981529 yield GEN_AI_AGENT_NAME , name
14991530
1500- agent_id = self .agent_id or getattr (span_data , "agent_id" , None )
1531+ agent_id = (
1532+ self .agent_id
1533+ or getattr (span_data , "agent_id" , None )
1534+ or self ._agent_id_default
1535+ )
15011536 if agent_id :
15021537 yield GEN_AI_AGENT_ID , agent_id
15031538
1504- description = self .agent_description or getattr (
1505- span_data , "description" , None
1539+ description = (
1540+ self .agent_description
1541+ or getattr (span_data , "description" , None )
1542+ or self ._agent_description_default
15061543 )
15071544 if description :
15081545 yield GEN_AI_AGENT_DESCRIPTION , description
0 commit comments