Skip to content

Commit 26fe6fc

Browse files
committed
error handling
1 parent ca3e67f commit 26fe6fc

File tree

1 file changed

+38
-37
lines changed

1 file changed

+38
-37
lines changed

sentry_sdk/tracing_utils.py

Lines changed: 38 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)