Skip to content

Commit db10c72

Browse files
fix(anthropic): Set exceptions on spans for stream() calls
1 parent 8fb8124 commit db10c72

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed

sentry_sdk/integrations/anthropic.py

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -921,22 +921,21 @@ def _wrap_message_stream_manager_enter(f: "Any") -> "Any":
921921

922922
@wraps(f)
923923
def _sentry_patched_enter(self: "MessageStreamManager") -> "MessageStream":
924-
stream = f(self)
925924
if not hasattr(self, "_max_tokens"):
926-
return stream
925+
return f(self)
927926

928927
integration = sentry_sdk.get_client().get_integration(AnthropicIntegration)
929928

930929
if integration is None:
931-
return stream
930+
return f(self)
932931

933932
if self._messages is None:
934-
return stream
933+
return f(self)
935934

936935
try:
937936
iter(self._messages)
938937
except TypeError:
939-
return stream
938+
return f(self)
940939

941940
span = get_start_span_function()(
942941
op=OP.GEN_AI_CHAT,
@@ -959,6 +958,15 @@ def _sentry_patched_enter(self: "MessageStreamManager") -> "MessageStream":
959958
tools=self._tools,
960959
)
961960

961+
try:
962+
stream = f(self)
963+
except Exception as exc:
964+
exc_info = sys.exc_info()
965+
with capture_internal_exceptions():
966+
_capture_exception(exc)
967+
span.__exit__(*exc_info)
968+
reraise(*exc_info)
969+
962970
stream._span = span
963971
stream._integration = integration
964972

@@ -1008,22 +1016,21 @@ def _wrap_async_message_stream_manager_aenter(f: "Any") -> "Any":
10081016
async def _sentry_patched_aenter(
10091017
self: "AsyncMessageStreamManager",
10101018
) -> "AsyncMessageStream":
1011-
stream = await f(self)
10121019
if not hasattr(self, "_max_tokens"):
1013-
return stream
1020+
return await f(self)
10141021

10151022
integration = sentry_sdk.get_client().get_integration(AnthropicIntegration)
10161023

10171024
if integration is None:
1018-
return stream
1025+
return await f(self)
10191026

10201027
if self._messages is None:
1021-
return stream
1028+
return await f(self)
10221029

10231030
try:
10241031
iter(self._messages)
10251032
except TypeError:
1026-
return stream
1033+
return await f(self)
10271034

10281035
span = get_start_span_function()(
10291036
op=OP.GEN_AI_CHAT,
@@ -1046,6 +1053,15 @@ async def _sentry_patched_aenter(
10461053
tools=self._tools,
10471054
)
10481055

1056+
try:
1057+
stream = await f(self)
1058+
except Exception as exc:
1059+
exc_info = sys.exc_info()
1060+
with capture_internal_exceptions():
1061+
_capture_exception(exc)
1062+
span.__exit__(*exc_info)
1063+
reraise(*exc_info)
1064+
10491065
stream._span = span
10501066
stream._integration = integration
10511067

0 commit comments

Comments
 (0)