1414 from sentry_sdk .tracing import Span
1515
1616
17- def set_input_span_data (span , kwargs , integration , config ):
18- # type: (Span, Dict[str, Any], Any, Dict[str, Any]) -> None
17+ def set_input_span_data (span , kwargs , integration , config , span_data = None ):
18+ # type: (Span, Dict[str, Any], Any, Dict[str, Any], Dict[str, Any] | None ) -> None
1919 """
2020 Set input span data from a declarative config.
2121
2222 Config keys:
23- system: str - gen_ai.system value
24- operation: str - gen_ai.operation.name value
23+ static: dict - key/value pairs to set unconditionally
2524 params: dict - kwargs key -> span attr (always set if present)
2625 pii_params: dict - kwargs key -> span attr (only when PII allowed)
2726 extract_messages: callable(kwargs) -> list or None
2827 message_target: str - span attr for messages (default: GEN_AI_REQUEST_MESSAGES)
29- truncation_fn: callable or None - truncation function (default: truncate_and_annotate_messages, None to skip)
30- is_given: callable(value) -> bool - for NotGiven sentinels
31- extra_static: dict - additional key/value pairs to set
28+
29+ span_data: additional key/value pairs for dynamic per-call values
3230 """
33- set_data_normalized (span , SPANDATA .GEN_AI_SYSTEM , config ["system" ])
34- set_data_normalized (span , SPANDATA .GEN_AI_OPERATION_NAME , config ["operation" ])
31+ for key , value in config .get ("static" , {}).items ():
32+ set_data_normalized (span , key , value )
33+ if span_data :
34+ for key , value in span_data .items ():
35+ set_data_normalized (span , key , value )
3536
36- is_given = config .get ("is_given" )
3737 for kwarg_key , span_attr in config .get ("params" , {}).items ():
3838 if kwarg_key in kwargs :
3939 value = kwargs [kwarg_key ]
40- if is_given is None or is_given (value ):
41- set_data_normalized (span , span_attr , value )
40+ set_data_normalized (span , span_attr , value )
4241
4342 if should_send_default_pii () and integration .include_prompts :
4443 extract = config .get ("extract_messages" )
4544 if extract is not None :
4645 messages = extract (kwargs )
4746 if messages :
4847 messages = normalize_message_roles (messages )
49- truncation_fn = config .get (
50- "truncation_fn" , truncate_and_annotate_messages
51- )
52- if truncation_fn is not None :
53- scope = sentry_sdk .get_current_scope ()
54- messages = truncation_fn (messages , span , scope )
48+ scope = sentry_sdk .get_current_scope ()
49+ messages = truncate_and_annotate_messages (messages , span , scope )
5550 if messages is not None :
5651 target = config .get (
5752 "message_target" , SPANDATA .GEN_AI_REQUEST_MESSAGES
@@ -61,8 +56,4 @@ def set_input_span_data(span, kwargs, integration, config):
6156 for kwarg_key , span_attr in config .get ("pii_params" , {}).items ():
6257 if kwarg_key in kwargs :
6358 value = kwargs [kwarg_key ]
64- if is_given is None or is_given (value ):
65- set_data_normalized (span , span_attr , value )
66-
67- for key , value in config .get ("extra_static" , {}).items ():
68- set_data_normalized (span , key , value )
59+ set_data_normalized (span , span_attr , value )
0 commit comments