Skip to content

Commit 0fdca7e

Browse files
feat(typesafe): Record gen_ai.response.model
1 parent a5e7dfc commit 0fdca7e

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

‎sentry_sdk/integrations/typesafe.py‎

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
try:
1414
from typesafe_sdk._core.client.aio.client import AsyncTypeSafeClient
1515
from typesafe_sdk._core.client.sync.client import TypeSafeClient
16+
from typesafe_sdk._core.response_types import SystemOneResponse
1617
except ImportError:
1718
raise DidNotEnable("typesafe-sdk not installed")
1819

@@ -71,7 +72,12 @@ def wrap_system_one(self: "TypeSafeClient", *args: "Any", **kwargs: "Any") -> "A
7172
if model is not None:
7273
set_on_span(SPANDATA.GEN_AI_REQUEST_MODEL, model)
7374

74-
return f(self, *args, **kwargs)
75+
response = f(self, *args, **kwargs)
76+
77+
if not isinstance(response, SystemOneResponse):
78+
return response
79+
80+
return response
7581

7682
return wrap_system_one
7783

@@ -120,6 +126,11 @@ async def wrap_system_one_async(
120126
if model is not None:
121127
set_on_span(SPANDATA.GEN_AI_REQUEST_MODEL, model)
122128

123-
return await f(self, *args, **kwargs)
129+
response = await f(self, *args, **kwargs)
130+
131+
if not isinstance(response, SystemOneResponse):
132+
return response
133+
134+
return response
124135

125136
return wrap_system_one_async

‎tests/integrations/typesafe/test_typesafe.py‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ def test_system_one(
117117
assert span["attributes"][SPANDATA.GEN_AI_PROVIDER_NAME] == "typesafe"
118118
assert span["attributes"][SPANDATA.GEN_AI_OPERATION_NAME] == "evaluate"
119119
assert span["attributes"][SPANDATA.GEN_AI_REQUEST_MODEL] == "jev-latest"
120+
121+
assert span["attributes"][SPANDATA.GEN_AI_RESPONSE_MODEL] == "jev-latest"
120122
else:
121123
items = capture_items("transaction")
122124

@@ -159,6 +161,8 @@ def test_system_one(
159161
assert span["data"][SPANDATA.GEN_AI_OPERATION_NAME] == "evaluate"
160162
assert span["data"][SPANDATA.GEN_AI_REQUEST_MODEL] == "jev-latest"
161163

164+
assert span["data"][SPANDATA.GEN_AI_RESPONSE_MODEL] == "jev-latest"
165+
162166

163167
@pytest.mark.asyncio
164168
@pytest.mark.parametrize("span_streaming", [True, False])
@@ -228,6 +232,8 @@ async def test_system_one_async(
228232
assert span["attributes"][SPANDATA.GEN_AI_PROVIDER_NAME] == "typesafe"
229233
assert span["attributes"][SPANDATA.GEN_AI_OPERATION_NAME] == "evaluate"
230234
assert span["attributes"][SPANDATA.GEN_AI_REQUEST_MODEL] == "jev-latest"
235+
236+
assert span["attributes"][SPANDATA.GEN_AI_RESPONSE_MODEL] == "jev-latest"
231237
else:
232238
items = capture_items("transaction")
233239

@@ -272,3 +278,5 @@ async def test_system_one_async(
272278
assert span["data"][SPANDATA.GEN_AI_PROVIDER_NAME] == "typesafe"
273279
assert span["data"][SPANDATA.GEN_AI_OPERATION_NAME] == "evaluate"
274280
assert span["data"][SPANDATA.GEN_AI_REQUEST_MODEL] == "jev-latest"
281+
282+
assert span["data"][SPANDATA.GEN_AI_RESPONSE_MODEL] == "jev-latest"

0 commit comments

Comments
 (0)