@@ -1092,43 +1092,44 @@ def _get_output_attributes(template, send_pii, result):
10921092 attributes = {} # type: dict[str, Any]
10931093
10941094 if template in [SPANTEMPLATE .AI_AGENT , SPANTEMPLATE .AI_TOOL , SPANTEMPLATE .AI_CHAT ]:
1095- # Usage from result, result.usage, and result.metadata.usage
1096- usage_candidates = [result ]
1097- if isinstance (result , dict ):
1098- usage_candidates .append (result .get ("usage" ))
1099- meta = result .get ("metadata" )
1100- else :
1101- usage_candidates .append (getattr (result , "usage" , None ))
1102- meta = getattr (result , "metadata" , None )
1103-
1104- if isinstance (meta , dict ):
1105- usage_candidates .append (meta .get ("usage" ))
1106- elif meta is not None :
1107- usage_candidates .append (getattr (meta , "usage" , None ))
1108-
1109- for usage_candidate in usage_candidates :
1110- if usage_candidate is not None :
1111- attributes .update (_get_usage_attributes (usage_candidate ))
1112-
1113- # Response model
1114- model_name = None
1115- if isinstance (result , dict ):
1116- val = result .get ("model" )
1117- if isinstance (val , str ):
1118- model_name = val
1119- val = result .get ("model_name" )
1120- if isinstance (val , str ):
1121- model_name = val
1122- else :
1123- val = getattr (result , "model" , None )
1124- if isinstance (val , str ):
1125- model_name = val
1126- val = getattr (result , "model_name" , None )
1127- if isinstance (val , str ):
1128- model_name = val
1129-
1130- if model_name is not None :
1131- attributes [SPANDATA .GEN_AI_RESPONSE_MODEL ] = model_name
1095+ with capture_internal_exceptions ():
1096+ # Usage from result, result.usage, and result.metadata.usage
1097+ usage_candidates = [result ]
1098+ if isinstance (result , dict ):
1099+ usage_candidates .append (result .get ("usage" ))
1100+ meta = result .get ("metadata" )
1101+ else :
1102+ usage_candidates .append (getattr (result , "usage" , None ))
1103+ meta = getattr (result , "metadata" , None )
1104+
1105+ if isinstance (meta , dict ):
1106+ usage_candidates .append (meta .get ("usage" ))
1107+ elif meta is not None :
1108+ usage_candidates .append (getattr (meta , "usage" , None ))
1109+
1110+ for usage_candidate in usage_candidates :
1111+ if usage_candidate is not None :
1112+ attributes .update (_get_usage_attributes (usage_candidate ))
1113+
1114+ # Response model
1115+ model_name = None
1116+ if isinstance (result , dict ):
1117+ val = result .get ("model" )
1118+ if isinstance (val , str ):
1119+ model_name = val
1120+ val = result .get ("model_name" )
1121+ if isinstance (val , str ):
1122+ model_name = val
1123+ else :
1124+ val = getattr (result , "model" , None )
1125+ if isinstance (val , str ):
1126+ model_name = val
1127+ val = getattr (result , "model_name" , None )
1128+ if isinstance (val , str ):
1129+ model_name = val
1130+
1131+ if model_name is not None :
1132+ attributes [SPANDATA .GEN_AI_RESPONSE_MODEL ] = model_name
11321133
11331134 # Tool output
11341135 if template == SPANTEMPLATE .AI_TOOL and send_pii :
0 commit comments